인터뷰 제국의 역습

• Part 1. 보이지 않는 미래의 위험
• Part 2. 스펙 클론의 습격
• Part 3. 이력서resume의 복수
• Part 4. 새로운 희망, 리크루팅 시즌
• Part 5. 인터뷰 제국의 역습 (본문)
• Part 6. 자존감의 귀환

인터뷰 진행을 하고 싶다는 이메일이 하나둘 오기 시작했다. 기쁜 마음도 잠시, 부담감이 밀려온다. 테크회사 인터뷰는 어떻게 준비해야 하는 걸까?

이번 편의 주제는 바로 인터뷰. 테크회사 인터뷰는 세 가지로 나눌 수 있다: 코딩 챌린지, 전화 인터뷰, 온사이트 인터뷰. 각각 어떻게 접근해야 하는지 파헤쳐보자.

내가 너의 면접관이다
아니야!

인터뷰 절차 Overview

코딩 챌린지 => 전화 인터뷰 => 온사이트 인터뷰 => 합격

대학생 프로그래머 지원자일 경우 대부분 비슷한 절차를 밟는다. 우선 별다른 지체 없이 컴퓨터로 하는 코딩 챌린지가 이메일로 올 것이다. 코딩 챌린지를 통과하면 전화 인터뷰를 진행할 것이고 그다음엔 회사 오피스에서 하는 온사이트 인터뷰를 할 것이다. 마지막 절차까지 성공적으로 마친다면 합격을 알리는 오퍼 레터(Offer letter)를 받을 수 있다.

리크루팅 이벤트에서 직접 만나서 레주메를 건넬 경우 코딩 챌린지와 전화 인터뷰 대신에 온캠퍼스 인터뷰를 하는 경우도 있다. 학교에서 직접 만나 인터뷰를 진행하는 것인데, 얼굴을 보면서 하는 전화 인터뷰라고 생각하면 된다.

코딩 챌린지

혼자서 컴퓨터로 정해진 시간 안에 문제를 해결하는 절차이다. 원할 때 부담 없이 진행하면 되고 기본적인 코딩 실력만 검증하기 위한 것이기 때문에 난이도가 높지 않다. 다만 45분~1시간 시간제한이 있으니, 방해받지 않을 공간을 찾아서 부담 없이 보면 된다.

LeetCode에서 퍼온 코딩 샘플 챌린지

코딩 챌린지는 LeetCode에서 연습할 수 있다. Linked list나 graph 관련된 문제를 풀면서 흔한 데이터 구조들을 리뷰하자. 시간 절약을 위해 string, dictionary, set의 중요한 methods에 미리 익숙해지면 좋다. 하지만 챌린지 도중에 인터넷에 찾아볼 수 도 있으니 너무 빠삭하게 외울 필요는 없다.

언어는 자유롭게 선택할 수 있지만 빠른 개발 속도로 유명한 Python을 추천한다. Javascript는 만약 실수를 하면 debugging이 힘들어지고, Java나 C는 type를 일일이 맞춰야 되니까 쓰는 속도가 다소 느리다. 특히 C로 한다면 integer overflow를 따로 처리해야 한다는 번거로움이 있다.

전화 인터뷰

코딩 챌린지를 무사히 통과하면 리크루터가 전화 인터뷰를 잡기 위해 이메일이나 전화를 할 것이다. 앞으로는 모르는 번호로 전화가 와도 잘 받자.

미국에 전화번호의 앞자리는 지역마다 정해져 있으니, 샌프란의 area code는 414, 시애틀의 area code는 206 임을 기억해두면 유익하다.

전화 인터뷰는 1대 1로 이루어진다. 보통 한 시간 정도 진행을 하는데, 50분 정도 알고리즘 질문을 하고 마지막 10분은 역으로 내가 회사에 대한 질문을 한다. 알고리즘 문제는 실시간 코딩 챌린지라고 생각하면 된다. 면접관이 지켜보는 가운데 코딩 챌린지를 해야 한다. 난이도도 더 어려워지고 어떻게 코드를 쓰는지 본다. 그들의 관심사는 단순한 프로그래밍 실력을 넘어 나의 전체적인 Thought process를 보는 것이다. 탄탄한 실력도 중요하지만 소통실력을 보여주는 것도 중요하다는 얘기이다. 나름 나만의 요령을 정리하자면–

문제를 정확히 이해하자

