brunch

You can make anything
by writing

C.S.Lewis

by MrCC Jan 17. 2019

온사이트 인터뷰 - 에어비엔비

Episode 13. Onsite Interview - Airbnb

(사진: Airbnb)


5번째 인터뷰는 Airbnb


인터뷰 이야기 시작 전에 인터뷰 전날 있었던 웃픈 에피소드를 하나 얘기하고 시작을 하겠다. 
Airbnb 본사가 샌프란시스코에 있어서 하루 전날 샌프란시스코에 와서 하루를 묵게 되었는데 Airbnb인 만큼 호텔 대신에 Airbnb credit $200을 숙박용으로 주었다. 
가격에 맞춰서 Airbnb 본사 근처 리뷰가 괜찮은 방을 예약해서 왔는데 막상 가보니 도어 벨 에어 응답도 안 하고 호스트는 연락도 안 되고 난감한 상황에 처했다. 
다른 사람이 들어갈 때 뒤따라서 건물 안으론 어떻게 들어갈 수 있었는데 때마침 엘리베이터가 고장이 나서 계단으로 한참 올라가서 방을 찾아갈 수 있었다. 
그런데 방에 들어가 보니 냄새도 나고 사진과는 전혀 다른 방이었다.
리뷰가 좋았는데 리뷰를 남긴 수가 5명도 안 되는 게 조금 불안했는데 아니나 다를까 지금까지 썼던 Airbnb 숙소 중에 최악이었다. 
잠시 고민을 하다가 이러다가 제대로 쉬지도 못 하고 컨디션 조절을 잘 못 하겠다는 생각이 들어서 그냥 나와서 근처 호텔을 찾아서 들어갔다.
Airbnb에 인터뷰를 하러 와서 Airbnb를 버리고 호텔에 가서 하루를 묵게 된 것이다. 
그래도 다행히 호텔에선 잠도 푹 자고 컨디션을 어느 정도 회복하고 인터뷰를 보러 올 수 있었다. 


(사진: Race)


(사진: Airbnb)


Airbnb 본사의 첫 느낌이 무척이나 인상적이었다.

주변 사람들에게 이야기도 많이 듣고 사진으로 본 적 있지만 막상 와보니 생각보다 크고 잘 꾸며져 있어서 마치 유명 관광지에 와 있는 듯했다. 
실리콘밸리의 대표적인 힙한 스타트업의 느낌이 물씬 났다. 

로비에서 check-in을 하고 곧 리크루터가 마중을 나왔다. 
인터뷰룸으로 가는 길에 보이는 콘퍼런스룸이랑 오피스 구역마다 theme을 정해서 특색 있게 잘 꾸며 놓은 게 역시나 인상적이었다. 


(사진: HomeWorldDesign)


(사진: Officelovin)


2층에 있는 작은 인터뷰 룸으로 안내를 해 주었는데 인터뷰룸은 사실 2명이 정원인 작은 룸이었다. 
Whiteboard 도 엄청 작아서 인터뷰룸이 맞나 싶을 정도였다. 
그래도 코딩 인터뷰는 whiteboard 대신 컴퓨터에 직접 코딩을 한다고 들어서 그나마 다행히라는 생각이 들었다.

인터뷰 전에 리크루터로부터 미리 오늘 스케줄을 전달받은 오늘의 인터뷰 스케줄이다. 

9:45 AM - 10:00 AM: Intro
10:00 AM - 10:45 AM: Coding
10:45 AM - 11:30 AM: Architecture 
11:30 AM - 12:15 PM: Coding
12:15 PM - 1:00 PM: Lunch
1:00 PM - 1:30 PM: Cross Functional 
1:30 PM - 2:00 PM: Cross Functional 
2:00 PM - 2:15 PM: Break
2:15 PM - 3:00 PM: Experience
3:00 PM - 3:15 PM: Wrapup

전날 본 LinkedIn 인터뷰 스케줄에 비해 인터뷰 수는 많지만 1시간 정도 짧았다. 
짧은 시간에 인터뷰 수가 6개나 돼서 쉴 틈 없이 굉장히 빡빡한 스케줄이었다. 
이번 인터뷰 투어의 마지막 인터뷰라 생각을 하고 마음을 다시 한번 다지고 인터뷰를 시작하였다. 

첫 인터뷰어는 젊은 중국인 친구였다. 
간단한 자기소개를 시작으로 본격적으로 인터뷰가 시작이 되었다. 

첫 코딩 문제는 다음의 문제가 나왔다. 


Find Itinerary from a given list of tickets

Given a list of tickets, find itinerary in order using the given list.
Example:

Input:
"Chennai" -> "Banglore"
"Bombay" -> "Delhi"
"Goa"    -> "Chennai"
"Delhi"  -> "Goa"

Output: 
Bombay->Delhi, Delhi->Goa, Goa->Chennai, Chennai->Banglore,

