우선 소프트웨어 엔지니어 인터뷰 전체 흐름입니다
미국 실리콘 밸리의 많은 회사들을 익히 들어보셨을 겁니다. 구글, 애플, 엔비디아, 넷플릭스, 등등, 그 회사들의 인터뷰들 중 소프트웨어 엔지니어, 개발자의 인터뷰를 한 번 살펴보겠습니다.
개발자가 아니신 분들이 보기에는 꽤 어려워 보일 수 있습니다. 하지만 소프트웨어와 다른 분야여도 저렇게 인터뷰를 보는구나 하고 살짝 엿보실 수도 있고, 자신의 분야에 새로운 영감을 받으실 수도 있다고 생각합니다.
우선, 인터뷰는 대략 총 4가지로 나뉩니다. 한국에서도 몇 년 전부터는 이 4가지와 비슷하게 인터뷰를 진행합니다.
1. 알고리즘(algorithm) 인터뷰: 알고리즘 문제를 한 시간 내에 한두 문제를 풀어야 합니다. 예전에는 인터뷰 볼 때 화이트보드에 직접 써가면서 코딩을 했는데, 최근에는 보통 알고리즘 인터뷰 툴에 가서 직접 코딩을 합니다.
2. 시스템 디자인(system design) 인터뷰: 어떤 시스템을 디자인하라는 문제를 한 시간 내에 그림을 그려가면서 풀어야 합니다. 예를 들어서, 온라인 공연 티켓 판매 시스템을 다지인 해보아라 같은 질문입니다. 열린 질문으로, 사람마다 조금씩 다르게 디자인합니다.
3. 비해비어(behavior) 인터뷰: 비해비어는 한국어로는 행동인데, 어떤 상황에서 어떻게 행동했는가를 과거 경험을 예시로 하면서 물어봅니다. 예를 들어서, 팀장과 의견이 부딪치는 상황에서 어떻게 했었나, 가장 어려웠던 프로젝트는 무엇 때문에 어려웠나 같은 질문입니다.
4. 테크 딥 다이브(tech deep dive) 인터뷰: 자신이 이전에 했던 프로젝트 중에서 하나를 들고 와서 그 프로젝트를 어떻게 설계했는지, 왜 그런 결정을 했는지, 깊이 있게 물어봅니다. 내가 안 한 것을 했다고 거짓말하면, 질문 몇 번에 금방 들통납니다.
인터뷰 보는 사람의 레벨에 따라서, 시스템 디자인 인터뷰는 안 본다던가, 알고리즘 인터뷰를 두 번을 본다든가 하면서, 숫자에 조금씩 차이는 있을 수 있지만, 제가 지금까지 경험해 본 바로는 위 4개의 분류 중에서 하나에 들어갔습니다.
그럼 앞으로 각각의 인터뷰를 어떻게 준비하면 좋을지를 글로 올려보겠습니다.