Node.js 주니어 종합 기술면접

Node.js 주니어 (1~3년) 종합 5문항 조회수 107 · 2026-06-14 (일) 11:10:41
1 JavaScript 기초
Easy

Q. JavaScript에서 var, let, const의 차이점을 스코프(scope)와 재할당 관점에서 설명하고, 실무에서 const를 우선적으로 사용하는 이유를 설명해주세요.

A. 모범답안

var는 함수 스코프를 가지며 재선언과 재할당이 모두 가능합니다. let은 블록 스코프를 가지며 재할당은 가능하지만 재선언은 불가능합니다. const는 블록 스코프를 가지며 재선언과 재할당 모두 불가능합니다. 실무에서는 const를 우선 사용하여 의도하지 않은 값 변경을 방지하고 코드의 예측 가능성을 높입니다. 재할당이 필요한 경우에만 let을 사용하며, var는 호이스팅과 스코프 문제로 인해 사용을 지양합니다.

핵심 포인트
  • • var는 함수 스코프, let과 const는 블록 스코프
  • • const는 재할당 불가능하여 불변성 보장
  • • const 우선 사용으로 코드 안정성 향상
Follow-up 질문

const로 선언한 객체의 프로퍼티를 변경할 수 있는 이유는 무엇이며, 객체를 완전히 불변으로 만들려면 어떤 방법을 사용해야 하나요?

2 Node.js 패키지 관리
Easy

Q. npm에서 package.json의 dependencies와 devDependencies의 차이를 설명하고, 각각에 어떤 패키지를 설치해야 하는지 예시와 함께 설명해주세요.

A. 모범답안

dependencies는 애플리케이션 실행에 필요한 패키지를 관리하며, 프로덕션 환경에서도 필요한 패키지들입니다. devDependencies는 개발 과정에서만 필요한 패키지를 관리하며, 프로덕션 빌드에는 포함되지 않습니다. dependencies에는 express, mongoose 같은 런타임 패키지를, devDependencies에는 nodemon, jest, eslint 같은 개발 도구를 설치합니다. npm install --production 명령어를 사용하면 devDependencies는 설치되지 않아 배포 시 용량을 절약할 수 있습니다.

핵심 포인트
  • • dependencies는 프로덕션 실행에 필요한 패키지
  • • devDependencies는 개발 단계에서만 필요한 패키지
  • • 배포 환경에서는 devDependencies 제외 가능
Follow-up 질문

package-lock.json 파일의 역할과 이 파일을 git에 커밋해야 하는 이유를 설명해주세요.

3 데이터베이스 설계
Medium

Q. 블로그 서비스에서 사용자(User)와 게시글(Post)의 관계를 데이터베이스로 설계할 때, 1:N 관계를 어떻게 표현하는지 설명하고, 외래키(Foreign Key)의 역할과 참조 무결성에 대해 설명해주세요.

A. 모범답안

User와 Post는 1:N 관계로, 한 명의 사용자가 여러 게시글을 작성할 수 있습니다. Post 테이블에 user_id 컬럼을 외래키로 추가하여 User 테이블의 id를 참조하도록 설계합니다. 외래키는 두 테이블 간의 관계를 정의하며, 참조 무결성을 통해 존재하지 않는 사용자를 참조하는 게시글이 생성되는 것을 방지합니다. CASCADE 옵션을 설정하면 사용자 삭제 시 관련 게시글도 함께 삭제되도록 할 수 있습니다.

핵심 포인트
  • • 1:N 관계는 N쪽 테이블에 외래키 설정
  • • 외래키로 참조 무결성 보장
  • • CASCADE 옵션으로 연쇄 동작 정의 가능
Follow-up 질문

게시글에 여러 태그를 달 수 있고, 한 태그가 여러 게시글에 사용될 수 있는 N:M 관계는 어떻게 설계해야 하나요?

4 Node.js 모듈 시스템
Medium

Q. Node.js에서 CommonJS(require/module.exports)와 ES6 Module(import/export)의 차이점을 설명하고, 각각의 로딩 방식과 실무에서 선택할 때 고려해야 할 점을 설명해주세요.

A. 모범답안

CommonJS는 Node.js의 기본 모듈 시스템으로 동기적으로 모듈을 로드하며, require 함수와 module.exports를 사용합니다. ES6 Module은 비동기적으로 로드되며, import/export 키워드를 사용하고 정적 분석이 가능하여 트리 쉐이킹 같은 최적화가 가능합니다. CommonJS는 런타임에 모듈을 로드하지만, ES6 Module은 컴파일 타임에 의존성을 파악합니다. 최신 Node.js에서는 package.json에 type: module을 설정하여 ES6 Module을 사용할 수 있으며, 프론트엔드와 코드 공유 시 ES6 Module이 유리합니다.

핵심 포인트
  • • CommonJS는 동기 로딩, ES6 Module은 비동기 로딩
  • • ES6 Module은 정적 분석으로 최적화 가능
  • • package.json 설정으로 모듈 시스템 선택
Follow-up 질문

Node.js 프로젝트에서 CommonJS와 ES6 Module을 혼용할 때 발생할 수 있는 문제와 해결 방법은 무엇인가요?

5 API 인증
Medium

Q. Node.js API 서버에서 사용자 인증을 구현할 때 쿠키 기반 세션 방식과 JWT(JSON Web Token) 방식의 차이를 설명하고, 각각의 장단점을 stateful/stateless 관점에서 비교해주세요.

A. 모범답안

쿠키 기반 세션 방식은 서버에 세션 데이터를 저장하고 클라이언트에는 세션 ID만 쿠키로 전달하는 stateful 방식입니다. JWT 방식은 토큰 자체에 사용자 정보를 담아 클라이언트에 전달하고 서버는 상태를 저장하지 않는 stateless 방식입니다. 세션 방식은 서버에서 즉시 세션을 무효화할 수 있지만 서버 메모리나 Redis 같은 저장소가 필요하며, 수평 확장 시 세션 공유가 필요합니다. JWT는 서버 부담이 적고 확장성이 좋지만, 토큰 만료 전까지 강제 로그아웃이 어렵고 토큰 크기가 세션 ID보다 큽니다.

핵심 포인트
  • • 세션은 stateful, JWT는 stateless 방식
  • • 세션은 즉시 무효화 가능, JWT는 확장성 우수
  • • 각 방식의 선택은 서비스 요구사항에 따라 결정
Follow-up 질문

JWT의 보안을 강화하기 위해 Refresh Token을 함께 사용하는 이유와 동작 방식을 설명해주세요.

댓글 0

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

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