(Ref: https://www.geeksforgeeks.org/find-itinerary-from-a-given-list-of-tickets/)


Whiteboard를 통해서 충분한 문제 설명을 듣고 내 개인 랩탑을 이용해서 코딩을 시작하였다. 
Lyft 온사이트 인터뷰 때와 마찬가지로 사전에 개인 랩탑으로 코딩을 한다는 이야기를 듣고 미리 template을 만들어 와서 문제에만 집중을 하였다. 
어디서 본듯하지만 생각보다 쉽게 풀리지 않은 문제였다. 
남은 시간 동안 마지막 5분을 제외하곤 솔루션을 완성하기 위해 집중했지만 시간 내에 완전한 솔루션을 완성해내지 못했다. 
남은 5분 동안 내 솔루션에 대해 설명을 하고 인터뷰어의 질문의 대답을 하니 첫 인터뷰가 순식간에 끝이 났다. 

첫 번째 인터뷰가 끝나 자마다 바로 두 번째 인터뷰가 시작되었다. 
두 번째 인터뷰는 Architecture 인터뷰. 
온 사이트 인터뷰에서 가장 까다로운 System design 인터뷰이다. 
첫 번째 인터뷰를 제대로 마치지 못해서 약간 멘붕 상태였지만 마음을 다시 가다듬고 인터뷰를 시작하였다. 
문제는 Airbnb system을 디자인하고 만드는 문제가 나왔다. 
조금은 뻔한 문제였지만 scalable & distributed system + data modeling에 집중을 한 문제였다.
어느 정도 예상은 한 문제라 오히려 첫 번째 인터뷰보단 수월하게 인터뷰를 이끌어 갈 수 있었다. 
system design 인터뷰는 인터뷰어와의 궁합이 중요한데 다행히 말이 잘 통하는 인터뷰어를 만나서 나름 만족스럽게 인터뷰를 마칠 수 있었다. 

바로 이어 지는 세 번째 인터뷰는 코딩 인터뷰
이번엔 동양인 여자 엔지니어가 인터뷰어로 들어왔다. 
이번 코딩 인터뷰는 조금 특이하게 진행이 되었다. 
MasterMind - Five-guess algorithm 문제가 나왔는데 문제를 푸는데 인터넷 사용 및 어떤 방법으로든 문제를 풀기만 하면 된다고 하였다. 
인터뷰어는 내가 문제 푸는 과정을 하나하나 지켜보고 어떤 걸 Search 해서 어떤 식으로 문제를 해결해 나가는지를 볼 것이라고 하였다. 
특히 인상적이었던 것은 MasterMind 보드게임 상대방이 될 서버가 미리 준비가 되어 있어서 내 솔루션이 직접 서버와 연결을 해서 game play를 할 수가 있었다. 
서버와 게임을 해서 performance를 체크하는 기능까지 있었다. 
결국 가장 효과적인 솔루션을 주어진 시간 내로 찾아내는 게 이번 인터뷰의 관건이었다. 
MasterMind이라는 broadgame을 모르고 있던 터라 문제 이해를 위해서 인터넷도 찾아보고 서버와 연결하는 Library도 찾아가며 문제를 하나하나 풀어나갔다. 
game server와 연결을 해서 게임이 진행되는 데까지 완성을 한 후 남은 시간 동안에는 가장 효율적인 방법을 찾는데 집중하였다. 
다행히 인터뷰어도 만족할 만한 솔루션을 찾을 수 있었고 이번 인터뷰도 무난하게 마칠 수 있었다. 

오전 3개의 인터뷰를 마치고 점심시간이 있었다. 
점심시간엔 조금 어려 보이는 동양인 남자 엔지니어와 점심을 함께 먹어주러 왔다. 
Airbnb가 첫 직장이라는 이 친구는 Airbnb에 입사 한지는 2년쯤 되었고 Infrastructure 팀에서 일하고 있다고 했다. 
이야기를 하면서 젊고 열정이 넘치는 느낌을 받을 수 있었다. 
점심 맛은 솔직히 좀 별로였지만 굉장히 건강할 것 같은 음식이 나왔다. 
점심을 마치고 남은 시간 동안 회사를 한 바퀴 돌아볼 수 있는데 역시나 무척 인상적이었다. 
지금까지 가본 회사들 중에서 오피스 인테리어나 디자인만 본다면 단연 최고였다. 


(사진: Airbnb)


(사진: Airbnb)


점심을 마치고 이어지는 2개의 인터뷰는 Cross Functional Interview
엔지니어가 아닌 직원들과 인터뷰를 하는 경우는 HR 인터뷰를 제외하곤 거의 본 적이 없는데 각각 30분으로 다른 테크니컬 인터뷰들에 비해 짧지만 2개나 스케줄이 되어 있었다. 
Airbnb만이 가지고 있는 독특한 인터뷰 방식인 듯 보였다. 


(사진: Airbnb)

2개의 인터뷰가 비슷한 방식으로 진행이 되었는데 주로 behavior나 회사의 culture fit을 보기 위한 질문들이 주를 이뤘다. 
회사가 가지고 있는 core value가 무엇인지 물어보고 어떤 식으로 core value에 본인이 fit 할 수 있는가를 묻는 질문들이 많았다. 
그리고 what is the admirable thing you have done for someone in last three months?  What is the most valuable thing that you have learnt? What does belong anywhere mean to you? How do you give back to the community / volunteering that you're passionate about? 같은 질문들도 있었다. 
테크 회사들에서 Behavior interview가 사라진 지 좀 됐는데 솔직히 말하면 이런 인터뷰가 어떤 변별력을 줄지는 잘 와 닿지는 않았지만 Airbnb는 독특한 인터뷰 방식을 가지고 있다는 인상을 주기에는 충분했다. 
그리고 테크니컬 한 인터뷰만 4일 내내 연속하고 있는 나한테는 이야기를 하듯 쉬어가는 듯한 인터뷰라 편안하게 인터뷰를 할 수 있었다. 
2개의 Cross Functional interview를 마치고 15분간 휴식이 있었다. 

하루 종일 쉴 새 없이 이어지는 인터뷰에 지칠 대로 지쳤지만 하나만 더 하면 끝난다는 생각에 힘을 내었다. 

마지막 인터뷰는 Experience Interview
이 인터뷰는 내가 과거에 했던 프로젝트들 중에 가장 challenge 했던 프로젝트를 설명하면서 질문들이 이어지는 방식으로 진행이 되었다. 
System design interview인데 거꾸로 내가 이미 했던 프로젝트를 인터뷰어에게 설명을 해주면서 질문들을 통해서 테크니컬 한 면을 깊게 파고드는 식으로 인터뷰가 진행이 되었다. 
사실 이런 방식의 인터뷰는 상대방이 나보다 훨씬 경력이 많은 경우가 아닌 이상 내가 직접 설계하고 만든 시스템을 설명하는 것이라 상대적으로 내가 좀 더 유리한 위치에서 인터뷰를 진행할 수 있었다. 
그리고 솔직히 다른 회사와의 온사이트 인터뷰에서도 비슷한 식의 인터뷰를 했던지라 나의 입장에선 같은 내용을 여러 번 반복을 해서 설명을 하고 들어오는 질문들에 답해주는 데에 충분히 연습이 되어있었다. 
그렇게 마지막 인터뷰도 만족할 만하게 하고 마칠 수 있었다. 

이렇게 해서 총 6개의 인터뷰를 통해 Airbnb와의 온사이트 인터뷰를 마칠 수 있었다.
유독 많은 사람들과 인터뷰를 하다 보니 유난히 길게 느껴졌던 인터뷰였다. 

온사이트 인터뷰를 보고 1주일 뒤에 리크루터로부터 연락을 받을 수 있었는데 첫 번째 완성을 미처 못 했던 코딩 인터뷰 때문에 Follow-up으로 technical phone interview를 하나 더 해야 한다고 하였다. 
그래도 탈락이 아는 거에 다행히라 생각을 하고 바로 schedule을 잡고 인터뷰를 진행하였다. 

Follow-up phone interview에서는 두 문제가 나왔는데 첫 문제는 주어진 String이 palandrome 인지 체크하는 function을 만드는 간단한 warm-up 문제였고 다음의 두 번째 문제가 본 문제였다. 


Given a list of unique words, find all pairs of distinct indices (i, j) in the given list, so that the concatenation of the two words, i.e. words[i] + words[j] is a palindrome.

Example 1:
Given words = ["bat", "tab", "cat"]
Return [[0, 1], [1, 0]]
The palindromes are ["battab", "tabbat"]
Example 2:
Given words = ["abcd", "dcba", "lls", "s", "sssll"]
Return [[0, 1], [1, 0], [3, 2], [2, 4]]
The palindromes are ["dcbaabcd", "abcddcba", "slls", "llssssll"]

(Ref: https://leetcode.com/problems/palindrome-pairs/description/)


Leetcode에서도 Hard에 해당하는 어려운 문제였지만 운이 좋게도 인터뷰 보기 전에 연습을 하면서 한번 풀어봤던 문제였다. 

덕분에 큰 어려움 없이 수월하게 문제를 해결하고 솔루션을 완성할 수 있었다. 
follow-up technical phone interview를 마친 후 바로 다음날 다행히 리크루터로부터 합격했다는 연락을 받을 수 있었다. 

다음 이어지는 Episode에서는 온사이트 인터뷰들의 대한 전반적인 정리와 Offer를 받는 자세한 과정들을 다뤄보도록 하겠다. 

Airbnb와의 온사이트 인터뷰 다음으로 Quora와의 온사이트가 있었지만 처음에 warm-up으로 인터뷰를 시작해서 잡힌 온사이트 인터뷰였는데 크게 관심이 없었던 데다가 일주일째 이어진 인터뷰에 너무 지쳐서 어쩔 수 없이 인터뷰를 보긴 했지만 어떻게 봤는지 기억도 잘 나지 않을 정도라 Quora와의 인터뷰 Episode는 생략하기로 하겠다. 

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