brunch

You can make anything
by writing

C.S.Lewis

by MrCC Jan 16. 2019

온사이트 인터뷰 - 페이스북

Episode 11. Onsite Interview - Facebook

(사진: facebook)

전날 Netflix 탈락의 충격에서 회복할 여유도 없이 다음날 바로 Facebook 과의 온사이트 인터뷰가 기다리고 있었다. 

그래도 Netflix와 한번 제대로 온사이트 인터뷰를 하고 나니 정신도 바짝 들고 긴장감도 어느 정도 덜 수 있었다. 
전날 아쉬움에 잠은 좀 설쳤지만 그래도 나쁘지 않은 컨디션으로 인터뷰를 보러 갈 수 있었다. 

Facebook 온사이트 인터뷰는 느지막이 11시에 스케줄이 되어 있어서 좀 여유 있게 아침에 Philz Coffee에 들려서 아침과 커피 한 잔도 하고 천천히 Facebook 본사로 향했다.
Facebook 과는 4-5년 전 온사이트 인터뷰를 한번 한 적이 있었지만 그 사이 많은 것이 변해 있었다.
그때만 해도 Facebook 본사는 작은 Facebook Campus 느낌이 났는데 그 사이에 생긴 새로운 본사는 430,000 sq 정도 되는 엄청난 규모에 1층 전체가 주차장으로 되어 있어서 마치 거대 쇼핑몰 주차장을 연상시켰고 옥상은 대규모 공원이 조성되어 있었다. 
더 놀라운 것은 이 정도 대규모의 건물들이 모두 연결되어 있다는 것이었다.


