joshyun
268
2022-01-04 17:06:33
2
835

북미 인턴쉽 얘기 (2)


안녕하세요. 두번째로 다룰 북미 인턴쉽 얘기는 폰 스크리닝부터 시작할까 합니다.

폰스크리닝, Phone Screening, 은 전화를 통해 지원자가 최소한의 자격을 갖추고 있는지를 확인합니다. 하는 회사도 있고 하지 않는 회사도 있어서 어느쪽이 대세다 라고 할 순 없구요. 마찬가지로 '최소한의 자격'이라는게 팝 퀴즈를 물어보는 곳도 있고, 인성 면접을 겸해서 하는 곳도 있습니다. 

제 경험을 토대로 말씀드리자면, 제가 면접 본 회사들 중에서 폰 스크리닝을 하는 회사는 마이크로소프트(이하 MS)와 라이엇 게임즈가 대표적이었습니다. 이중 MS는 조금만 찾아보면 질문지 리스트를 구할 수 있는데, 제가 2019년부터 매년 면접봐온 경험으로는 항상 정해진 틀에서 거의 벗어나지 않았었네요. 이는 MS의 경우 이 단계의 면접을 Technical Recruiter가 하는데, 이들은 학교에서 컴퓨터 공학과 거리가 먼 전공을 하는 경우가 많기 때문에 심도있는 질문을 하지 않고 답변 내용을 기록해서 보고만 하는 역할을 합니다.

대략 물어보는 내용을 정리하면,

자기소개, 프로젝트, 어려움 극복 등 보통 인성면접에서 하는 질문들의 경우 좀더 세부적으로 물어봤었습니다. 예를 들면 그냥 '자기 소개를 해보세요'가 아니라 '경력 중심으로 자기 소개를 해주세요' 라던가, '자랑스러운 프로젝트에 대해 얘기해보세요' 가 아니라 '프로젝트에서 특이한 데이터 구조를 사용한 경험이 있으면 얘기해보세요'나 '프로젝트에서 테스트를 어떻게 했는지 얘기해보세요' 라는 식으로요.

그 외에 통상적으로 물어보는 테크 관련 질문으로는

- What are the three primary methods of binary search tree traversal?

- What is your favorite/high efficiency language

- The biggest differences between Python and JavaScript (앞선 favorite language에 이어지는 질문입니다)

- Do you know C and C++, C#

- Explain a non-technical application of recursion?

- The biggest differences between thread and process

- What is good code and great code?

등이 있습니다. 크게 어려운 문제도 아니고 여기서 추가로 더 깊게 들어가지가 않기 때문에 준비하는게 어렵진 않았었네요.

대략 이런 내용의 면접을 30분간 전화로 합니다. 가장 어려운 점은 역시 얼굴을 볼 수 없는 상태로 전화로만 알아들어야 한다는건데, 보통 tech. recruiter들은 발음이 그래도 나쁘지 않은 편이라 할만 합니다. 

반면 라이엇 게임즈의 경우 이런 테크 관련 질문을 하나도 하지 않고 behavioural 질문들만 엄청 받았던 기억이 납니다. 경력 하나를 잡고 거기서 한 일, 했던 프로젝트, 잘한 일, 못한 일 등등.. 이런게 저는 더 힘들었네요.

의외로 많은 사람들이 이 단계에서 탈락합니다. 저도 MS 면접을 여러차례 봤었는데 이 단계에서 한번 떨어졌고, 라이엇 게임즈에서도 떨어졌었습니다. 보통 말을 버벅이거나, 잘 못알아듣고 계속 질문을 하거나, 뭐 그런 것들이 마이너스가 아니었나 생각합니다 ㅠㅠ