우선은 Problem space를 정확히 이해하고 시작하는 게 중요하다 (특히 면접관이 말로 전달할 때). 바로 푸는 것이 아니라 몇 가지 질문을 통해서 문제의 대한 가정assumption을 더블 체크해보자. 예를 들어 다음과 같은 문제에는 이런 질문들을 할 수 있다.

문제) Find the minimum in an array.
• Can there be a negative number?
• Can there be duplicating elements? What if there are multiple minima?

문제) Find out the longest path from s to t without revisiting any node.
• Is the graph connected? Are the edges directed or undirected?
• What if s and t are the same node? Should it return nothing or a longest cycle from that node?

시간을 갖고 다양한 시선으로 문제를 바라보자

처음에 생각나는 해답으로 바로 직진하는 것보다 한 템포를 쉬고 다양한 접근들을 생각해보자. 더 효율적이고 간결한 해답을 떠올릴 수도 있다. 이렇게 다른 방법을 모색할 때 면접관이 따라갈 수 있게 think aloud, 내 생각을 입 밖에 내뱉는 게 중요하다. 혹시나 완전히 잘못 문제를 이해했거나 빗나간 접근이라면 면접관이 바로 잡아줄 수 있다.

요다 면접관과 함께 다양한 시선으로 문제를 바라보는 루크

효율적인 데이터 구조를 선택하자

특정한 데이터 구조(data structure)를 사용할 때마다 그 이유를 말하고 사용하자. 자주 쓰는 데이터 구조(Array, Linked List, Graph, Tree, BST, Heap, Queue, Stack 등)의 장단점을 바로 말할 수 있을 정도로 준비를 해가자.

시간/공간 복잡도를 빠르게 분석하자

프로그램을 다 작성하면 면접관이 아마 두 가지 부탁을 할 것이다. 첫 번째는 시간/공간 (time/space complexity)을 빅오 표기법(Big O Notation)으로 분석하기. 너무 매 라인 따지면서 길게 분석을 하는 것보다 코드가 작동하는 큰 그림을 보고 어림 잡는 것이 좋다.

다양한 테스트 케이스를 생각해내자

두 번째로 작성한 코드를 테스트를 하기. 코드가 돌아가는 다양한 시나리오를 생각해야 한다. 조금 기술적으론 코드 커버리지를 늘릴 수 있는 다양한 input을 생각해내야 한다. 작성한 코드의 버그가 있는지도 함께 체크하자.

다양한 input의 예시를 들자면–

  • 베이스 케이스: null, 0, empty string, empty list
  • 평범한 입력값: 3, “abc”, [2,5,3]
  • 어려운 입력값: 191489, “afvaoij”, [2,6,4,2,1]
  • 특이한 케이스: –398, “AAa ? Ar”, [3,3,1000,3,3,3,3]

온사이트 인터뷰

전화 인터뷰를 무사히 마친다면 지원자를 오피스에 초대하는 온사이트 인터뷰를 할 것이다. 여행 비용은 회사에서 내준다. 보통 3–5개의 1대 1 인터뷰가 있고 중간에 회사 직원이랑 점심을 먹을 기회도 준다. 인터뷰 주제는 알고리즘 질문을 넘어서 소프트웨어 디자인, 시스템, 그리고 태도(behavioral)에 대한 질문들까지도 한다. 전화 인터뷰보다 살짝 난이도가 있지만 비슷한 자세로 임하면 된다. 문제도 푸는 것도 중요하지만 소통능력을 보여주는 것에도 집중하자.

컨디션 조절을 하고 긴장을 풀자. 엄밀히 말하자면 회사와 지원자는 동등한 위치에 서있다. 지원자는 회사의 선택을 받기 위해 마음을 졸이겠지만 회사도 똑같이 지원자의 선택을 간절히 원한다. 비행기표와 숙소비를 괜히 내주는 것이 아니다.

온사이트는 회사가 지원자한테 어필하는 자리이기도 하다

그러므로 내가 이 회사랑 잘 맞는지 관찰하는 것도 중요하다. Work culture는 어떤지, 어떤 팀에서 어떤 역할을 하게 될 것인지, 회사 미래는 어떤지–일 뿐만이 아니라 Work life balance는 어떠한지, 도시 분위기는 어떤지, 회사 적응하기는 편한지 물어보는 것도 중요하다.

