brunch

You can make anything
by writing

C.S.Lewis

by 엄지현 Jul 04. 2022

개발자 면접 유형 총정리

개발자 면접은 어떻게 진행될까?

처음 이직 시도를 했을 때가 떠오릅니다. 별 근거도 없이 자신만만하던 4년 차 때, 평소 실력만 믿고 당당하게 기술 면접에 뛰어들었죠. 면접은 생각보다 훨씬 어려웠고, 결과는 처참했습니다. 식은땀을 삐질삐질 흘리며 겨우 첫 라이브 코딩 테스트를 마쳤던 기억은 쉽사리 잊히지 않습니다. 그렇게 직접 부딪혀 보고 나서야 깨달았어요. 기술 면접은 평소 실력만으로는 무리라는 것을.


개발자의 면접은 철저한 준비가 필요한 영역입니다. 1시간 안에 실력을 증명해야 하는 면접은 평상시 업무 방식과는 다를 수밖에 없습니다. 따라서 아무리 평소 실력이 뛰어난 개발자라도 기술 면접에 대비하기 위해서는 별도의 준비가 필요합니다. 이 포스팅에서는 전반적으로 개발자 면접이 어떻게 진행되는지 훑어보고, 앞으로의 글에서 각 면접을 준비하는 방법을 공유할 예정입니다.


1. 코딩 테스트

2. 코딩 과제

3. 이론적 기술 면접

4. 시스템 설계 면접

5. 인성 면접





1. 코딩 테스트

코딩 테스트는 지원자의 코딩 실력을 확인하기 위한 시험입니다. 실시간으로 면접관이 지켜보는 라이브 코딩 테스트와 면접관 없이 개인적으로 보는 온라인 코딩 테스트가 있습니다.


라이브 코딩 테스트

‘라이브’ 코딩이라는 이름답게 면접관과 영상 통화를 하며 실시간으로 면접관이 내는 문제를 코드로 구현하는 방식입니다. 45분~1시간 정도의 시간제한이 있지만, 보통 자기소개를 하거나 직무에 관한 질문을 하는 데 5~10분 정도의 시간이 소요되기 때문에 그 점을 감안하고 문제를 푸는 것이 좋습니다. 이 시간에는 주로 단시간 안에 풀 수 있는 알고리즘 문제가 출제됩니다.


온라인 코딩 테스트

이 유형은 라이브 코딩 테스트와 비슷하나 면접관이 지켜보지 않는다는 차이가 있습니다. 원하는 시간에 코딩 테스트를 볼 수 있는 링크가 제공되며, 링크에 접속해 시작 버튼을 누르면 제한 시간(보통 1~2시간) 카운팅이 시작됩니다. 그 시간 안에 주어진 문제를 코드로 구현해야 하며, 만약 제한 시간 안에 다 풀지 못하면 그 상태로 시험이 제출됩니다. 보통 라이브 코딩과 비슷한 난이도의 문제 또는 약간 더 복잡한 유형의 알고리즘 문제가 출제됩니다.


질문 예제:




2. 코딩 과제

코드로 구현해야 하는 기능 목록이 과제로 제시되고, 제한 기간(보통 일주일 정도) 안에 코드를 작성해서 보내면 면접관이 평가하는 방식입니다. 코딩 테스트에 비해 비교적 넉넉한 시간이 주어지지만, 그만큼 작성해야 할 코드도 많고 신경 써야 할 부분도 많죠. 보통 코딩 과제로는 알고리즘 문제보다는 실질적으로 현업에서 볼만한 문제가 나옵니다.


질문 예제:

은행 송금 API를 작성하세요.

호텔 예약 시스템의 일부분을 구현하세요.


코딩 과제 연습 문제:




3. 이론적 기술 면접

코딩 문제가 아닌 이론적인 기술 질문을 여러 개 묻고 답하는 방식입니다. 컴퓨터 공학 지식부터 특정 프로그래밍 언어 관련 지식까지 광범위한 분야에서 다양한 질문이 나옵니다. 상세한 질문은 지원 분야 및 각 회사의 기술 스택에 따라 다릅니다. 대표적으로는 프론트엔드 개발자 직군의 경우 Javascript, React, 브라우저 작동 방식 관련 질문이 출제되고, 백엔드 개발자 직군의 경우 Java, Spring, 객체지향 프로그래밍 관련 질문이 출제됩니다.


질문 예제:

브라우저에 www.google.com을 치면 페이지가 로딩되기까지 어떤 과정을 거치나요?

객체지향 개발의 5원칙(SOLID 원칙)에 대해 설명해 주세요.




4. 시스템 설계 면접

특정 프로덕트의 전체 시스템 또는 일부를 설계하는 면접입니다. 예를 들어 트위터를 설계하라는 문제가 나온다면, 어떤 방식으로 서비스를 나누고, 각 서비스에 어떤 데이터베이스를 사용할 것이며, 높은 사용자 트래픽은 어떻게 처리할지 등을 설명해야 합니다. 현실적으로 한 시간 안에 상세한 시스템 설계를 하기는 어려우므로, 질문을 통해 면접관이 원하는 것이 무엇인지 알아내어 전체 시스템을 넓고 얕게 훑거나 한 부분을 집중적으로 파면됩니다. 이 유형은 주니어 레벨보다는 시니어 레벨의 면접에서 주로 출제됩니다.


질문 예제:

실시간 채팅 앱을 설계하세요.  

검색창의 자동 완성 기능을 설계하세요.  




5. 인성 면접

지원자가 이 회사와 팀 문화에 잘 맞는지 평가하는 면접입니다. 지원자의 성향을 파악하기 위한 질문이 다양하게 출제됩니다. 실제 경험에 기반한 질문을 묻기도 하고, 있을 법한 상황을 가정하는 질문을 묻기도 합니다. 이 면접에서 기술적인 문제가 나오지는 않습니다.


질문 예제:

동료와 의견이 달랐던 적이 있다면 그 의견 차이를 어떻게 해결했는지 설명해 주세요. (경험 기반)

만약 동료가 팀원들의 공을 가로채서 상사에게 잘 보이려고 한다면 어떻게 할 것인가요? (상황 가정)




개발자 면접은 길고 어렵습니다. 하지만 그렇다고 지레 겁먹을 필요는 없어요. 준비만 잘하면 누구나 좋은 결과를   있습니다. 처음 이직 시도를 했을  면접에서 장렬히 전사했던 제 얼마   번째 이직에 성공한 것이  증거입니다. ‘지피지기면 백전불태라는 말도 있잖아요? 적을 알고 나를 알면 백번 싸워도 위태롭지 않다는 뜻으로, 여기서 우리의 적은 면접입니다. 위태롭지 않게 면접에서 승리하기 위해서 우리는 준비해야 합니다. 앞으로의 글에서는  유형의 면접을 준비하는 방법을 상세히 공유할 예정입니다.



이전글:


다음글:


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari