최종 면접이 다섯 시간이라고요?
영국에서 풀타임 구직러로 지낸 지 2주째. 백수였음에도 불구하고 어느 때보다 바쁜 하루하루를 보냈다. 많은 회사와의 면접을 동시에 진행한다는 건 쉬운 일이 아니었다. 회사마다 면접 일정이나 직무 정보가 헷갈릴 수 있기 때문에 노트 앱과 플래너를 사용해 정리하고, 면접이 하나씩 잡힐 때마다 폭풍 검색을 통해 그 회사에 대한 조사를 했다. 하지만 그렇게 바쁘게 일정을 잡고 꼼꼼히 사전 조사를 해서 1차 면접을 잘 통과한다고 해도 2차 기술 면접 단계에서 떨어지는 경우가 수두룩했다. 준비되지 않은 개발자에게 런던의 기술 면접은 너무나도 어려웠다.
그 와중에 운 좋게 한 회사에서 2차 면접을 통과해 다음 단계인 최종 면접에 초대 받았다. 최종 면접은 직접 회사 사무실에 가서 보는 면접이라 on-site 면접이라고도 불리는데, 보통 짧으면 3시간, 길면 5~6시간까지도 진행된다. 이 면접은 상당히 길기 때문에 지원자뿐 아니라 회사에서도 많은 시간과 공을 들이는 면접이다. 회사에서 시간은 곧 돈이므로 아무 지원자나 불러서 장시간의 면접을 진행하는 건 상당한 낭비다. 그래서 2차 기술 면접에 어느 정도 난이도가 있는 코딩 테스트를 제출해 지원자가 최종 면접에 부를 만한 실력을 갖춘 사람인지 판단한 뒤 이를 통과한 지원자만 최종 면접에 초대한다.
최종 면접은 한 시간마다 다른 면접관과 다른 방식으로 진행되는데, 일반적으로 이 중 인성 면접은 한 시간이 전부이고 나머지는 모두 기술 면접이다. 이 단계에서 개발자가 흔히 접할 수 있는 기술 면접은 대표적으로 세 가지 방식이 있다.
1. 실시간 코딩 면접
실시간으로 면접관이 내는 문제를 코드로 구현하는 방식. 2차 면접과 비슷한 형식이지만 문제의 난이도를 높이거나 스타일을 바꿔서 낸다.
2. 이론적인 기술 질문
코딩 문제가 아닌 이론적인 기술 질문을 여러 개 묻고 답하는 방식. 컴퓨터 과학 지식부터 특정 프로그래밍 언어 관련 지식까지 광범위한 분야에서 다양한 질문이 나온다.
예) 브라우저에 www.google.com을 치면 페이지가 로딩되기까지 뒤에서 어떤 일들이 일어나나요?
3. 시스템 설계
마찬가지로 작은 부분의 코딩 문제가 아니라 전체 시스템을 어떻게 만들 것인지 설계하는 방식. 보통 문제는 굉장히 간단하게 내지만, 제대로 설계하기 위해서는 지원자가 여러 가지 질문을 통해 더 자세한 요구 사항을 알아내야 한다.
예) 트위터 시스템을 설계하시오.
내가 초대받은 최종 면접은 5시간 짜리였다. 이 단계는 오랜 시간이 소요될 뿐 아니라 난이도도 2차 면접보다 훨씬 높아서 더 많은 공부가 필요한데, 당시 나는 다른 회사들과 1, 2차 면접을 계속 보고 있었기 때문에 이 면접 준비에 할애할 시간이 턱없이 부족했다. 그렇다고 모든 걸 내려놓고 합격할지 아닐지도 모르는 면접에 몰방할 수는 없었다. 여러 면접을 동시에 준비하려니 몸이 열 개라도 부족할 판이었다. 결국 준비가 충분히 되지 않은 상태로 면접일이 다가왔고, 긴장되는 마음으로 나의 첫 최종 면접을 볼 회사 사무실에 도착했다.
첫 시간은 이론적인 기술 질문을 하는 시간이었다. 긴장된 상태로 앉아있는 나에게 시작부터 예상치 못한 어려운 질문들이 쏟아졌다. 차라리 코딩 문제면 당장 답을 몰라도 뭐라도 한 줄 적으며 시간을 끌 수 있는데, 말로 대답해야 하는 면접이라 더 까마득했다. 답은 몰라도 어떻게든 대답은 해야 했기에 전 회사에서 일했던 경험을 더듬어보며 비슷한 답안이라도 찾으려고 안간힘을 썼다. 그렇게 해서 얼추 대답한 질문도 있었지만 감도 못 잡고 헤맨 질문들이 대부분이었다. 면접관이 이것도 대답 못 한다고 나를 형편없다고 생각할 걸 상상해보니 부끄러운 마음에 얼굴이 빨갛게 달아올랐다. 쥐구멍이라도 있으면 숨고 싶은 심정이었다. 한 시간이 열 시간처럼 길게 느껴졌다.
‘아, 집에 가고 싶다…’
면접 첫 시간이 끝나고 제일 먼저 든 생각이었다. 어떻게든 질문에 대답하려고 바쁘게 머리를 굴리다 보니 한 시간 안에 모든 체력이 다 소진된 것 같았다. 한 시간 동안 쉬지 않고 달리기를 해도 이보다 힘들지는 않을 것이다. 이렇게 힘겹게 한 시간을 넘겼는데 이런 면접이 네 시간이나 더 남아 있다는 사실이 미친 듯이 막막하게 느껴졌다. ‘어차피 망한 것 같은데 그냥 포기하고 집에 간다고 할까?’ 하고 진지하게 고민하던 찰나에 다음 면접관이 들어왔다. 더 이상 고민할 시간이 없었다. ‘그래, 기왕 시작한 거 끝까지 해야지.’ 다시 정신을 차리고 마음을 다잡았다.
마음을 다잡았다고 면접이 쉬워질 리는 없었다. 남은 시간 동안 실시간 코딩 면접 두 시간, 시스템 설계 면접 한 시간, 그리고 인성 면접 한 시간을 봤다. 첫 시간만큼 괴로운 시간이 계속되었다. 한참 어려운 기술 면접에 허덕이다가 마지막 시간에 본 인성 면접은 오히려 쉬는 시간처럼 편하게 느껴졌다. 이 단계에서 받은 “프로젝트의 우선순위는 어떻게 정하나요?”나 “팀 내에 갈등이 생기면 어떻게 해결하나요?”와 같은 질문들은 내 경험을 바탕으로 솔직하게 대답하면 되는 것들이라 어렵지 않았다. 모든 면접이 이렇게 경험과 솔직함으로 해결되는 거라면 얼마나 좋을까?
면접이 끝나고 사무실을 나오며 나는 확신했다. 이 면접은 떨어졌을 거라고. 준비되지 않은 상태로 장시간의 기술 면접을 본다는 게 얼마나 힘든 일인지 몸소 경험으로 깨달았다. 도망치고 싶은 순간이 한두 번이 아니었다. 끝까지 마친 것만으로도 대단하게 느껴질 정도였다. 집에 도착하니 그간의 긴장이 다 풀려 온몸의 힘이 빠지는 느낌이 들었다. 침대에 털썩 주저앉아 거울을 보니 몇 시간 만에 눈 밑 다크서클이 한층 짙어져 보였다. 그래도 온 힘을 다해서 할 수 있는 만큼은 다 했다는 걸 짙어진 다크서클이 증명해 주었다. 면접 결과는 좋지 않더라도 힘든 하루를 보낸 오늘만큼은 스스로에게 이 말을 꼭 해주고 싶었다.
“고생 많았어. 다음엔 더 잘할 거야.”
엄지현 님이 브런치에 게재한 글을 편집한 뒤 모비인사이드에서 한 번 더 소개합니다.