내가 즐겨하는 질문은 What brings you to work every day (무엇이 당신을 출근하게 만드나요)였다. 개개인이 이 회사의 어떤 부분에 열정이 있는지 알 수 있는 질문이다.

취업의 마지막 관문인 온사이트에 대해서 조금 더 자세히 알아보자.

취업의 마지막 관문은 바로 온사이트 인터뷰 (Onsite Interview). 나는 온사이트 인터뷰를 총 여섯 번 경험했는데, 그중 현재 미국 테크 커뮤니티를 잘 대변할 수 있는 두 개의 인터뷰를 뽑았다.

인터뷰 여행 시작!

샌프란 스타트업의 온사이트 인터뷰

첫 번째 회사는 샌프란에 위치한 총 450명의 직원을 지닌 비공개 기업. 벡엔드 엔지니어로 지원을 했다. 온사이트까지 지원 절차는 아주 매끄러웠다. 리크루터와 소통이 원활했고 일정을 조율하는 것도 손쉬웠다.

10/4 — 온라인으로 지원. 바로 이메일로 코딩 챌린지가 옴.
10/8 — 리크루터가 전화로 이야기를 하고 싶다고 연락이 옴.
10/17 — 리크루터와 간략한 통화. 전화 인터뷰로 넘어가고 싶다고 함.
10/23 — 회사 엔지니어와 전화 인터뷰
10/24 — 리크루터가 온사이트 인터뷰를 하고 싶다고 함.
11/8 — 온사이트 인터뷰
11/12 — 결과 통보

인터뷰 전날 밤 10시쯤 샌프란 공항에 도착했다. 피곤한 몸으로 우버를 타고 곧장 호텔로 갔다. 작지만 깔끔한 방이다. 호텔이 높은 중턱에 있어서 한눈에 다운타운 야경이 보였다. 샌프란에 왔다는 것이 확 실감 났다. 다음날 아침 일찍 일어나 호텔 조식을 먹고 걸어서 회사로 갔다. 밝은 청록색의 라운지 공간, 열린 공간에 있는 사무실 데스크들, 캐주얼한 직원들의 옷차림, 창문으로 내부가 훤히 보이는 미팅룸. 젊은 테크 회사 느낌이 물씬 낫다. 전화로만 연락했던 리크루터가 프런트에서 나를 반겨주었고 오늘 일정에 대해서 간략하게 말해주었다.

마침내 회사에 도착한 Han Solo

코딩 인터뷰는 오전에 두 개, 오후에 한 개 있었다. 면접관과 지원자가 각자 컴퓨터를 꺼내서 Coderpen(실시간으로 코딩을 같이 할 수 있는 웹사이트)으로 함께 코딩 챌린지를 하는 형식이었다. 인터뷰마다 한 시간 동안 진행했고, 난이도는 꽤 어려웠다. 내가 써 내려가는 코드를 보면서 면접관은 실시간으로 질문을 했다. 시간이 남으면 문제에 새로운 제약을 넣어서 더 어렵게 만들었다.

점심은 구내식당에서 회사 직원과 같이 먹었다. 20대 젊은 엔지니어와 먹게 되어서 전혀 긴장감 없이 편하게 대화를 나누었다. 기업문화가 어떤지, 워라밸은 어떻게 유지하는지에 대해서 물어봤다. 음식도 정말 맛있었다. 직원은 매일 무료로 점심을 먹을 수 있다는 사실에 내심 솔깃했다.

모든 technical interview가 끝나고 엔지니어링 매니저가 방에 들어왔다. 오묘한 긴장감 속 behavioral 질문을 물어보기 시작했다. 나의 관심사는 무엇인지, 커리어 목표는 무엇인지, 우리 회사는 어떻게 생각하는지. 인상 깊게도, 나와 적합한 팀이 무엇인지 고민해주는 것에 감동했다. 이 대화 속에서 규모가 작은 회사의 장점을 확실히 느꼈다.

모든 일정이 끝난 뒤 리크루터와 짧은 인사를 나누고 밖으로 나왔다. 보통 온사이트는 2박 3일로 도시를 여유롭게 둘러볼 수 있지만 다음 인터뷰 때문에 바로 공항으로 가야 했다. 만약 처음 오는 것이라면 꼭 도시를 둘러보는 것을 추천한다. 마지막 결정을 할 때 이 지역이 나랑 얼마나 잘 맞는 지도 고려해야 한다.

