brunch

You can make anything
by writing

C.S.Lewis

by 밍풀 Jul 19. 2024

미국 학부생 졸업자의 개발자 해외 취업 과정(2)

코딩 인터뷰 준비과정과 후기

이전 글 미국 학부생 졸업자의 개발자 해외 취업 과정(1) 에서 현재 회사에서 본 총 3라운드의 인터뷰를 어떻게 치렀는지 정리하겠다는 말로 마무리를 했다. 이후, 이미 4년 전의 일이어서 기억도 가물가물한 데다가 여러 사이트에 다른 개발자 분들의 인터뷰 준비과정과 경험이 자세히 적혀있기에 이 글을 적는 게 과연 도움이 될까 싶었다. 그래서 적기를 미루고 있다가 유종의 미를 위해 적어본다.




먼저 나의 경우, 학부생 때 코딩 관련 외부 경험이라고는 1) 무급 인턴 한 번 2) 해카톤 경험 한 번이 다였다 (그래서 그 외의 레쥬메 빈칸들을 교내 프로젝트 경험으로 채웠다).



졸업 2개월 전, 이미 오퍼를 받은 회사에서 코로나로 인해 오퍼가 취소되면서 어쩔 수 없이 졸업 후에도 계속 구직을 해야 되는 상황이 되어버렸다. 당시 OPT 비자를 살려야 됐기에 파트타임으로 일하고 있던 연구실 슈퍼바이저(supervisor, 한국어로 직역하면 ‘상사’ 또는 당시 나를 관리하던 매니저라고 소개할 수 있을 것 같다)에게 상황을 말씀드리고 졸업 이후에도 풀타임으로 일을 할 수 있는지 물어봤다. 다행히 그분께서 내 상황을 이해해 주시고 6개월 임시 풀타임 오퍼를 주셨다. 즉, 6개월 안에 다른 일을 못 구하면 나는 미국에서 다시 백수 신세가 되어버리는 것이었다. 비개발자 직무였음에도 슈퍼바이저께서 내 전공이 Computer Science임을 고려해, 코딩 관련 프로젝트 하나를 할 수 있는 기회를 주셨다. 덕분에 파이썬(python)을 이용한 간단한 코딩 프로젝트를 레쥬메에 work experience로 넣을 수 있게 됐다.
 



이후, 현재 회사에서 본 인터뷰는 다음의 과정으로 진행 되었다.


1. 폰 인터뷰 30분
2. 첫 번째 라운드: 코딩 + behavioral 인터뷰 (1시간)
3. 두 번째 라운드: 코딩 + behavioral 인터뷰 (3시간)

 
 처음 폰 인터뷰는 리크루터가 내가 지원한 레쥬메를 보고 간단히 검토하는 식으로 이루어졌다. early careers 프로그램으로 지원했기 때문에 간단히 "무슨 프로그래밍 언어 쓸 수 있어?"라는 질문을 시작으로 그 프로그래밍 언어와 관련해 어떤 프로젝트와 경험이 있는지, 기본 데이터 구조(data structure)등의 개념에 대해 물어봤다.
 


 폰 인터뷰를 보고 나서 하루 뒤, 리크루터에게서 다음 라운드로 넘어간다는 이메일을 받았다. 이메일에는 인터뷰 라운드 구성과 어떤 날짜가 편한지 여러 날짜를 옵션으로 줬다. 폰 인터뷰를 본 시점으로부터 약 일주일 뒤에 첫 번째 라운드 인터뷰를 잡았다.


| 첫 번째 라운드 인터뷰


코로나 시기였기에 이메일에서 미리 첨부한 줌 링크를 타고 들어가면, 간단히 서로를 소개를 하는 시간을 가진다. 그래서 약 3줄로 짧게 요약하여 현재 어느 연구실에서 무슨 일을 하고 있으며 그 밖에 어떤 경험들이 있는지를 나눈 다음, 바로 코딩 문제로 넘어갔다.

 


 첫 번째 코딩 문제는 단순히 원하는 결과 값이 나오도록 특정 라인을 수정하는 문제였다. 나와 인터뷰한 엔지니어가 말해주기를, 13살 자기 아들이 이 문제를 가지고 고민을 하길래 들고 왔다고 했다. 다행히 5분 고민하는 과정을 거치고 문제를 풀었다. 이거는 워밍업 문제였는지 그 문제를 풀자마자 다른 문제를 들고 오셨다. linked list와 관련된 문제였는데 운이 좋게도 릿코드에서 비슷한 문제를 풀었던 것이 기억났다. 그래서 그 문제도 10분 안에 풀 수 있었다. 인터뷰어가 time complexity와 space complexity가 어떻게 될지 물어봐서 그것에 대한 설명을 했고 당시 내가 푼 답이 제일 optimal 한 경우였기에 어떤 식으로 더 time이나 space complexity를 개선할 수 있을지에 대한 팔로우업(follow up) 질문은 없었다.
 