(사진: https://timedotcom.files.wordpress.com/2015/03/09-facebook-new-campus.jpg)


(사진: Facebook)


인터뷰 시간에 맞춰 인터뷰가 스케줄 되어 있는 건물 한 로비에 도착해서 체크인을 하니 곧 리크루터가 마중을 나왔다. 
리크루터의 안내를 받아 위층으로 올라가서 보니 이 큰 건물 구석구석에 팀별로 나누어져서 많은 사람들이 분주히 일을 하고 있었다. 
이전 본사와 비교를 하자면 전에 인터뷰를 와서 받은 인상은 좁은 공간에 무리하게 책상과 사람들을 채워 놔서 답답한 느낌이 있었는데 이 새 본사는 건물 천장도 높고 건물 자체가 open concept 이어서 그런지 마치 거대 공장/창고에 와 있는 듯한 느낌도 들었다. 
내가 현재 일하고 하고 있는 회사와는 정반대 되는 분위기의 환경이었다.


(사진: http://images.indianexpress.com/2015/09/inside-facebook-hq.jpg)


(사진: https://www.questions-de-management.com/wp-content/uploads/2015/11/11-15-FTfacebook__06.jpg)


건물 규모가 크다 보니 리크루터도 지정된 인터뷰 룸을 찾는데 애를 먹어서 한참이나 돌다가 겨우 시간에 맞춰서 찾아올 수 있었다. 

지정된 인터뷰 룸은 커다란 건물 규모에 비해 엄청나게 작은, 2명이 겨우 들어갈 만한, 곳이었다. 

오늘 인터뷰는 총 4개, 대략적으로 2 coding, 1 design/architect, 1 behavior/leadership interview, 가 스케줄이 되어있었다.
Netflix 인터뷰 스케줄에 비해 훨씬 부담이 덜 되는 구성이었다. 
시간에 맞춰 첫 인터뷰어가 들어오고 본격적으로 Facebook과 인터뷰가 시작되었다. 


(사진: https://www.paysa.com/blog/wp-content/uploads/2017/08/Facebook-Interview2.png)


첫 인터뷰는 코딩 인터뷰

중국인 엔지니어가 인터뷰어로 들어왔다. 
Facebook에서 일한 지는 4년 정도 되었고 Infrastructure 팀에서 일을 하고 있다고 본인을 소개하였다. 
간단한 소개를 마치고 바로 인터뷰 문제로 들어갔다. 
Facebook에서의 첫 코딩 문제는 


Given a string S and a string T, find the minimum window in S which will contain all the characters in T

(ref: Leetcode)


위의 Leetcode의 문제와 거의 흡사한 문제가 나왔는데 Leetcode에서도 Hard에 해당하는 꽤나 어려운 문제가 첫 문제로 나왔다. 
그래도 string 관련된 문제들은 인터뷰를 준비하면서 많이 풀어봤던 터라 당황하지 않고 정석대로 차근차근 풀어나가려고 노력하였다.
Whiteboard에 코딩을 해야 했고 간단한 코딩이 아니었기 때문에 중간에 코드가 꼬이지 않고 시간 내에 optimal 한 솔루션을 완성하는 데에 집중을 했다. 
코드를 완성한 다음에 솔루션에 대해 설명을 하니 인터뷰어가 중간에 미스한 것 몇 개를 잡아준 거 외에는 크게 문제 될 것 없이 순조롭게 마무리할 수 있었다. 
5분 정도를 남기고 Facebook에서 일하는 경험에 대해 간단히 물어보고 하고 있는 프로젝트 이야기를 하면서 마무리를 하였다. 

첫 인터뷰를 마치니 바로 점심시간이었다. 
11시쯤 인터뷰를 시작하니 인터뷰 하나만 하고 바로 점심 식사를 할 수 있어 개인적으론 긴장감도 풀고 무리가 되지 않아서 좋았다.  
점심은 비교적 어려 보이는 중국인 친구가 점심 buddy를 해주러 왔다. 
이 친구는 대학을 졸업하고 바로 Facebook에 들어와서 일한 지는 2년 정도 됐고 광고 팀에서 Backend 엔지니어로 일을 하고 있다고 본인을 소개해 주었다. 


(사진: https://images.fastcompany.net/image/upload/fc/1671447-inline-12-foodline-1.jpg)


Facebook 본사에는 구내식당이 잘 갖춰져 있었는데 큰 회사의 규모만큼이나 큰 구내식당이 있었는데 음식도 회사 점심치곤 나쁘지 않았다.

4년 전에 왔었던 예전 본사 식당에 비하면 엄청나게 커졌고 음식도 엄청 다양해졌다. 

점심을 먹으면서 이 친구가 일하고 있는 팀에 대해서 또 하고 있는 프로젝트에 대해서 이야기를 나누었는데 Facebook 내에서도 팀에 따라서 업무 량의 차이가 크고 자신이 속해 있는 광고팀은 Facebook 수익원에 가장 큰 부분을 차지하고 있는 만큼 업무 량이 엄청나다고 하였다. 
회사의 핵심이 되는 팀에 일을 하는 자부심은 있지만 한편으론 새로 생긴 팀에 조인한 자신의 친구는 하루에 6시간도 일을 안 한다며 월급은 똑같이 받으면서 자신은 일은 배로 하고 있다고 그 친구가 부럽기도 하다는 솔직한 이야기도 들려주었다. 
점심 식사를 마치고 남는 시간 동안 옥상에 있는 공원을 잠시 구경할 기회가 있었는데 진짜 마치 커다란 공원에 와 있는 듯한 느낌이 들었다. 

다음 인터뷰 시작하기 전에 충분히 휴식을 취하고 인터뷰를 다시 시작할 수 있었다.


(사진: https://www.mercurynews.com/wp-content/uploads/2016/08/20150522__0523fbroof1.jpg)


2번째 인터뷰어는 UI Engineering Manager라고 본인을 소개한 여성 백인이었는데 Facebook에서 일한 지는 5년 정도 되었고 UI Engineer로 4년쯤 일하다가 작년부터 manager로 일을 하고 있다고 하였다. 

2번째 인터뷰는 leadership/coding 인터뷰였다. 
사실 leadership/behavior interview로만 알고 있었는데 예상했던 거와는 다르게 시작을 algorithm coding 문제로 시작하였다. 


Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).

You are given a target value to search. If found in the array return its index, otherwise return -1

(ref: Leetcode)


Binary search 문제였지만 rotate을 하면서 한번 꼬아놓은 문제라 일반 binary search 문제보단 조금 더 까다로웠다. 
그래도 비슷한 유형의 문제를 여러 번 풀어봐서 크게 어렵지 않게 풀 수 있었다. 
코딩 문제가 끝나고 바로 leadership 경험을 묻는 인터뷰를 시작하였다. 
사전 조사한 바로는 leadership 인터뷰의 결과에 따라 오퍼를 받는 포지션의 레벨이 달라질 수 있다고 들어서 신중하게 대답을 하려고 노력하였다.
질문들은 주로 지금까지 경험 중에 leadership을 증명할 만한 경험을 구체적으로 물으면서 어떻게, 어떤 규모의 프로젝트를 진행했었고, 팀원 간의 conflict가 생겼을 땐 어떻게 해결을 하였고, 팀원들과 communication은 어떻게 했는지 등등 기본적으로 leadership의 자질을 테스트하는 듯한 다양한 질문들이 이어졌다. 
algorithm 문제에 비해서 머리를 쓰기보단 주로 경험을 이야기하면 돼서 2번째 인터뷰는 전반적으로 수월하게 진행이 되었다. 
마지막 5분 동안 내가 질문을 할 수 있는 시간에는 engineer에서 manager로 전환하면서의 경험을 물었고 어떤 게 좋고 또 어떤 게 싫은지에 대해서 물어볼 수 있었다. 

3번째 인터뷰어는 나이가 조금 있어 보이는 남성 중국인이었는데 현재는 Engineering director이고 Facebook에서는 3년 engineer, 3년 dev manager를 하다가 최근 engineering director로 승진이 돼서 director로 일하고 있다고 하였다. 
자신은 engineer들이 일을 잘할 수 있도록 support 하는 게 자기의 일이라고 소개를 하는 것이 인상적이었다. 

3번째 인터뷰는 system design 인터뷰였는데 story feed를 design 하는 문제가 나왔다. 
Facebook에서 system design 인터뷰 문제로 자주 나오는 news feed 문제에서 조금 변형된 문제였는데 news 대신 story로 디자인을 해야 했다. 
문제 자체가 open ended question이기 때문에 내가 가지고 있는 지식과 경험을 잘  살리면서 방향으로 내가 이끌어 가는 게 중요했다.
45분 동안 Facebook의 story feed system/service를 완성하는 건 당연히 불가능하기 때문에 Scalability, Data modeling, API Design 정도로 문제를 나누고 인터뷰어와의 대화를 통해서 중점을 둘 방향을 정해서 문제를 풀어가는 식으로 인터뷰를 진행하였다. 
다행히 인터뷰어도 내가 문제를 풀어가는 방향에 큰 이견이 없었고 대신 중간중간 challenging 한 질문들을 적절히 던지면서 내가 어떤 식으로 문제를 해결하는지 평가를 하려고 하였다. 
가장 걱정이 되던 인터뷰였는데 다행히 좋은 인터뷰어를 만나서 나쁘지 않게 system design 문제를 해결해 나갈 수 있었다. 
마지막 5분 동안 Facebook에서 그동안 해온 프로젝트들에 대해서 물어보면서 좋은 분위기에서 인터뷰를 마칠 수 있었다. 
인터뷰가 끝나고 나선 언제든지 궁금한 게 있으면 연락을 하라면서 개인 연락처까지 남겨주고 갔다. 

마지막 인터뷰인 4번째 인터뷰에선 중국인 여성 엔지니어가 들어왔다. 
Facebook 과의 인터뷰에선 우연인지 아님 그냥 중국인 엔지니어들이 많은 건지 모르겠지만 점심 포함 5명 중 4명이 중국 사람들이니 (전화 인터뷰도 중국인이었다) 마치 중국 회사와 인터뷰를 하고 있는 듯한 착각도 들었다. 
더구나 4번째 인터뷰어는 중국에서 온 지 1년도 채 안 돼서 영어를 알아듣는 게 힘들 정도였다. 

Facebook에서도 일한 지 1년 정도 되었고 Machine Learning 분야에서 일을 하고 있다고 하였다. 
간단히 소개를 마치고 바로 인터뷰 문제로 들어갔다. 
마지막 인터뷰 문제는


Find shortest path in a Binary Maze
Given a MxN matrix where each element can either be 0 or 1. We need to find the shortest path between a given source cell to a destination cell. The path can only be created out of a cell if its value is 1.

(ref: GeeksForGeeks)


마지막 문제 역시 만만치 않은 문제였다. 
Facebook onsite interview의 마지막 인터뷰 문제인 만큼 신중에 신중을 가해서 집중을 해서 문제를 풀어나갔다.
근데 사실 4번째 인터뷰의 가장 큰 문제는 인터뷰어와의 의사소통이었다.
중간에 하는 질문마저 알아듣기가 힘들 정도였고 질문을 알아듣기가 힘드니 대답을 잘 한 건지 엉뚱한 소리를 한 건지 알 수가 없었다. 
다행히 문제 자체는 시간 내에 풀 수가 있었고 문제를 풀고 나서 follow-up question까지 질문을 하면서 인터뷰에 남는 시간이 없이 꽉 채워서 인터뷰를 끝냈다. 

그렇게 마지막 인터뷰를 마치고 인터뷰어의 안내를 받아 건물 밖으로 나왔다. 

굳이 전날 인터뷰를 본 Netflix와 비교를 하자면 내 인터뷰 성적과 상관없이 인터뷰 구성과 내용 자체는 Netflix가 훨씬 좋았었다. 
Facebook은 팀 상관없이 회사 레벨에서 인터뷰를 진행하는 거라 그럴 수도 있지만 인터뷰 내용 자체가 system design 질문을 제외하고는 Leetcode나 GeeksForGeeks에서 흔히 볼 수 있는 문제들로 구성이 되어있었다. 
인터뷰 중간쯤에 우연히 알게 된 것인데 인터뷰어들이 하는 질문들은 그마저 인터뷰어가 준비하는 게 아니라 리크루팅 팀에서 미리 정해준 문제 리스트에서 하나씩 골라서 문제를 내는 거였다. 
그러다 보니 인터뷰어들도 인터뷰 문제에 크게 신경 쓴 느낌은 들지 않았다. 
반면에 Netflix는 팀으로 뽑기 때문에 그 팀에 속해 있는 엔지니어들이 직접 인터뷰를 해서 인터뷰 구성도 훨씬 잘 짜여있고 인터뷰 질문들도 뻔하지 않은 다양한 질문들이 나왔다. 
물론 인터뷰도 더 길고 좀 더 빡빡한 스케줄로 진행을 하긴 했지만 단순 algorithm 문제들도 대부분 구성된 인터뷰보단 훨씬 나은 느낌이었다. 

어쨌든 내 최우선 순위에 있던 회사인 Facebook 과의 인터뷰는 나름 성공적으로 마칠 수 있었다.
결과를 먼저 얘기하자면 인터뷰를 보고 1주일 후쯤에 리크루터로부터 합격했다는 소식을 들을 수 있었다.
자세한 오퍼 협상 과정과 회사를 선택하는 내용은 이번 시리즈 마지막에 따로 자세히 다루도록 하겠다. 

매거진의 이전글 온사이트 인터뷰 - 넷플릭스
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari