자주 나오는 JavaScript 면접 질문
작성자 Aaron Cao · 업데이트

기본기를 확인합니다: 클로저, 이벤트 루프, this 바인딩, 프로토타입, 그리고 var, let, const를 이용한 스코프 처리입니다. 이어서 debounce 구현, 배열 평탄화, promise 유틸리티 작성 같은 코딩 문제와 이벤트 위임 같은 브라우저 관련 주제가 나옵니다. 시니어 면접에서는 async 패턴과 성능도 추가됩니다.
가장 자주 나오는 JavaScript 기본 개념은?
JavaScript 질문 목록은 끝이 없어 보이고, 무작위로 문제를 푸는 것은 가장 느린 방법입니다. 이 섹션에서는 거의 모든 면접에서 면접관이 되풀이해서 묻는 개념으로 범위를 좁혀서, 연습이 실제 출제 분포와 맞아떨어지게 합니다. 대부분의 스크리닝을 차지하는 주제는 다섯 가지입니다:
- 클로저: 함수가 무엇을 캡처하는지, 고전적인 반복문 변수 버그, 그리고 모듈 패턴이 작동하는 이유.
- 이벤트 루프: 콜 스택, 태스크 큐, 마이크로태스크 큐, 그리고 혼합된 예제에서 로그가 찍히는 순서.
- this 바인딩: 기본 바인딩, 암묵적 바인딩, call과 apply를 이용한 명시적 바인딩, 그리고 화살표 함수는 어떻게 다른지.
- 프로토타입: 체인을 따라가는 속성 조회, 그리고 class 문법이 실제로 어떻게 컴파일되는지.
- 스코프: var와 let, const의 차이, 호이스팅, 그리고 일시적 사각지대(temporal dead zone).
==와 ===를 이용한 형 변환, truthiness, 그리고 map, filter, reduce 같은 배열 메서드가 스크리닝 단계의 나머지를 채웁니다. 위 항목을 각각 일 분 안에 말로 설명할 수 있다면 기본기 라운드는 통과입니다.
어떤 코딩 연습을 해야 할까?
개념 질문 외에도, 대부분의 JavaScript 라운드에는 그 자리에서 진행하는 짧은 구현 연습이 포함됩니다. 반복적으로 나오는 문제 유형은 몇 가지뿐이라, 시도 횟수가 아니라 몇 분 만에 풀 수 있을 때까지 반복 연습할 가치가 있습니다:
debounce와throttle을 구현하고, 각각 언제 적합한지 설명하기.- 재귀를 사용한 방식과 사용하지 않은 방식 둘 다로 중첩 배열 평탄화하기.
- 첫 번째 실패에서 reject되는 단순화된
Promise.all작성하기. - on, off, emit을 갖춘 작은 이벤트 이미터 만들기.
- 객체를 깊은 복사하고, 자신의 구현이 놓친 사례를 짚어보기.
예를 들어 미드레벨 직무에 지원한 프런트엔드 후보자라면, 워밍업으로 debounce를 받은 뒤 이를 검색 입력창에 연결하고 진행 중인 요청에 어떤 일이 일어나는지 설명하라는 요청을 받을 수 있습니다. 진짜 시험은 그다음 꼬리질문입니다. 면접관은 이 문제를 계속 확장하며 당신의 언어 이해가 어디서 끝나는지를 확인합니다.
반박하는 면접관을 상대로 소리 내어 연습하는 것이 내용을 몸에 익히는 방법입니다. 모의 면접 페이지에서는 꼬리질문이 포함된 시간제 연습 세션을 진행하는 방법을 다룹니다.
브라우저 및 async 관련 질문은 어떤 모습일까?
브라우저를 다루는 직무는 언어 기본기 위에 한 겹을 더 요구합니다. 이벤트 위임이 핵심입니다: 부모에 리스너 하나를 두는 것이 자식 각각에 리스너를 잔뜩 두는 것보다 나은 이유, 버블링이 어떻게 그것을 가능하게 하는지, 그리고 캡처 단계가 언제 중요한지가 나옵니다. DOM 업데이트 배치 처리, 레이아웃 스래싱, 그리고 무엇이 리플로우를 유발하는지는 성능 위주의 스크리닝에서 등장합니다.
async 관련 질문은 하나의 표준 형태로 수렴해 있습니다: setTimeout, promise 체인, async 함수가 섞인 코드 조각을 보고 출력 순서를 예측하는 것입니다. 답은 마이크로태스크와 매크로태스크의 순서에 달려 있으며, 면접관은 순서 자체보다 그 이유에 관심이 있습니다. await 경계를 넘나드는 에러 처리, 중첩과 대비되는 promise 체이닝, 그리고 Promise.race로 여러 요청을 경쟁시키는 것까지가 이 범주를 채웁니다.
코딩, 행동 면접, 시스템 설계 형식에 따라 이런 라운드가 어떻게 달라지는지는 면접 유형 허브에서 다룹니다.
실제 라운드로 이어지려면 어떻게 연습해야 할까?
답을 읽기만 하면 뭔가 하는 느낌은 들지만 실제로 남는 것은 거의 없습니다. 면접은 말로 하고, 시간 제한이 있고, 상호작용하는 것이므로 연습도 그래야 합니다. 타이핑하면서 설명하고, 꼬리질문으로 끊기고, 시계를 의식하는 모의 세션을 진행하세요. 그런 압박감이 있어야 지식이 저절로 튀어나오게 됩니다. 다른 언어와 스택별 문제 세트는 문제 은행 허브에 있습니다.
솔직히 말하면, 실제 JavaScript 라운드는 보통 화면이 그대로 보이는 공유 에디터에서 진행되며, 감독 하에 진행되는 평가는 이를 녹화합니다. AI 어시스턴트는 그런 실시간 공유 화면을 위한 것이 아니라 사전 준비와 연습을 위한 것입니다. 화면을 공유하지 않는 전화 스크리닝이나 스스로 준비하는 세션처럼 실시간 도움이 정당한 경우에는, SubcueAI의 오버레이가 사용자의 기기에만 남아 있으며 통화에 봇이 참여하지 않습니다.