*코딩 인터뷰 문제 풀 때 팁

 인터뷰어한테 내가 코딩 문제를 어떤 식으로 생각하고 어떻게 풀 건지 함께 말하면서 했으면 좋을지, 아니면 다 풀고서 그 과정을 설명해 주면 좋을지 미리 물어보는 것도 좋다. 흔히 ‘speak out loud’라고, 내가 머릿속으로 생각하는 것을 인터뷰어도 알 수 있게끔 설명하면서 문제를 풀어가는 게 좋다고 하는데, 어떤 인터뷰어들은 후자의 방식으로 나중에 깔끔하게 말해주기를 선호하는 경우도 있었다.


코딩 인터뷰가 비교적 순조롭게 끝난 뒤 인터뷰어가 내 레쥬메를 검토하며 내가 레쥬메에 나열한 직무 경험에 대해 아주 상세하게 질문하기 시작했다.
 
 예를 들면, 당시 내가 연구실에서 한 python 관련 프로젝트에서 왜 그 library를 썼는지, 그 library 말고 다른 것을 쓸 생각은 왜 안 했는지, 또 내가 고안해 낸 방법 말고 다른 옵션은 없었는지, 있었다면 왜 그 옵션을 선택하지 않았는지 등이었다. 한 마디로 내가 한 프로젝트의 모든 과정에서 겪었던 어려움과 어떤 방식으로 해결했는지 들을 알기 원했다.



질문 폭격기와 같은 시간 속에 살짝 당황했지만 그래도 인터뷰어가 "내가 너의 프로젝트를 잘 몰라서 그러는 것이니 내가 자세히 물어봐도 이해해 달라."라고 말해줘서 비교적 편하게 최대한 기억을 끄집어내어 설명했다. 1시간으로 예정되었던 코딩 인터뷰는 behavioral question 시간이 약간 오버되면서 1시간 20분에 끝났다.



다행히 내가 답변한 것이 인터뷰어의 마음에 들었는지 인터뷰를 본 다음날 리크루터한테 다음 라운드로 넘어간다는 이메일을 받게 됐다. 이번이 마지막 라운드였다.





첫 번째 라운드의 경험으로 코딩 문제와 behavioral interview를 더 다듬을 필요가 있다고 느껴서 약 3주 뒤에 인터뷰를 잡았다.



그 3주 동안은 릿코드를 총 250개 풀고 내가 보기로 한 회사 태그된 문제를 제일 최신 빈도수의 문제만 반복해서 2번, 3번 다시 풀어보는 식으로 준비했다. Behavioral question은 앞의 인터뷰 내용을 바탕으로 내가 적은 모든 프로젝트와 일 경험에 대해 내가 생각해 낸 대안책들을 다 나열하고 왜 첫 번째로 가게 되었는지 그 과정에서 어려움은 어떤 게 있었는지 STAR 기법(Situation, Task, Action, Result)에 더해 생각할 수 있는 팔로우업 질문들까지 구글링을 검색하며 예상 답변을 작성했다.


 
 이때 구글닥에 북마크 형식으로 각 프로젝트를 섹션마다 정리해 둔 게 나중에 계속 답변을 연습하는데 큰 도움이 되었다. 이후 pramp라는 사이트에서 무료 인터뷰 연습을 2번 정도 했다 (이 사이트는 인터뷰 전문가가 아닌 나와 같이 구직을 하는 사람들이 랜덤으로 매칭되어 서로의 레쥬메를 봐주며 예상 질문을 물어보고 답변할 수 있도록 연습할 수 있었다)




| 두 번째 라운드 인터뷰


대망의 인터뷰 당일. 1시간 전까지도 풀이를 까먹은 코딩 문제들을 최대한 반복해서 보며 헷갈리는 문법 외우기에 전념했다.



코딩 인터뷰는 각각 1시간씩 하고 중간에 10분 쉬는 식으로 되었다. 방식은 첫 번째 인터뷰와 동일하게 코딩 인터뷰 문제 풀이 30분, behavioral question 30분으로 진행되었다. 나를 인터뷰해주셨던 분들은 각각 data engineer, software engineer lead, software engineer였다.



