책너두 (코딩 인터뷰 완전분석) 2일차 (~20p)

요약

  • 면접 과정
    • 분석, 코딩, 기술적 지식, 컴퓨터 과학 기본, 경험, 문화, 의사소통 능력을 봄.
    • 부정 오류는 괜찮다.
      • 실력이 좋은 사람을 원한다.
        • 몇 명을 놓치는 것은 괜찮다.
      • 실력이 좋지 않은 사람을 뽑는 것을 두려워 함.
    • 문제풀이 능력이 좋은 사람을 원함
      • 머리가 뛰어남 → 회사에 가치있는 인재
    • 기초적인 자료구조 알고리즘 지식은 유용함
      • 지원자를 판단할 수 있는 척도가 됨.
  • 회사별 면접 과정
    • 마이크로 소프트
      • 똑똑하고 기술에 열정적인 사람을 원함
    • 아마존
      • 규모 확장성을 고민하는 사람을 원함
    • 구글
      • 규모 확장성을 고민하는 사람을 원함
    • 애플
      • 자신의 생각을 명료하게 전달하는 사람을 원함
    • 페이스북
      • 기업가 정신을 가진 개발자를 원함
      • 어떤 언어든 확장 가능한 시스템을 만들어나갈 개발자를 원함
    • 팰런티어
      • 뛰어난 사람을 뽑고 싶어함.

메모

1. 면접 과정

  • 다음의 과정을 통해 성과가 평가될 것임
    • 분석 능력
    • 코딩 능력
    • 기술적 지식 및 컴퓨터 과학 기본
    • 경험
    • 문화와 얼마나 맞는지
    • 의사 소통 능력
  • 이 중, 어디에 더 비중을 둬야 하는지는 문제, 면접관, 직무, 팀, 회사에 따라 다름
    • 일반적인 알고리즘 문제를 풀 때는 처음 세 가지 능력이 중요함.

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

  • 면접에 대한 지원자들의 불평은 아래와 같음.
    1. 많은 수의 훌륭한 지원자들은 이런 방식의 면접을 잘 하지 못함
    2. 이미 나온 문제는 해법을 찾아볼 수 있음.
    3. 실무에서 이진 탐색 트리와 같은 자료구조를 쓸 일이 거의 없음. 만약 필요하다면 당연히 공부할 것임
    4. 화이트보드 코딩은 너무 인위적인 환경실무에서 화이트보드에 코딩할 일은 확실히 없음.
  • 위 내용이 전부는 아니더라도 어떤 직무에 한해서는 이러한 방식의 면접이 필요함.
    • 왜 이러한 문제가 출제되는지 아는 것이 필요함.
      • 면접관의 사고 방식을 조금이나마 이해할 수 있기 때문

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

  • 실제로 참인 것을 거짓으로 잘못 판정하는 오류(부정 오류)가 더 낫다. (ex : 면접은 못봤지만, 실력이 뛰어난 지원자 → 몇 명을 놓치는 것은 받아 들일 수 있다)
    • 실제로 거짓인데 참으로 잘못 판정하는게 더 걱정 스럽기 때문 (ex: 면접은 잘 봤지만 실제 업무 능력은 떨어지는 경우)

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

  • 어려운 문제를 능히 풀어낼 수 있다면, 최적 알고리즘을 개발하는 능력이 뛰어날 가능성이 큼
    • 머리가 뛰어나다고 생각할 수 있고, 회사에서 가치있는 인재임

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

  • 많은 면접관은 기본적인 컴퓨터 과학 지식이 실제로 유용하다고 주장함.
    • 트리, 그래프, 리스트, 정렬, 다양한 지식에 대해 주기적으로 이해해둘 필요가 있음.
  • 또 다른 면접관은 자료구조와 알고리즘을 지원자를 평가하기에 괜찮은 ‘프록시’ 라고 함.
    • 자료구조와 알고리즘을 안다는 것은 컴퓨터 과학 관련 전공을 통해 폭넓은 기술적 지식을 습득했든, 스스로 공부했다는 의미로 받아들일 수 있음.
  • 자료구조, 알고리즘 없이 문제풀이 능력을 측정할 수 있는 문제를 만들기 어려움.

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

  • 화이트보드는 하나의 큰 그림을 그리는데 도움을 줌.
    • 오직 코드의 ‘핵심’만 신경쓰면 됨.
    • 실제로 문제를 풀어내는 함수 부분이 가장 중요함.
    • 그렇다고 의사 코드를 면접관이 좋아한다는 건 아님 → 에러가 적은 코드를 적는 걸 좋아함.

어떤 문제를 출제하는가

  • 대다수의 회사는 전사 차원에서 면접관이 반드시 던져야 할 질문 목록을 갖고 있진 않음.
    • 그래서 ‘최근 구글 면접 문제’ 라는 질문은 의미가 없음.
  • 회사마다 차이점이 있음.
    • 어떤 회사는 알고리즘 문제에 초점을 두고, 어떤 회사는 지식에 바탕을 둔 질문을 좋아함.
    • 물론, 알고리즘 문제는 근본적으로 동일함.

모든 것은 상대적이다.

  • 면접관은 같은 문제를 풀었던 다른 지원자들의 역량과 상대적인 비교를 통해 평가를 내림.
    • 다른 사람과 비교함으로써 지원자의 역량을 가늠함.
  • 따라서, 어려운 문제를 받았다고 낙담할 필요가 없음.

2. 장막 너머

  • 면접 대상자로 선정되면 보통 사전 면접을 함.
    • 사전 면접이라고 간단하게 생각하면 곤란함.
    • 코딩이나 알고리즘 관련 질문들이 나오는 경우도 많음.
  • 실제 대면 면접은 주로 코딩, 알고리즘, 디자인/설계, 경력에 대해 물어봄.
  • 면접 후, 대부분의 회사는 일주일 안에 지원자에게 연락을 함.
    • 연락이 없다고 부정적으로 생각할 필요는 없음.

