본문 바로가기
JOB

2021.05.04-면접후기

by Pig_CoLa 2021. 5. 5.
SMALL

면접질문

  1. 이력서가 너무 간단하여
    자세한 정보를 부탁한다.
  2. 이력서 상에 있는 프로젝트들의 질문.
  3. 코드스테이츠에서 배우는 것들(커리큘럼)은 무엇인가?
  4. OOP에 관하여 객체지향적 프로그래밍이란 과연 무엇인가.
  5. 함수형 프로그래밍에 대해서 아는 대로 설명해달라.

답변

  1. 나이, 웹 개발을 공부하기 까지 과정 등을 말씀드림.
  2. 각 프로젝트를 진행한 의도를 전달 드리고 (배운 것을 활용하는 것 등등)
    어떤 의도로 해당 기능을 도입했는지 등을 설명함.
  3. 이력서에 링크로 첨부했다고 답변함.
    (확인해보니 첨부 안되어있음 ㅠㅠ, 다른 버전의 이력서에 링크되어있음)
  4. 상속에 관한 이야기를 중점으로 했었다...
    사실 캡슐화라던지 추상화 다형성 등등 객체지향적 프로그래밍은 여러 특성을 가지고 있지만
    얼추 어떤느낌이다~ 라는 형태로 기억나는 바람에... 잘못된 정보를 말하게 될 가능성이 있는 것 보단 아는 범주내에서 말하는것으로 끝냈다.
    • 잘 모르는 부분은 여쭤보았다.
      객체지향적 프로그래밍은 하나의 방법론과 같다고 설명해 주셨다.
      class가 존재하던 아니던 그 특징을 잘 살려 디자인 한다면
      객체지향적 프로그래밍이라고 할 수 있다고 하셨다.
  5. 워딩은 들어보았으나 잘 모른다고 답변하였다.
    이 역시 하나의 페러다임이라는 설명을 전해들었다.
    • 함수형 프로그래밍에 대하여 어떤 규칙들이 존재하는지 정리해서 포스팅 해봐야겠다.

손코딩

자료구조에 대하여 손코딩이 있었다.
stack, queue 등과 같은 문제들이 출제되었고,
stack과 queue는 블로그에 정리해주신 글들을 봐주셨다고
LinkedList에 대해서 손코딩을 시작하였다.

이미 알고있는 자료구조이고 구현도 해보았지만
stack과 queue와 다르게 문서화 시키지 않아서 인지...
한번에 떠오르지 않았고 약간 헤매며 작성해 나아갔다.

LinkedList의 가장 큰 특성은
각 요소가 노드들로 구성되어있고,
노드는 해당하는 값을 저장하고, 다음 노드를 가르키고 있어야 한다.
처음엔 너무 긴장했는지 storage로 배열을 만들었다가
내가 지금 뭐하고 있지?하며 급하게 노드를 먼저 생성한뒤
LinkedList를 만들어나갔다.

손코딩을 하며 의사코드를 어디에 적을지 몰라 생각으로만 하며 적어나가다가
나중에는 이곳저곳에 의사코드를 작성하며 손코딩을 써내려갔다.

손코딩 결과물?!?!?

class Node {
    constructor(value) {
        this.value = value;
        this.next = null;
    }

    addNext(node) {
        this.next = node;
    }
}

class LinkedList {
    constructor() {
        this.head = null;
        this.tail = null;
    }

    addFirst(val) {
        let temp = this.head;
        this.head = new Node(val);
        this.head.addNext(temp);
    }

    addLast(val) {
        let temp = new Node(val);
        if (this.tail !== null) this.tail.addNext(temp);
        this.tail = temp;
    }

    insertAt(index, val) {
        if (index === 0) return this.addFirst(val);
        let temp = this.head;
        for (let i = 0; i < index - 1, i++) {
            temp = temp.next;
        }
        let target = temp.next;
        temp.addNext(new Node(val));
        temp.next.addNext(target);
    }
}

removeAt은 시간상 생략되었다.(그만큼 시간이 오래걸렸... ㅠㅠ)

위 코드는 사실 많이 아쉬운 코드이다.
list의 요소가 없을 때의 상황을 고려하지 않았다.
고려되었다면 addFirst할 때, head가 없다면 tail에도 그 node를 넣어줬어야 했고,
addLast할 때, head가 없다면 head에도 그 node를 넣어줘야 한다.

또, insertAt과 같은 경우 범위를 초과하는 index에 대한 오류처리 등
올바르지 않은 값에 대한 핸들링을 하지 않아 아쉬웠다.

면접 후기

전반적으로 딱딱하지 않은 분위기에서 농담을 주고받되 서로를 존중하며 개발하는 문화인것 같다.
구직활동을 시작한지 얼마 되지않았고, 첫 면접인 만큼 상당히 서툴렀다.

그래도 면접관 분들이 (대리님 두분과 부장님 한분으로 기억한다..!)
긴장도 많이 풀어주시려고 해주시는게 느껴졌다.

LIST

'JOB' 카테고리의 다른 글

JOB-searching  (0) 2020.11.05

댓글