아마존에 개발자로 취업하기까지 #2

logo_amazon

1.

코딩 시험을 통과했으면 이제 면접이다. 마지막 면접을 본 것은 2008년이었다. ‘준비 해 온 자기 소개’ 부터 시작하는 한국 회사 면접이었다. 외국 회사들의 면접은 어떤지 전혀 알 수가 없었다. 구글링을 통해 이런 저런 면접 후기들을 찾아보고, 예상되는 질문들에 대한 답변을 준비했다. 하지만 무엇보다 가장 큰 문제는 영어였다. 영어가 벼락치기로 준비한다고 실력이 늘진 않을테니 별다른 방법은 없었다. 미드라도 열심히 보는 수밖에.

2.

담당 리크루터가 해준 조언은 아주 큰 도움이 되었다. 대학 시절 배운 자료 구조, 알고리즘, 객체 지향 프로그래밍 등에 대한 질문을 할 것이라는 것과, 화이트보드 코딩에 준비를 하라는 것. 화이트보드 코딩은 단순히 수도 코드가 아니라 컴파일 에러, 버그가 없는 프로덕션 레벨의 코드를 요구할 것이라는 내용이었다. 나는 화이트보드 코딩에 대비해 주요 알고리즘(예를 들면 그래프 탐색 알고리즘 등)을 펜으로 노트에 작성해보며 면접을 준비했다.

3.

면접은 남산에 있는 하얏트 호텔에서 진행되었다. 면접은 1:1로 네 명의 면접관과 진행되는데, 한 명당 한 시간 정도다. 나는 인터뷰룸에서 기다리고 있고, 면접관이 돌아가며 내 인터뷰룸에 들어 온다. 면접관은 들어 와서 자기 소개를 하고, 내게 질문을 한다. 질의 응답 시간 후에는 화이트보드 코딩 문제를 낸다. 화이트보드 코딩이 끝나면 다른 질문이 있는지 묻고 인터뷰가 끝난다. 질의 응답과 화이트보드 코딩 시간의 비율은 6:4 정도 된다. 예상한 것보다는 화이트보드 코딩 시간이 길었다. 물론 면접은 모두 영어로 진행된다. 내가 한국인이어서 그런지 말은 비교적 천천히, 발음도 꽤 명확하게 해주어 질문을 이해하는 데는 크게 어려움이 없었다. 물론 답변을 하는 것은 정말 힘들었다. 영어 공부좀 많이 해둘껄.

4.

질문은 주로 기술적인 것이나 내 경험과 관련한 것이었다.

기술적인 질문들은 주로 scalability, caching, distributed system 등 웹서비스에 관련한 질문들을 많이 한다. 또한 객체지향에 대한 개념을 묻는 질문도 있다.

경험에 관련된 질문은 최근에 진행했던 프로젝트, 대규모 웹서비스를 개발해 본 경험, 일반 대중을 상대로 하는 시스템을 개발해 본 경험, 자신의 보스와 의견 충돌이 있었던 경험, 기술적으로 가장 큰 도전이 필요했던 경험 등이다. 성공담이냐 실패담이냐는 중요하지 않은 것 같다. 하지만 실패담일 경우 그것으로 부터 무엇을 배우는지에 대해서는 중요하게 생각하는 것 같다.

이 외에도 간단한 수도 코드로 작성할 수 있는 알고리즘을 말로 설명하라는 질문도 있다. 예를 들면 고유한 id를 갖는 상품이 100만 개 있을 때 특정 id가 캐싱되어 있는지 여부를 가장 빠르게 알 수 있는 방법은 무엇일까 하는 것과 같은 질문들이다.

5.

화이트보드 코딩 문제는 알고리즘 작성부터 클래스 추출, 아키텍쳐 설계까지 다양한 레벨에 걸쳐 있다.

문제 중 하나는 n개의 레코드를 저장할 수 있는 LRU 기반의 캐싱 담당 클래스를 구현해 보라는 것이었는데, 나는 2-레벨의 해쉬맵을 통해 구현을 했더니 면접관이 해쉬맵과 링크드리스트를 같이 사용하면 더 좋지 않겠냐고 커멘트를 하면서 잠시 동안 토론을 한 기억이 있다.

다른 질문은 요구 사항을 읽어 주고 필요한 클래스와 인터페이스를 추출해 보라는 질문이 있었고,

가장 기억에 남는 질문은 책 판매 사이트의 아키텍쳐를 설계해 보라는 것이었다. 웹페이지 로딩 속도를 더 높이기 위해서는 어떻게 하는 게 좋을지, 대량의 트래픽을 처리하기 위해서는 어떻게 해야 할지, 특정 몇 권의 책에 대한 트래픽이 전체의 대부분을 차지할 경우 캐싱 알고리즘은 어떻게 할 것인가에 대한 추가 질문이 이어지는 등 가장 까다로웠던 질문이었다.

6.

면접일로부터 2주일 후 메일이 왔다. 오퍼에 대해 얘기해야 하니 연락처를 알려달란다. 이번에도 합격했다 떨어졌다 이런 말은 없다. 얘네는 이런 식인가보다. 어쨌든 면접은 통과한 모양이다.

 

면접 이후의 이야기는 3편에서 진행하겠습니다.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s