마이크로소프트 면접

  • 똑똑한 사람을 원함.
    • 기술에 열정적인 사람들
  • 구인 담당자와 짧은 면접을 봄
    • 샘플 문제 하나를 줌.
  • 면접관들이 일하는 곳에서 면접을 봄
    • 팀 문화를 접하고 일터를 둘러볼 수 있음.

반드시 대비할 질문

  • “마이크로소프트에서 일하고 싶은 이유는?”

아마존 면접

  • 두 번의 전화 사전 면접부터 시작함.
  • 면접에서는 공유 문서 편집기로 간단한 코드를 작성해 보라고 함.
    • 화이트보드에 코드를 작성하고 코딩 외 다른 기술을 평가하기도 함.

반드시 대비할 질문

  • 아마존은 규모 확장성에 신경을 많이씀.
    • 분산 시스템 경험이 있어야만 이런 질문에 답할 수 있는 건 아님.
  • 객체 지향 디자인에 대해 질문을 많이 하는 경향이 있음.

구글 면접

  • 구글 면접은 마이크로소프트나 아마존 면접과 크게 다르지 않음.
  • 전화 사전 면접에서 기술적 문제가 까다롭게 나올 것에 대비해야 함.
    • 공유 문서 편집기를 이용해서 코딩을 해보라고 시키기도 함.
  • 대면 면접에서는 다수의 면접관과 여러 면접을 진행하게 됨.
    • 각 면접은 독립적이며 전부 백지 상태에서 시작한다고 믿어도 좋음.

반드시 대비할 질문

  • 규모 확장성이 가능한 시스템을 어떻게 설계하느냐의 문제에 관심이 많음.
  • 분석(알고리즘) 능력에 큰 비중을 두고 있음.

애플 면접

  • 먼저 전화를 통한 사전 면접이 진행됨.
    • 지원자의 기술이 무엇인지 감을 잡기 위함
  • 면접에서 화이트보드에 코딩할 준비를 해야 함.
    • 자신의 생각을 명료하게 전달할 수 있어야 함.

반드시 대비할 질문

  • 어떤 팀과 면접을 보게 될지 알고 있다면 그 팀에서 만든 제품들에 대해 공부하길 바람
    • 어떤 점이 좋고, 개선해야 될 점은 무엇이고 구체적인 제안을 함으로써 회사에 대한 열정을 어필할 수 있음.

페이스북 면접

  • 한두 번의 전화 사전 면접을 거침
    • 기술적인 질문 or 온라인 문서 편집기로 코딩을 함
  • 이후, 코딩 및 알고리즘 관련된 숙제를 할 수 있음.
    • 코딩 스타일에 신경 써야 함.
  • 대면 면접에서는 엔지니어와 채용관리자도 함께 참석함.
    • ‘행동(Jedi)’ 면접 : 페이스북 환경에 잘 적응할 수 있는지 평가하는 면접
      • 페이스북 문화와 가치가 잘 맞는가?
      • 무엇에 흥미를 느끼는가?
      • 어떻게 난관을 극복하는가?
      • 페이스북을 왜좋아하는가?
        • 에 대한 대답을 준비할 것
        • 페이스북은 열정적인 사람을 원함
        • 이 면접에서 코딩 문제를 질문 받을 수도 있음.
    • ‘코딩과 알고리즘(Ninja)’ 면접 : 전형적인 코딩과 알고리즘에 관한 면접
      • 문제는 난해하게 설계되어 있음.
      • 프로그램 언어에 제약은 없음.
    • ‘디자인/설계(Pirate)’ 면접 : 백엔드 엔지니어는 디자인에 관련된 질문을 받을 수도 있음.
      • 프론트, 혹은 다른 분야는 해당 분야와 관련된 디자인 질문을 받을 수 있음.
    • Ninja 2번, Jedi 한 번 면접을 봄.
    • 경력자는 Pirate 면접도 봄.

반드시 대비할 질문

  • 젊은 기업인 만큼, 개발자가 기업가 정신을 갖기를 원함.
    • 면접을 볼 때 무엇이든 빠르게 결과를 볼 수 있도록 만들기를 좋아한다는 점을 강조해야 함.
  • 언어 선택에 구애 받지 않고 확장 가능한 시스템을 함께 만들어갈 수 있는 사람인지 알고 싶어 함.

팰런티어 면접

  • ‘통합’ 방식의 면접과 달리, 특정 팀을 위한 면접을 봄.
  • 두번의 전화 사전 면접으로 시작함.
    • 30 ~ 45분간 기술적인 질문을 함.
    • 알고리즘 최적화 및 코딩 능력을 평가하기 위해 HackerRank 코딩 숙제를 제시할 수 있음.
  • 대면면접에서는 과거 경력, 관련 분야 지식, 자료구조와 알고리즘, 디자인 내용을 다룸.
  • 팰런티어 제품을 시연해 볼 가능성도 있음.
    • 괜찮은 질문을 던지고 회사에 대한 열정을 내비치자.

반드시 대비할 질문

  • 팰런티어는 뛰어난 사람을 뽑고 싶어 함.
    • 구글이나 다른 회사에 비해 문제가 더 어렵다고 말하기도 함.
    • 면접관이 어려운 문제를 선호함.
  • 핵심 자료구조와 알고리즘을 완벽히 공부한 뒤, 어려운 알고리즘 문제를 집중적으로 풀어봐야 함.
  • 백엔드 면접은 시스템 디자인도 훑어봐야 함.

댓글

Designed by JB FACTORY