DevOwen의 구직 이야기 Ch4. 기술 인터뷰
코딩 테스트나 사전 과제 전형에 통과하고 나면, 그 다음으로 기술 인터뷰를 보게 된다. 나 같은 경우 온사이트 기술 인터뷰와 스크리닝 화상(또는 전화) 인터뷰 두 가지 형태로 보았던 것 같다. 요즘에는 코로나 바이러스 때문에 기술 인터뷰를 화상으로 보는 회사들도 있다.
스크리닝 인터뷰
스크리닝 인터뷰는 보통 온사이트 기술 인터뷰 보기 전에 지원자의 실력을 체크하는 용도로 30분~1시간 정도로 가볍게 진행한다. 뭔가 과제를 주는 경우보다는 이력서를 기반으로 질문을 하거나, 지원 분야에 관련된 기본적인 직무 지식을 물어본다. 나 같은 경우 웹 프론트엔드 분야로 지원을 했었는데, HTML, CSS, JS, 브라우저 및 웹 전반, FE 관련 라이브러리 등등에 대해서 물어보았던 것 같다. 간혹, 자료구조, 알고리즘, 운영체제 등 CS 기본기에 대해서 묻는 곳도 있으니 비전공자의 경우 따로 학습을 해 두는 편이 좋다.
사실 스크리닝 인터뷰 초반에 나는 내가 잘 모르는, 또는 한 번도 들어보지 못한 내용을 질문받은 적이 있었다. 그럴 때 나는 면접 도중에는 잘 모른다고 솔직하게 이야기 하고, 내가 아는 범위 내에서만 최대한 설명하려고 노력했다. 그리고 나서 그 내용을 적어 두었다가 면접 이후에 제대로 공부했다. 프론트엔드 개발자에게 묻는 질문 내용이 회사마다 엄청 다르고 그렇지는 않다. 그렇기 때문에 잘 모르는 내용을 질문 받았을 때 너무 당황하거나 낙심하기 보다는, 모르는 건 모른다고 솔직하게 인정하고 그 부족한 부분을 채운다는 생각으로 면접 이후에 노력해야 한다. 그런 측면에서 면접을 보면 볼 수록 실력이 쌓이기 때문에, 더 가고 싶은 회사 면접은 나중으로 미루는 편이 좋기는 하다.
라이브 코딩을 보는 회사도 있었고, 정말 빡세게 질문하는 회사도 있었다. 스크리닝 인터뷰라고 가볍게 볼 수 있는 건 절대 아니므로 철저하게 준비하고 가는 것을 추천한다. 만만하게 봤다가 멘탈이 깨진 적이 여러차례 있었기 때문이다. ㅠㅠ
질문 리스트와 간단한 답변 내용을 아래 블로그에 정리해 두었으니 참고하길 바란다.
- <FE면접질문> #1. 웹 브라우저 & HTML
- <FE면접질문> #2. CSS
- <FE면접질문> #3. JavaScript (Part1)
- <FE면접질문> #4. JavaScript (Part2)
기술 인터뷰
보통 스크리닝을 통과하면 그 다음 전형이 기술 인터뷰이지만, 코딩테스트나 사전과제 이후에 바로 기술 인터뷰로 바로 가는 곳들도 많다. 기술인터뷰는 짧게는 1시간 길게는 3시간 정도로 진행이 되며, 현장에서 과제를 주는 경우도 있고, 문제를 주고 풀어보라고 하는 경우도 있다. 스크리닝 인터뷰를 거치지 않은 경우에는 이력서에 대한 질문이나 해당 직무 실무 역량을 물어보는 질문도 종종 하는 경우가 있다.
나의 경험을 비추어 이야기를 해 보면 7곳의 크고 작은 회사 기술 인터뷰를 보았다.
A사는 교육 플랫폼 서비스를 하는 에듀테크 회사였다. A사는 코로나로 인해 직원들이 재택 근무를 하고 있었고, 화상으로 기술 인터뷰를 진행했다. 개발자 세 분과 면접을 진행했다. 간단한 웹 어플리케이션을 만드는 사전 과제가 주어졌었고, 그 과제 소스 코드를 보면서 여러가지 질문들을 했던 것으로 기억한다. 코드를 전체적으로 어떤 관점으로 설계를 하였고, 왜 이 함수를 여기서 썼고 등등. 사실 큰 의미 없이 코드를 짠 경우가 많았는데 앞으로 그렇게 하면 위험하겠다는 생각이 들었다. 그리고 CS 기본기에 대한 질문들을 이어 나갔다. 절반 정도는 대답을 하고 절반 정도는 대답을 하지 못 했던 것 같다. 컴퓨터 구조의 경우 학부에서 수업을 듣지 않았던 과목이었고 별도의 공부를 하지 않았어서, 제대로 대답을 할 수 없었다. 0.1 * 0.2가 0.02가 아니라 0.0200...4가 되는지를 자료구조 관점에서 설명을 하라고 했는데 제대로 대답하지 못했다. CPU와 GPU의 차이, thread-safe 등도 어렴풋이 알고 있었으나 제대로 대답하지 못했던 것 같다. 결과는 불합격.
B사는 인공지능 기반 화상면접 솔루션 회사였다. 개발자 두 분과 인사팀 한 분과 면접을 진행했다. 이력서를 보고 나의 학점을 물어봤던 유일한 회사였다. 그리고 대학원을 가라는 불필요한 오지랖(?)을 보여주시기도 했다. 기술 면접인지 인성 면접인지 가끔 혼동이 될 때도 있었다. 전 회사에서 어떤 점이 힘들었고, 왜 나오게 되었고 등등을 물어보는데, 물론 필요한 질문은 맞지만 기술 인터뷰에 맞는 질문은 아닌 것 같다는 생각도 들었다. 질문도 되게 추상적이었다. React에 대해 아는 대로 설명해 보시오. 이런 식이었는데, 알고보니 FE 개발자가 한 명도 없어서 혼자서 다 해야 하는 상황이었던 것이다. 결과적으로 면접 경험이 좋지 않았다. 결과는 불합격. 그런데 붙었어도 안 갔을 것 같다.
C사는 자동차 부품 판매 관련 회사였다. 면접관이 학교 선배였고 일대일로 진행했는데 여러가지 스몰 토크로 편안하게 면접을 볼 수 있었던 것 같다. 이력서를 통해 나의 과거 이력들과 사용할 수 있는 스택들에 대해 물어보시고 나서 간단한 알고리즘 테스트를 진행했다. 나는 Java가 익숙해서 Java로 현장에서 주어진 문제를 풀고 말로 설명하는 식으로 진행했다. 문제는 정렬 관련 문제 하나와 Stack, Queue 관련 자료구조 문제 하나로 어렵지 않았고 중간중간 풀면서 edge case를 못 찾는 경우가 있었는데, 옆에서 계속 찾을 수 있게 도와주셨던 기억이 난다. 결과는 합격.
D사는 데이터 전처리 B2B 회사였다. 개발자 두 분과 면접을 봤고 그 분들과 총 2번을 면접을 봤는데 한 번은 온 사이트, 한 번은 화상 면접으로 진행했다. 온사이트 면접때는 이력서를 바탕으로 어떤 프로젝트를 진행했었고, 회사에 대해 서로 알아가는 시간 정도로 가볍게 진행했다. 화상 면접이 사실상 기술 인터뷰였는데 두 문제 정도를 주고 화면 공유 기능을 통해 구글 행아웃으로 진행했었다. 코드를 작성하고 내가 설명하는 방식으로 진행했다. 스택을 이용한 첫 번째 문제는 쉽게 풀었던 것 같은데, 두 번째 문제가 리스트와 포인터를 가지고 푸는 문제였고 조금 헤맸다. 긴장해서 당황했고 결과적으로 문제를 잘 풀지 못했다. 결과는 불합격.
E사는 쇼핑몰 웹빌더 서비스 회사였다. 개발자 세 분과 인터뷰를 약 한시간 반 정도 진행했다. JavaScript로 사전 코딩테스트를 진행했는데 그 코드를 어떻게 하면 더 좋게 개선할 수 있는지를 묻는 질문이 인상적이었다. 그 외에는 이력서 기반 질문 및 FE 관련 질문, 개발 스타일에 대한 질문, 앞으로 이후에 커리어를 어떻게 쌓아나갈 생각인지 등등 내가 관심있는 주제에 대해 편하게 이야기를 할 수 있게 해 주셔서 분위기는 좋았다. 결과는 합격.
F사는 어린이집 알림장 관리 서비스 회사였다. 개발자 네 분과 비개발자 한 분이 오셨는데 솔직히 정신이 없었다. 진행했던 프로젝트에 대해서 설명하고 어떤 분들은 실시간으로 내 깃헙 소스코드를 보시는 것 같았다. 어떻게 하면 많은 데이터를 안전하게 처리할 수 있을 것 같은지, 최적화는 어떻게 하는지 등 내가 깊게 고민해 보지 않은 부분에 대해서도 질문이 많이 들어왔다. 아는 범위 내에서 최대한 답변을 하려고 노력했고, 시니어들이 많아서 솔직히 좀 기가 눌렸던 것 같기도 하다. 결과는 합격.
G사는 헬스케어 플랫폼 서비스 회사였다. 개발자 두 분이 오셨고 한 시간 정도 진행되었다. 내 이력서를 바탕으로 기본적인 경험들을 물어보시고, 자바스크립트의 기본적인 내용들.. 예를 들면 프로토타입, 클로저 등에 대해서 물어보신 기억이 난다. 웹 생태계 기본기에 대해서 많이 물어보셨고 전체적으로 대답을 평이하게 했던 것으로 기억한다. 코드를 어떤 스타일로 짜는지에 대한 질문도 받았었는데 질문을 명확하게 이해하지 못해서 조금 횡설수설 하기는 했었던 것 같다. 결과는 합격.
전체적으로 내가 경험했던 기술 인터뷰에 대해서 간략히 정리해 보았다. 다음 마지막 포스팅에서는 이후 내가 어떤 기준으로 회사를 선택했고 연봉은 어떻게 협상했는지 등에 대해서 이야기를 해 보려고 한다.