오히려 개발자 면접을 통과한 사람을 대상으로 이런 인성면접을 하는 경우도 있습니다. 제 경우 올해 봤던 MS 최종면접과 WealthSimple의 최종면접 등이 떠오르는데요. 이 경우는 테크 스킬이 충분하다고 생각되는 사람을 대상으로 하는 면접이기 때문에 해당 지원자가 실제로 일할 부서의 팀장급 되는 사람이 면접을 봅니다. 나중에 따로 얘기하겠지만 오히려 개발자 면접은 2-3년차가 보는 경우가 꽤 됩니다. 물어보는 내용은 대동소이하지만 개발자가 보는 면접이기 때문에 좀더 깊게 물어본다든지 하는 경우가 있습니다. 예를 들면 MS 면접때 제가 발표한 프로젝트는 학교 프로젝트로 8명의 팀이 만들었고 제가 백엔드 리드를 했었는데, 그때 디자인 결정을 내렸다고 하니 -> 어떤 디자인 결정을 했냐 -> 왜 그렇게 했냐 등등으로 파고들어가는 형태의 질문을 받았습니다.
또한 실제로 일할 사람과 면접을 하는 것이다보니 저도 회사를 면접본다고 생각하고 자유롭게 물어보기도 했었습니다. 웰스심플 면접때는 '어차피 안갈건데 뭐~' 라는 마인드로 보다보니 면접관한테 '지난 회사에서 지금 회사로 옮긴 이유는 뭐냐', '대학 안가고 고졸 후 바로 커리어 시작했던데 혹시 자기개발 어떻게 하고 있냐' 뭐 이런 질문들을 했었습니다-_-;


개발자 면접

코딩 테스트에서 바로 이 단계로 가는 경우도 있고, 폰 스크리닝을 거쳐 이 단계까지 오는 경우도 있습니다. 보통 줌 띄워서 얼굴 보고 + CoderPad 같이 실시간 공유 가능한 라이브 코딩 플랫폼을 씁니다. Chime이라던가, MS Teams라던가 뭐 자기네들거 있으면 자기네들용 미팅 플랫폼 쓰기도 하구요. 1시간 통으로 코딩 문제만 푸는 경우는 잘 없고 보통 자기소개 + 팀/회사 소개 하고 지원자도 자기소개하고, 간단한 질문 몇개 하기도 하고 문제로 넘어가기도 하고, 그냥 자기소개 하고 바로 문제풀이 들어가기도 합니다.

여기에 들어오는 사람은 개발자가 들어오는데 회사가 큰 경우 같이 일할 사람이 들어오진 않습니다. 예를 들어 아마존 면접볼 때는 2019년에는 시애틀 알렉사쪽 DB하는 사람이 왔고 2021년에는 보스턴에서 AWS쪽 뭐 하는 분이 왔었어요. 그리고 가끔 Shadowing이라는 명목으로 한사람 더 들어옵니다. 이 사람은 그냥 구경하러 오고 따로 뭐 질문하거나 하진 않아요. 워낙 면접을 많이 봐야 하다보니 풀타임 채용하면 바로 면접관 교육시켜서 면접하라고 시키는데 실제 면접관 들어가기 전 예행연습 같은거라고 합니다.

문제의 유형은 회사마다, 해마다 달라집니다. 예전엔 정말 대다수의 회사들이 천편일률적으로 리트코드 스타일의 문제를 내곤 했었는데 올해(2021년-) 는 좀 확연히 바뀌는걸 느끼고 있습니다. 1편에서 코딩 테스트 파트에서도 언급했는데 실제 현장에서 쓰일법한 문제를 내곤 합니다.

Stripe에서 나왔던 문제를 예로 들면, http encoding단계에서 처리하는 클라이언트의 accept-language header와 서버의 supported language를 파라미터로 주고, 이를 선호도에 따라 필터링/소팅해서 리턴하는 문제를 줍니다.

예를 들어 parse라는 펑션이 있고 parse("en-US, fr-CA, fr-FR", ["fr-FR", "en-US"])가 들어오면 ["en-US", "fr-FR"]로 리턴을 하는 겁니다. 이 단계를 풀면, 약간 좀더 어렵게 문제를 바꿉니다. 클라이언트 헤더가 지역코드를 제외하고 그냥 랭귀지만 보내는거죠.

3단계는 와일드카드가 들어오면 어떻게 할래? 입니다. "*" 케이스를 처리하라고 합니다.

4단계까지 가면 이제 헤더에 q-factor가 붙어서 명시적으로 선호도를 나타냅니다. fr-FR;q=0.5 라는 식으로요.