머니로그

비행기표와 숙소는 회사가 미리 내주었고, 여행기간 교통비와 식사비까지 모두 배상해주었다.

  • 집-공항-호텔-회사 Uber 비용: $44.61 + $36.43 + $47.91 = $128.95
  • 식사 비용: $19.95 + $31.00 + $18.75 = $69.70

미국 대기업의 온사이트 인터뷰

두 번째 회사는 미국을 대표하는 대기업. 클라우드 부서로 인터뷰를 배정받았다.

온사이트 인터뷰를 하기까지 엄청 험난한 기간이었다. 첫 번째 인터뷰를 하고 연락이 없어서 떨어진 줄 알았는데 갑자기 한 달 뒤 이메일로 연락이 왔다. 아마 10월 15일 첫 번째 합격자들의 결정을 기다리느라 늦어졌다고 예상한다. 그 외에도 소통이 단절됐다는 느낌을 많이 받았다. 매 단계마다 다른 리크루터에게서 연락을 받았고, 내가 어떤 부서에서 인터뷰를 하는지 온사이트 당일까지 알 수 없었다.

8/25 — 여름 인턴을 한 친구의 리퍼럴referral을 받음. (리퍼럴은 회사 직원이 내부적으로 지원자를 추천해주는 제도를 뜻한다)
9/11 — 리크루터가 온캠퍼스 (학교에서 진행하는) 인터뷰를 하고 싶다고 함.
9/17 — 회사 엔지니어와 온캠퍼스 인터뷰
10/25 — 리크루터가 온사이트 인터뷰를 하고 싶다고 함.
11/9 — 온사이트 인터뷰
11/13 — 결과 통보

회사에 도착하니 로비에 100–200명 정도의 지원자들이 몰려있었다. 정말 정신이 없었다. 프런트에 오늘이 큰 인터뷰 날인지 물어보니 매일 이렇게 인터뷰를 한다고 대답했다. 역시 대기업의 스케일은 남다르다. 몇 분을 기다리니 수많은 무리를 뚫고 리크루터가 나타났다. 오늘 일정에 대해서 간략하게 설명해주고 면접을 진행할 빌딩으로 가는 회사 셔틀을 태워줬다.

인터뷰 일정은 위 회사랑 비슷했다. Technical Interview가 오전에 두 개, 오후에 두 개. 중간에 직원 한 명과 점심시간. 마지막은 Engineering Manager와 대화를 하는 과정이었다. 각 한 시간씩 스케줄을 진행했다. 하지만 다른 점이 꽤 있었다. Technical Interview에서는 컴퓨터가 아닌 화이트보드를 사용해서 분위기가 캐주얼했고, 단순한 코딩 질문이 아닌 소프트웨어 디자인 문제까지 물어봤다. 점심은 나이가 많은 엔지니어와 먹게 되어 대화가 다소 무겁기도 했고, 게다가 숟가락을 내려놓자마자 바로 코딩 질문을 물어봐서 당황했다 (사실 그분이 세 번째 면접관이었던 것이다).

떨리는 매니저와의 면담

매니저와의 마지막 인터뷰는 확연하게 달랐다. 그는 자기 팀이 무엇을 하는지 전달하는 것에 신경을 썼다. 이해가 어려운 부분이 많았는데, 질문을 하면 세심하게 부가설명을 해주어서 고마웠다. 회사가 나를 알려고 하는 것보다 내가 회사를 알 수 있게 마련된 자리라는 느낌을 받았다.

머니로그

위 회사와 똑같이 비행기표와 숙소는 미리 내주고, 교통비와 식사비까지 모두 배상해주었다.

  • 집-공항-호텔-회사 Uber 비용: $35.10 + $12.77 + $13.57 + $26.66 + $45.39 = $133.49
  • 식사 비용: $18.75 + $50.00 + $24.00 + $34.25 + $16.70 = $140.70

인터뷰를 다 마치면 이제 결과를 기다리는 일만 남았다. 하지만 합격을 받았다고 해도 아직 끝난 것이 아니다. 취업의 피날레라 할 수 있는 협상이 남아있다.

마지막 편이 남았습니다

--

--

Sean D Kim
스타워즈 덕후가 쓰는 미국 테크회사 취업기

Software Engineer @ Microsoft Azure Compute / "To be or not to be. That's not really a question." - Godard