채용 인터뷰 준비하기
To OO님,
채용 인터뷰를 어떻게 준비해야 할지 모르겠다고? 어떻게 하면 질문에 답변을 잘해서 원하는 조직에 합류할 수 있을까? 지금부터 질문을 작성하는 인터뷰어 입장에서 인터뷰를 준비하는 방법에 대해 설명해 줄게.
채용 공고의 자격 요건을 확인하기
사실 인터뷰 질문은 채용 공고를 보면 알 수 있어. 기술 질문은 이 요건들을 집중적으로 검증하기 위해 작성되어 있다고 보면 돼. 우리팀의 백엔드 직군의 예를 들어 볼게.
-
자격요건
-
Java에 익숙하고 기타 언어 하나 이상을 습득한 분
-
Spring 프레임워크(Spring Boot)를 이용한 Web Application 개발경험이 있으신 분
-
MVC framework 기반의 웹 서비스나 API 개발 경험이 있으신 분
-
MySQL(Maria DB), MS-SQL 등 RDBMS 경험이 있으신 분
-
기본적인 Linux/Unix 명령 사용 능력을 갖춘 분
-
테스트 주도 개발 및 페어프로그래밍에 익숙하신 분
-
-
우대사항
-
Java 기반의 C2C 마켓 플랫폼 서비스 개발 경험이 있으신 분
-
JPA, Hibernate 등 ORM 사용과 도메인 모델링 경험이 있으신 분
-
AWS를 활용한 개발, 운영 경험이 있으신 분
-
빌드/테스트/배포 자동화 경험이 있으신 분
-
대규모 트래픽 처리 경험이 있으신 분
-
각종 장애 극복 경험이 있으신 분
-
자격 요건이 이러하다면 인터뷰 질문들은 이것들을 검증하는 질문이란 얘기야.
경력을 고려해서 질문 예상하기
질문 작성시 신입, 주니어, 시니어로 구분해서 각 역량을 검증하고 있어. 왜냐하면 인터뷰 시간이 제한적이기 때문에 지원자에게 적합한 질문을 하는 것이 중요하기 때문이야. 지원자도 자신의 역량에 따라 어느 정도 질문의 수준을 예상하고 인터뷰에 참여하는데 질문 수준이 맞지 않는다고 생각하면(특히 시니어의 경우) 해당 회사와 인터뷰어가 지원자에 대해 충분히 파악하지 못한채 인터뷰를 하고 있다는 인상을 줄 수 있거든. 다시 말해 지원자 입장에서 커리어와 역량에 대해 어느 정도의 존중이 반영된 질문이어야 서로에게 유익하다는거야. 우리 팀의 경우에는 각 직군별로 2~3가지 레벨의 질문 유형을 정리해 놓고 인터뷰에 사용하고 있어. 백엔드 직군의 예를 들어 볼게.
-
Level-1
-
Java Programming 숙련도
-
Spring 프레임워크(Spring Boot)를 이용한 Web Application 개발
-
JPA, Hibernate 등 ORM 사용과 도메인 모델링
-
RDBMS 숙련도
-
페어프로그래밍, Code Review, Github 관련
-
Linux 사용 숙련도
-
-
Level-2
-
실제 API 구현 질문
-
선착순 구현
-
중복 입력 방지 구현
-
-
Java 기반의 커머스 플랫폼 서비스 개발
-
빌드/테스트/배포 자동화
-
성능 테스트
-
-
Level-3
-
대용량 트래픽 / 데이터 처리
-
장애 관련 트러블슈팅
-
DevOps 또는 인프라를 활용한 개발, 운영(Docker, AWS 등)
-
유형을 보니 대략 어떻게 질문을 할지 예상할 수 있지? 또한 질문 유형이 자격요건과 우대사항과 연관되어 있는 것을 볼 수 있을거야. 신입, 주니어의 경우라면 역량 검증을 위해 Level-1에서 많은 시간을 사용하겠지. 그런데 지원자 역량이 훌륭해서 Level-1의 질문에 막힘이 없다면, 다음 레벨의 질문을 해보면서 다른 지원자와의 차별점을 쉽게 찾을 수 있어. 지원자가 시니어라면 Level-2 질문부터 시작하겠지. 아무래도 기본적인 기술 역량 검증 보단 프로덕트에 집중된 경험에 대해서 주로 묻고 답하게 되겠지.
단답형보다는 서술형으로
지원자의 답변이 지식과 경험을 확인하는 단답으로 끝나는 질문보다는 어떤 문제를 해결하기 위해 어떻게 사용했는지를 중점으로 검증할 수 있는 질문을 주로하기 때문에 논리적으로 서술하는 연습이 필요해. 사실 용어의 뜻이나 설명은 구글링해도 쉽게 찾을 수 있기도 하고 머리로 알고 있는 것과 실제 적용하고 사용해 본 것은 차이가 크거든.
[좋지 않은 질문]
-
Optional 에 대해 설명해 주세요.
-
Redux 혹은 Mobx 와 같은 상태 관리 라이브러리를 사용해본 경험이 있는지?
-
GC에 대해 설명해 주세요.
[좋은 질문]
-
Optional 을 사용하는 이유가 무엇인가요? 어떤 경우에 사용했나요?
-
Redux 혹은 Mobx 와 같은 상태 관리 라이브러리를 왜 사용할까요? 프로젝트에서 사용한 예를 들어 설명해 주세요.
-
Tomcat에서 full GC가 발생하면 어떤 일이 벌어지나요? Tomcat에서 여러 방식의 GC를 지원하는 이유가 무엇일까요?
-
특정 API가 최근 들어 응답속도가 느려졌습니다. 어떻게 확인하고 개선하겠어요?
최고의 질문 = 꼬리에 꼬리를 무는 질문 예상하기
내가 즐겨하는 질문 방식이야. 지원자의 답변에서 시작하는 질문은 문제 해결 방법에 대해 더 깊게 검증할 수 있기 때문이야. 예상 답변을 준비하면서 왜? 에 대해 스스로 질문하며 그에 따른 답변을 만들어보는 것도 좋은 연습이 될 수 있어.
[좋은 질문]
Q. 대규모 트래픽을 위해서 사용한 프로그래밍 방법, 시스템 구성을 설명해 주세요.
A. 메인 페이지의 성능을 위해 상품 DB의 인덱싱 작업을 통해 성능을 높히고 캐시를 적용해 api 요청을 줄이는 방식으로 구현했습니다. DB 성능 이슈가 있어 지속적으로 slow query를 튜닝해서 50,000 RPS(request per second)까지 처리하도록 개선했습니다.
Q. 50,000 RPS를 처리하기 위해 어떻게 부하 테스트를 했는지 설명해 주세요.
A. 오픈소스인 Ngrinder를 서버에 설치해서 tomcat과 nginx의 설정을 변경해 가며 테스트했습니다.
컬쳐핏 관점
채용시에 기술 역량 못지 않게 컬쳐핏 검증도 상당히 중요해. 팀 규모가 작을수록 한 명이 끼치는 영향이 생각보다 크기 때문에 팀에 잘 맞는 지원자를 찾아야 해. 물론 짧은 인터뷰 시간에 모든 것을 파악할 수 없지만 컬쳐핏을 기준으로 우리 팀에 잘 어울릴 수 있을까란 가정하에 질문을 작성하고 있다는 것을 기억해야해.
컬쳐핏 확인하기
회사 소개 페이지나 채용 공고 페이지를 통해 조직의 미션, 행동 기준 등을 확인할 수 있어.
우리 팀의 예를 들어 설명해 줄게. 컬쳐핏, 즉 구성원 행동 기준은 아래와 같아.
- 하나의 팀
우리가 함께 일하는 이유는, 조직의 미션을 달성하기 위함입니다. 업무를 진행할 때 개인이나 특정 부서의 이익과 편의가 아닌 조직 전체의 이익을 추구합니다. 의견이 충돌할 땐 조직 전체의 이익과 방향을 중심으로 커뮤니케이션하고 의사결정 합니다.
- 고객 지향
고객에게 구체적으로 어떤 효익을 제공하는지, 업무의 과정마다 고민하며 실행해야 하며, 우리는 주요 고객인 후원자로부터 성장의 열쇠를 찾습니다.
- 임팩트 추구
우리는 작은 팀으로 큰 목표를 달성합니다. 일을 완수하는 것으로 만족하지 않고 미션 달성과 문제 해결에 미치는 실제 영향을 성과로 삼습니다. 이를 위해 하는 일의 효과를 측정하고, 우선 순위를 결정하며, 일하는 방식을 지속적으로 개선합니다.
컬쳐핏 관련 질문 예상하기
자, 그렇다면 어떤 질문을 예상할 수 있을까? 질문의 요지는 지원자의 커리어 전반에 걸친 일하는 방식과 프로젝트에 대한 경험을 통해 조직의 컬쳐핏이 오버랩되는지를 확인해 보며 지원자를 검증할 수 있어야 한다는 것이야. 각 컬쳐핏에 정렬되어 있는 질문들의 예를 들어볼게.
[하나의 팀]
-
동료들과 협업시에 의견이 모이지 않을 때 의견을 모으는 과정에 대한 경험에 대해 들려주세요.
-
동료의 목표를 구체적으로 이해하고 시간을 내어서 도운 경험에 대해 들려주세요.
-
동료들과 협업하여 만족할 만한 해결책을 도출했던 경험에 대해 들려주세요.
-
업무 역량이나 태도로 동료들에게 좋은 피드백을 받았던 경험에 대해 들려주세요.
[고객 지향]
-
지원자가 기여한 프로덕트를 통해 사용자로부터 평가 받은 경험에 대해 들려주세요.
-
사용자 중점으로 의견을 제시하거나 프로덕트에 반영한 경험에 대해 들려주세요.
-
업무 또는 백로그 우선순위를 정렬하면서 사용자 관점에서 우선순위를 조정한 경험에 대해 들려주세요.
[임팩트 추구]
-
가장 자랑하고 싶은 프로젝트 또는 아쉬웠던 프로젝트를 설명해 주세요.
-
왜 자랑하고 싶은 프로젝트인가요? / 왜 아쉬웠던 프로젝트 인가요?
-
프로젝트의 목표가 무엇이었나요?
-
목표 달성을 위해 지원자는 구체적으로 어떤 업무를 했나요?
-
목표 달성을 위해 지원자는 업무 이외에도 기여한 점이 있나요?
-
(아쉬웠던 프로젝트의 경우) 당시로 돌아간다면 어떻게 개선할건가요?
-
-
결과가 만족스럽지 않아 원점부터 다시 시작했던 경험이 있다면 들려주세요.
-
지속적으로 발생하는 문제에 대처했던 경험을 설명해주세요. (문제 원인 파악, 대안 제시, 이후 재발 방지 확인 등)
-
업무를 하면서 스스로 세우고 행동했던 가장 도전적인 목표는 무엇이었는가?
이런 질문들을 통해 지원자가 우리 컬쳐핏에 맞는지 검증하고 있어. 중요한 점은 개방형 질문이라 지원자의 답변이 특정 견해나 가설적인 이야기로 흐를수도 있는데 답변이 컬쳐핏 검증에서 벗어나지 않도록 가이드 해주는 것을 인터뷰어가 중요하게 생각하고 있어. 이 때 자연스럽게 질문을 이어나가는, STAR 기법을 참고해서 질문을 만드니깐 아래 질문을 예상해서 답변을 연습하는 것도 좋은 방법이야.
-
Situation : 어떤 상황이었는지요?
-
Target at Hand : 어떤 일을 할 때 였을까요?
-
Action : 어떻게 하셨나요?
-
Results : 결과는 어땠나요?
지금까지 인터뷰어 입장에서 좋은 엔지니어를 검증하기 위한 인터뷰 과정을 설명했는데 도움이 되었니? 어떻게 인터뷰를 준비해야할지 답을 찾았기를 바랄게. 다시 한 번 꼼꼼하게 읽어보고 잘 준비하길 바래.
From. 원하는 조직에 꼭 합류하길 바라는 Rock