혹은 간단한 문제를 내고 코드를 어떻게 꼼꼼하게 짜는지, 테스트 케이스를 보는지, OOP는 좀 아는지 등을 보기도 합니다. 웰스심플 면접이 이런 방식인데, 나름 유명한 화성 탐사선 문제를 냈었습니다. 탐사선에게 left(), right(), go() 등의 명령을 내리면 현재 좌표와 보고 있는 방향을 (0, 0, N) 등으로 리턴하는 식으로요. 이런 문제를 구현하고 나면 이제 "클래스로 만들어봐라, 바운더리가 있어서 음수 좌표로 못가게 하면 어떻게 할거냐, 장애물이 있으면 어쩔거냐" 등등으로 문제를 점점 어렵게 만듭니다.

MealMe라는 실리콘밸리의 스타트업의 면접을 볼 때 접한 문제도 재밌었는데요. 걔네는 배민같은 배달업체들의 리스트를 받아다가 개중 수수료가 싼 업체, 배달 시간이 가장 빠른 업체 등을 나타내 주는 사업을 하는 회사였습니다. 그때 받은 문제는 레스토랑의 오픈시간이 만약 10시부터 오후 7시 반이면 이걸 문자열이나 int로 보내면 너무 방대해지니 15분 단위로 비트스트링으로 끊어서 자정이면 0000 0000, 새벽 1시면 0000 0100 뭐 이런 펑션을 하나 만들어라고 하더라구요.

그 외에 저는 접해보지 않았지만 HashMap을 처음부터 만들어봐라 뭐 이런 문제가 아마존에서 나오기도 했다고 합니다. 제가 아마존 면접볼 때는 심플하게 트리 레벨 오더 같은걸 시키던데.. 확실히 최근들어 트렌드가 알고리즘 어려운걸 물어보는걸로는 한계가 있다고 생각했는지 점점 "재밌는" 문제로 바뀌는 것 같긴 하네요.


음.. 어지간하면 2편으로 끊고 싶었는데 뭔가 쓸말이 많네요. 3편에서는 오퍼와 회사생활, 그리고 코비드에 대해 써볼까 합니다. 사실 당장 내일 Amplitude라는 최근 상장한 회사의 여름 인턴 면접도 있고 해서 이걸 쓰고 있을때가 아니긴 한데 ㅠㅠ 어떻게든 되겠죠. 다음 글에서 뵙겠습니다.

3
  • 댓글 2

  • JacksonJ
    2
    2022-01-06 00:32:50

    1, 2편 정말 흥미 진진하게 잘봤습니다ㅎㅎ

    좋은 글 제공해주셔서 감사합니다..

    혹시 질문 하나 드려도 괜찮을까요..?

    영어에 대한 실력은 어느정도로 있으면 될까요?

    단순 소통 정도로는 많이 힘들겠죠??

  • joshyun
    268
    2022-01-06 02:02:28

    올해가 2022년이고, 제가 10년전인 2012년 하반기부터 한국에서 회사 다니면서 영어 공부를 '처음으로' 시작했습니다. SDA라는 어학원의 1단계부터 시작했는데, 정말 농담이 아니고 "I am a boy"부터 공부했어요. 그 때가 서른이었습니다.

    아직도 영어가 많이 부족하고 항상 뭐 말할 일 있으면 시간 들여서 준비하고 있습니다. 단순 소통 정도가 어느정도인지는 잘 모르겠지만 저는 저 어학원에서 1년동안 1단계-6단계까지 공부를 했고, 그 뒤 1년간 아이엘츠 공부를 해서 제너럴 6.0를 받았고, 이후 캐나다에서 ESL을 1년간 배우고 아이엘츠 아카데믹 6.5, 이후 대학에서 쭉 영어로 수업을 들으면서 1학년 영어, 3학년 영어 과목을 추가로 이수했습니다.

    제 경우는 영어를 먼저 배우고 그 영어로 컴싸를 공부한 케이스이기 때문에 면접을 볼 때도 컴싸가 부족해서 탈락했지 영어가 부족해서 탈락했다라고는 딱히 생각하진 않습니다. 그 반대의 경우는 잘 모르겠지만, 충분히 실력이 좋으면 영어가 좀 부족한건 다들 이해하고 넘어가는 분위기이긴 하더라구요.

  • 로그인을 하시면 댓글을 등록할 수 있습니다.