처음 1-2분은 간단하게 서로에 대한 소개로 워밍업 하는 시간을 가지고 먼저 코딩 인터뷰로 넘어갔다. 이 세 시간 동안 운이 좋았던 것이 코딩 인터뷰에 나온 인터뷰 문제들이 다 내가 릿코드에서 푼 문제를 약간씩 변형한 문제들이었다. 그래서 당황하지 않고 내가 풀었던 문제들에서 제일 optimal 한 방식으로 풀었던 문제들을 time complexity와 space complexity까지 정확하게 설명할 수 있었다. 어떤 분과의 인터뷰였는지 기억은 안 나는데, 3명 중 한 분과는 시간이 남아서 30분 안에 두 문제를 풀었던 걸로 기억한다. 나온 문제들은 릿코드에서 미디엄 레벨 정도의 문제였다.
 


 코딩 인터뷰를 비교적 순조롭게 끝내고 behavioral question도 구글닥에 준비를 하고 이전에 pramp로 준비한 것들이 도움이 많이 됐다. 일방적으로 나만 대답하는 것 말고 서로가 서로를 알아가는 과정을 가졌다. 나는 인터뷰어에게 어떻게 이 회사에서 일을 하게 됐는지 등을 물어봤고 그에 대한 대답에 공감하며 나 또한 내가 왜 이 회사에 지원한 것에 특히 애정이 가게 되었는지 회사의 자체 소프트웨어를 언급하고 개인적인 에피소드들을 더해 설명했다.
 


약 3시간 반의 인터뷰를 끝내고 나니 온몸에 진이 빠졌다. 3시간 동안 계속 얘기하니 목이 말라 물을 벌컥벌컥 마셨다. 한 마디로, "불태웠다".
 




마지막 인터뷰 라운드로부터 약 일주일 뒤, 리크루터한테 전화가 왔다. 떨리는 마음으로 받은 전화의 첫마디는 "Congratulations!"였다.


됐다. 합격이었다.

5월부터 11월까지 지속된 길고 긴 것 같은 6개월의 구직도 끝이 났다.

 
 

그날의 감정은 3년 반이 지난 지금도 생생하다. 온몸이 붕 뜨고 세상을 다 가진 것 같은 느낌. 길고 긴 터널을 드디어 뚫은 기분. God의 '길'을 수십 번 들으며 매일 불안한 마음을 다잡고 이른 새벽부터 답답한 마음에 산책을 하고 러닝을 했던 순간들이 파노라마처럼 지나갔다.
 


지나고 돌이켜보면 운으로 점철되었던 시간이었다. 갑자기 터진 코로나로 인해 취소된 오퍼 덕분에 더 제대로 코딩 인터뷰를 할 시간을 가지게 됐고 특히 내 상황을 이해해 주신 슈퍼바이저 덕분에 미국 내에서 생활비를 벌면서 레쥬메에 한 줄 더 적을 수 있는 일 경험까지 얻었다. 200군데 레쥬메 중 딱 한 군데 지금 회사만 합격을 했으니, 그 오퍼가 없었다면 아마 한국으로 돌아가서 다시 구직을 해야 되었을 것이다.

 
 

매일 잠들기 전 릿코드에서 interview experience로 오퍼 받은 과정들을 적은 후기를 볼 때면 나도 괜히 '링크드인에 "software engineer at ~"이라고 적고 릿코드에 내 인터뷰 경험 작성해야지!'라고 상상했는데 그 상상이 이루어졌다.

 
 

그런 시간들 덕분인지, 아무리 미국에서 가족 없이 지내는 것들이 때로는 외롭고 공허하고 이방인처럼 느껴질 때라도 감사함은 잃지 않게 된다. '나 그렇게까지 여기 있고 싶어 했고 지금 일도 하고 있잖아.'라는 생각을 하면 투덜대고 불평하던 입이 합죽이가 된다.



물론 현재의 결과가 만족스럽기에 과거를 아름답게 회상할 수 있는 것 같다.
그러니 언제나 가져야 될 마음은, 나는 잘하고 있고 더 잘 될 거다.

지금은 나중을 더 빛나게 할 순간들이다.



뭐 그렇게 약간은 오글거리지만 담백하게 마무리 짓고 싶다.
 
 


매거진의 이전글 미국 개발자 이야기: 한 달간의 프로젝트가 끝났다
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari