JavaScript 주니어 개발자 기술면접

JavaScript 주니어 (1~3년) 종합 5문항 조회수 112 · 2026-05-11 (월) 19:10:36
1 JavaScript 기본 개념
Easy

Q. JavaScript에서 var, let, const의 차이점을 스코프, 재할당, 호이스팅 관점에서 설명해주세요.

A. 모범답안

var는 함수 스코프를 가지며 재할당과 재선언이 가능하고, 호이스팅 시 undefined로 초기화됩니다. let은 블록 스코프를 가지며 재할당은 가능하지만 재선언은 불가능하고, 호이스팅되지만 TDZ(Temporal Dead Zone)로 인해 선언 전 접근이 불가능합니다. const는 let과 동일하게 블록 스코프를 가지지만 재할당이 불가능하며, 선언 시 반드시 초기화해야 합니다. 실무에서는 기본적으로 const를 사용하고, 재할당이 필요한 경우에만 let을 사용하는 것이 권장됩니다.

핵심 포인트
  • • var는 함수 스코프, let/const는 블록 스코프
  • • const는 재할당 불가능
  • • let/const는 TDZ로 인해 선언 전 접근 불가
  • • 실무에서는 const 우선 사용
Follow-up 질문

TDZ(Temporal Dead Zone)가 정확히 무엇이며, 왜 도입되었는지 설명해주세요.

2 HTTP/네트워크
Medium

Q. 브라우저에서 CORS(Cross-Origin Resource Sharing) 에러가 발생하는 이유와 이를 해결하기 위한 방법들을 설명해주세요.

A. 모범답안

CORS 에러는 브라우저의 동일 출처 정책(Same-Origin Policy)으로 인해 발생합니다. 프로토콜, 도메인, 포트 중 하나라도 다르면 다른 출처로 간주되어 리소스 접근이 차단됩니다. 해결 방법으로는 서버에서 Access-Control-Allow-Origin 헤더를 설정하는 방법, 프록시 서버를 중간에 두는 방법, 개발 환경에서는 webpack-dev-server의 proxy 설정을 활용하는 방법이 있습니다. Preflight 요청이 필요한 경우 서버에서 OPTIONS 메서드도 처리해야 합니다.

핵심 포인트
  • • 동일 출처 정책으로 인한 보안 메커니즘
  • • 서버에서 CORS 헤더 설정 필요
  • • 프록시 서버 활용 가능
  • • Preflight 요청 처리 필요
Follow-up 질문

Simple Request와 Preflight Request의 차이점과 각각 어떤 경우에 발생하는지 설명해주세요.

3 JavaScript 비동기
Medium

Q. JavaScript에서 debounce와 throttle의 개념을 설명하고, 각각 어떤 상황에서 사용하는 것이 적절한지 예시를 들어주세요.

A. 모범답안

debounce는 연속적으로 발생하는 이벤트를 그룹화하여 마지막 이벤트가 발생한 후 일정 시간이 지나면 한 번만 실행하는 기법입니다. throttle은 일정 시간 간격으로 최대 한 번만 실행되도록 제한하는 기법입니다. debounce는 검색창의 자동완성처럼 사용자 입력이 끝난 후 API를 호출할 때 적합하고, throttle은 스크롤 이벤트나 리사이즈 이벤트처럼 일정 간격으로 계속 실행되어야 하는 경우에 적합합니다. 둘 다 성능 최적화를 위해 불필요한 함수 호출을 줄이는 목적으로 사용됩니다.

핵심 포인트
  • • debounce는 마지막 이벤트 후 일정 시간 뒤 실행
  • • throttle은 일정 시간 간격으로 실행
  • • debounce는 검색 자동완성에 적합
  • • throttle은 스크롤/리사이즈 이벤트에 적합
Follow-up 질문

lodash 라이브러리 없이 간단한 debounce 함수를 구현한다면 어떤 방식으로 접근하시겠습니까?

4 자료구조/알고리즘
Easy

Q. JavaScript의 배열 메서드 중 map, filter, reduce의 차이점과 각각의 사용 목적을 설명해주세요.

A. 모범답안

map은 배열의 각 요소를 변환하여 새로운 배열을 반환하는 메서드로, 원본 배열과 동일한 길이의 배열을 생성할 때 사용합니다. filter는 조건을 만족하는 요소만 선택하여 새로운 배열을 반환하므로, 특정 조건으로 데이터를 걸러낼 때 사용합니다. reduce는 배열의 모든 요소를 순회하며 하나의 값으로 축적(accumulate)하는 메서드로, 합계 계산, 객체 변환, 중첩 배열 평탄화 등 다양한 용도로 활용됩니다. 세 메서드 모두 원본 배열을 변경하지 않는 불변성을 유지합니다.

핵심 포인트
  • • map은 변환, filter는 선택, reduce는 축적
  • • 모두 새로운 배열/값을 반환
  • • 원본 배열 불변성 유지
  • • 함수형 프로그래밍 패러다임
Follow-up 질문

reduce를 사용하여 map이나 filter의 동작을 구현할 수 있는지, 가능하다면 어떻게 접근할 수 있는지 설명해주세요.

5 웹 성능 최적화
Medium

Q. 웹 애플리케이션에서 이미지 로딩 최적화를 위해 사용할 수 있는 Lazy Loading 기법을 설명하고, 구현 방법을 말씀해주세요.

A. 모범답안

Lazy Loading은 뷰포트에 보이지 않는 이미지를 즉시 로드하지 않고, 사용자가 스크롤하여 해당 영역에 도달할 때 로드하는 기법입니다. 초기 페이지 로딩 속도를 개선하고 불필요한 네트워크 대역폭 사용을 줄일 수 있습니다. 구현 방법으로는 img 태그의 loading 속성에 lazy 값을 설정하는 네이티브 방식, Intersection Observer API를 사용하여 요소의 가시성을 감지하는 방식, 또는 react-lazyload 같은 라이브러리를 활용하는 방법이 있습니다. 최신 브라우저에서는 네이티브 lazy loading이 가장 간단하고 효과적입니다.

핵심 포인트
  • • 뷰포트 진입 시점에 이미지 로드
  • • 초기 로딩 속도 개선
  • • 네이티브 loading 속성 또는 Intersection Observer 활용
  • • 네트워크 대역폭 절약
Follow-up 질문

Intersection Observer API의 동작 원리와 threshold 옵션의 역할에 대해 설명해주세요.

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!