풀스택 개발자 면접 질문
작성자 Aaron Cao · 업데이트

풀스택 면접은 계층과 계층이 맞닿는 지점을 시험합니다. API 계약을 어떻게 설계하고 변경하는지, 로그인이 브라우저에서 데이터베이스까지 어떻게 동작하는지, 그리고 한 기능이 스키마에서 화면까지 어떻게 전달되는지를 봅니다. 코딩 라운드, 기능 구현 과제, 그리고 클라이언트와 서버를 아우르는 설계 논의가 이어지는 것이 일반적입니다.
풀스택 개발자 면접은 실제로 무엇을 시험할까?
풀스택 면접이라고 하면 대부분의 지원자가 면접 하나에 쓰는 시간 안에 프런트엔드와 백엔드, 두 번의 완전한 면접을 모두 준비해야 한다고 걱정할 수 있습니다. 그 걱정은 합리적이지만, 이 절에서는 그 일이 보기보다 크지 않은 이유를 보여줍니다. 면접관은 프런트엔드나 백엔드 전문 면접을 그대로 다시 진행하는 경우가 드물며, 계층이 맞닿는 지점을 파고듭니다. 바로 그곳에서 풀스택 엔지니어가 자신의 가치를 증명하기 때문입니다.
대부분의 면접 과정은 네 가지 유형의 라운드를 섞어서 진행합니다:
- 코딩: 자료구조 문제, 또는 레코드를 파싱하거나 그룹화하거나 페이지네이션하는 것 같은 실무형 과제로, JavaScript, TypeScript, Python, Java로 진행되는 경우가 많습니다.
- 기능 구현: API에 저장하고 검증 오류를 표시하는 폼처럼, 공유 에디터나 과제형 저장소에서 진행하는 소규모 엔드투엔드 과제입니다.
- 스택을 아우르는 설계: 댓글이나 알림 같은 기능을, 스키마와 API, 클라이언트 상태, 네트워크 장애 시 동작까지 포함해서 설계합니다.
- 행동 면접: 티켓에서 프로덕션까지 기능을 책임진 경험과, 여러 계층을 넘나들며 추적한 버그에 관해 이야기합니다.
계층별 심화 질문도 여전히 나오며, 프런트엔드와 백엔드 개발자 전용 페이지를 포함한 전문 문항 모음은 면접 질문 허브에 있습니다. 이 페이지는 그 두 계층 사이에 있는 것을 다룹니다.
API 계약과 데이터 관련 질문 중 가장 자주 나오는 것은?
API는 두 영역을 잇는 계약이므로, 면접관은 양쪽 관점에서 질문합니다:
- 기능 하나의 엔드포인트를 어떻게 설계할 것이며, 성공 시와 실패 시 각각 무엇을 반환하나요?
- 이미 프로덕션에 있는 클라이언트를 깨뜨리지 않고 API를 어떻게 변경하나요? (버전 관리, 추가형 변경, 지원 종료 유예 기간.)
- 오프셋 페이지네이션과 커서 페이지네이션 중 활동 피드에는 무엇을 쓰겠으며, 그 이유는?
- 클라이언트가 타임아웃될 경우 POST를 안전하게 재시도할 수 있게 하려면 어떻게 하나요? (멱등성 키.)
- 특정 클라이언트에 REST, GraphQL, RPC 중 무엇을 쓰느냐에 따라 캐싱, 과다 조회, 오류 처리는 어떻게 달라지나요?
- 검증 로직은 클라이언트, 서버, 아니면 둘 다 어디에 두어야 하며, 어느 쪽이 최종 권위를 가지나요?
- 목록 엔드포인트가 중첩된 데이터를 반환할 때 N+1 쿼리는 어떻게 피하나요?
좋은 답변은 선택지만 나열하지 않고 트레이드오프를 명확히 짚습니다. "커서 페이지네이션을 쓰겠습니다. 사용자가 스크롤하는 동안 삽입된 행이 오프셋을 밀어내 항목이 중복되기 때문입니다"라는 답이, 두 옵션을 나열만 하고 끝내는 것보다 낫습니다.
인증과 기능 추적 질문에는 어떻게 답해야 할까?
풀스택 지원자와 전문 인력을 가르는 질문 유형이 두 가지 있습니다. 첫 번째는 엔드투엔드 인증입니다. 사용자가 로그인 폼을 제출하는 순간부터 인증된 API 호출이 성공하는 순간까지 무슨 일이 일어나는지 설명해 보세요. 면접관은 자격 증명이 어디에 저장되는지(쿠키인지 클라이언트 저장소인지), 서버가 이를 어떻게 검증하는지, HttpOnly 쿠키가 왜 스크립트 접근에 저항하는지, 쿠키 기반 세션에 어떤 CSRF 보호가 필요한지, CORS가 다른 출처의 프런트엔드에 어떤 영향을 주는지, 그리고 로그아웃과 토큰 만료가 어떻게 처리되는지를 살핍니다.
두 번째는 추적 문제입니다: "사용자가 저장을 클릭했는데 아무 일도 일어나지 않습니다. 어떻게 디버깅할지 설명해 주세요." 좋은 답변은 추측하지 않고, 브라우저 콘솔과 네트워크 탭에서 요청과 응답으로, 다시 서버 로그로, 그리고 데이터베이스 쓰기로 계층별로 차근차근 나아갑니다.
중견 SaaS 기업에서 면접을 보는 풀스택 개발자가 전형적인 사례입니다. 댓글 기능이 어떻게 동작할지 질문받은 그녀는 테이블(게시물 ID, 작성자 ID, 타임스탬프를 갖고 게시물별로 인덱싱된 댓글)에서 시작해, 커서 페이지네이션을 쓴 목록 엔드포인트를 정의하고, 클라이언트에서의 낙관적 렌더링과 POST 실패 시 롤백을 설명한 뒤, 더블클릭으로 인한 중복 게시를 어떻게 막을지로 마무리했습니다. 그녀는 각 계층을 간결하게 유지했고, 면접관의 후속 질문은 정확히 그녀가 짚었던 접점으로 향했습니다.
어떻게 연습해야 하며, 실시간 어시스턴트는 어디에 쓰일까?
추적 과정을 소리 내어 연습하세요. 매일 쓰는 앱에서 기능 하나를 골라 스키마부터 화면까지 설명한 다음, 장애를 넣어서 다시 해 보세요: API가 느려지거나, 쓰기가 부분적으로만 성공하거나, 요청 도중 사용자가 로그아웃되는 식입니다. 스스로 설명하는 것을 녹음하거나, 말로 한 답변을 바탕으로 후속 질문을 던지는 AI 모의 면접에서 연습해도 좋습니다.
실제 면접에서는 macOS와 Windows용 SubcueAI 데스크톱 앱이, 면접 규칙이 도움을 허용하는 경우에 한해 면접관의 말을 받아쓰고 설계 및 행동 질문 답변의 구조를 제안할 수 있습니다. Chrome/Edge 확장 프로그램은 브라우저 탭 통화를 지원하고, iPhone 앱은 다른 기기에서 재생되는 통화를 청취합니다. 정직한 한계는 풀스택 면접에서 특히 중요합니다: 기능 구현과 코딩 라운드는 흔히 화면 공유 상태에서 진행되고, 화면 공유 중에는 모든 것이 보이므로 그런 라운드는 지원 대상이 아닙니다. 감독하에 치러지는 온라인 평가와 회사가 관리하는 기기도 마찬가지로 대상이 아닙니다. 설정 방법은 튜토리얼에 있습니다.