면접 과정

면접 구성과 평가

2일차

게일 라크만 맥도웰의 코딩 인터뷰 완전 분석 p.1 ~ p. 20

내용 정리

1. 면접 과정

면접에서 알고리즘과 코딩은 아주 큰 부분을 차지한다. 면접관은 우리가 지금껏 보지 못했던 알고리즘 문제를 풀어내는 능력을 평가하고 싶어 한다.

면접은 다음을 통해 평가된다.

  • 분석 능력 : 문제를 푸는 데 받은 도움, 최적화 정도, 소요 시간, 설계시 고려한 다양한 방법
  • 코딩 능력 : 알고리즘을 적절한 코드로 표현, 깔끔한 구성, 에러 대비, 스타일
  • 기술적 지식 및 컴퓨터 과학 기본 : 컴퓨터 과학에 대한 기본기
  • 경험 : 기술적 결정, 프로젝트에 대한 경험, 진취성과 결단성 등
  • 문화 / 의사 소통 능력 : 지원자의 성격과 회사의 가치, 면접관과 의사소통

회사마다 다른 비중을 가진다. 일반적인 알고리즘 문제 풀이는 위 3가지가 중요하다.

면접 방식은 왜 이래야 하는가

  1. 훌륭한 지원자들이 이런 방식을 잘 못한다.
  2. 이미 나온 문제는 답을 찾아볼 수 있다.
  3. 실무에서 Binary Search Tree 같은 자료구조는 쓸 일이 거의 없고, 필요하면 공부하면 된다.
  4. 화이트보드 코딩은 너무 인위적인 환경이다.

하지만 면접관의 사고방식을 이해하기 위해 이유를 알아야 한다.

부정 오류(false negative)도 괜찮다

슬프지만 훌륭한 지원자가 채용되고 있다면 일부 괜찮은 지원자가 불합격해도 괜찮다. 면접은 잘 봤지만 실제 업무 능력이 떨어지는 긍정 오류(false positive)를 더 걱정한다.

문제풀이는 꽤 가치 있는 능력이다

약간의 도움을 받더라도 어려운 문제를 풀어낼 수 있다면, 똑똑한 사람일 가능성이 높다.

기초적인 자료구조와 알고리즘 지식은 유용하다

이진탐색트리의 존재 유무를 모르는 상태에서 이진 탐색 트리를 사용해야겠다고 판단하기는 어렵다. 또한 자료구조와 알고리즘이 지원자를 평가하기에 좋은 ‘proxy’라고 생각된다. 뿐만 아니라, 이 둘을 제외하고는 문제풀이 능력을 측정하기 힘들다.

화이트보드가 무엇에 집중해야 하는지 알려준다

크고 작은 버그나 구문 오류는 당연히 생길 수 있다. 하지만 코드의 ‘핵심’에 신경쓰고 큰 그림을 그리는데 도움을 준다. 그렇다고 의사코드를 작성하거나 정확도가 떨어져도 괜찮다는 말은 아니다.

그렇다고 이 방법이 모든 회사와 모든 상황을 위한 것은 아니다

완벽한 면접 방식은 당연히 아니지만 현실을 받아들이고, 주어진 것에 최선을 다하자.

어떤 문제를 출제하는가

넓은 의미에서 알고리즘 문제나 시스템 설계 문제에 초점을 맞추거나, 지식에 바탕을 둔 문제에 초점을 맞추는 등 다를 수는 있다. 하지만 주어진 문제 카테고리 안에서는 회사마다 차이가 없기 때문에 최근 출제된 문제나 회사 기출 문제는 무의미하다.

모든 것은 상대적이다

나에게 어려운 문제는 다른 지원자에게도 어려운 문제일 것이다. 상대평가이기 때문에 낙담할 필요 없다.

2. 장막 너머

미국 기업들의 면접 과정에 대한 이야기.

회사 필수 질문
마이크로소프트 마이크로소프트에서 일하고 싶은 이유는? : 기술에 대한 열정을 보여줘야 한다.
아마존 규모 확장성(scalability)에 신경쓰니 관련된 문제에 대비하라. 객체 지향 설계에 대해서도 대비하라
구글 규모 확장이 가능한 시스템(scalable system) 설계에 대한 문제를 대비하라. 알고리즘 능력에 큰 비중을 둔다.
애플 면접 보는 팀의 제품에 대해 공부하자
페이스북 기업가 정신을 갖기를 원한다. 빠르게 결과를 볼 수 있도록 만들기를 좋아한다.
팰런티어 핵심 자료구조와 어려운 알고리즘에 대해 공부하자. 시스템 디자인도 백엔드에선 중요하다

읽고 나서

솔직히 읽으면서도 내가 이런 회사에 갈 일이 있나.. 싶긴 한데 열심히 하다보면 또 모르는 일이니까! 해서 나쁠건 없다.