JavaScript 주니어 CS 기초 면접

JavaScript 주니어 (1~3년) CS 기초 5문항 조회수 100 · 2026-06-11 (목) 03:10:40
1 자료구조
Easy

Q. 스택(Stack)과 큐(Queue)의 차이점을 설명하고, JavaScript에서 각각을 배열 메서드를 이용해 어떻게 구현할 수 있는지 말씀해주세요.

A. 모범답안

스택은 LIFO(Last In First Out) 구조로 마지막에 들어온 데이터가 먼저 나가며, JavaScript에서는 push()와 pop()을 사용해 구현할 수 있습니다. 큐는 FIFO(First In First Out) 구조로 먼저 들어온 데이터가 먼저 나가며, push()와 shift() 또는 unshift()와 pop()을 사용해 구현할 수 있습니다. 스택은 함수 호출 스택, 브라우저 히스토리 등에 사용되고, 큐는 비동기 작업 처리, 프린터 대기열 등에 활용됩니다.

핵심 포인트
  • • 스택은 LIFO, 큐는 FIFO 구조
  • • 스택은 push/pop, 큐는 push/shift로 구현
  • • 각각의 실무 활용 사례 이해
Follow-up 질문

JavaScript의 이벤트 루프에서 콜백 함수들이 처리되는 과정을 스택과 큐의 관점에서 설명해주실 수 있나요?

2 네트워크
Easy

Q. HTTP와 HTTPS의 차이점을 설명하고, HTTPS가 보안을 제공하는 방식에 대해 말씀해주세요.

A. 모범답안

HTTP는 평문으로 데이터를 전송하는 프로토콜이고, HTTPS는 HTTP에 SSL/TLS 암호화 계층을 추가한 프로토콜입니다. HTTPS는 공개키와 개인키를 사용한 비대칭 암호화로 초기 연결을 수립하고, 이후 대칭키 암호화로 데이터를 주고받아 중간자 공격을 방지합니다. 또한 인증서를 통해 서버의 신원을 검증하여 피싱 공격을 예방하며, 기본 포트는 HTTP가 80, HTTPS가 443을 사용합니다.

핵심 포인트
  • • HTTPS는 SSL/TLS로 암호화된 HTTP
  • • 비대칭 암호화로 연결 수립, 대칭키로 데이터 전송
  • • 인증서를 통한 서버 신원 검증
Follow-up 질문

웹 애플리케이션에서 민감한 정보를 다룰 때 HTTPS만으로 충분한가요? 추가로 고려해야 할 보안 사항은 무엇이 있을까요?

3 데이터베이스
Medium

Q. 관계형 데이터베이스에서 인덱스(Index)가 무엇인지 설명하고, 인덱스를 사용했을 때의 장점과 단점을 말씀해주세요.

A. 모범답안

인덱스는 데이터베이스 테이블의 검색 속도를 향상시키기 위해 특정 컬럼의 값을 정렬하여 별도로 저장한 자료구조입니다. 장점으로는 SELECT 쿼리의 WHERE, ORDER BY 절 성능이 크게 향상되고, JOIN 연산 속도도 개선됩니다. 단점으로는 INSERT, UPDATE, DELETE 작업 시 인덱스도 함께 수정해야 하므로 쓰기 성능이 저하되고, 인덱스 저장을 위한 추가 디스크 공간이 필요합니다. 따라서 읽기가 많고 쓰기가 적은 컬럼에 인덱스를 설정하는 것이 효과적입니다.

핵심 포인트
  • • 인덱스는 검색 속도 향상을 위한 별도 자료구조
  • • 읽기 성능 향상, 쓰기 성능 저하 트레이드오프
  • • 추가 저장 공간 필요
Follow-up 질문

사용자 테이블에서 이메일 컬럼과 생성일 컬럼 중 어느 것에 인덱스를 설정하는 것이 더 효과적일까요? 그 이유는 무엇인가요?

4 알고리즘
Medium

Q. 시간 복잡도 O(1), O(n), O(log n), O(n²)의 의미를 설명하고, 각각의 예시 알고리즘을 말씀해주세요.

A. 모범답안

O(1)은 입력 크기와 관계없이 일정한 시간이 걸리며 배열의 인덱스 접근이 대표적입니다. O(n)은 입력 크기에 비례하여 시간이 증가하며 배열 순회, 선형 탐색이 해당됩니다. O(log n)은 입력이 증가해도 시간이 로그 비율로만 증가하며 이진 탐색이 대표적입니다. O(n²)은 입력 크기의 제곱에 비례하며 중첩 반복문을 사용하는 버블 정렬, 선택 정렬 등이 해당됩니다. 효율적인 알고리즘 선택을 위해서는 데이터 크기와 시간 복잡도를 함께 고려해야 합니다.

핵심 포인트
  • • 각 시간 복잡도의 성장률 차이 이해
  • • 실제 알고리즘 예시와 연결
  • • 데이터 크기에 따른 성능 차이 인지
Follow-up 질문

1만 개의 정렬된 배열에서 특정 값을 찾을 때, 선형 탐색 O(n)과 이진 탐색 O(log n)의 실제 비교 횟수 차이는 대략 얼마나 될까요?

5 운영체제
Medium

Q. 프로세스(Process)와 스레드(Thread)의 차이점을 설명하고, Node.js가 싱글 스레드 기반임에도 비동기 처리가 가능한 이유를 말씀해주세요.

A. 모범답안

프로세스는 운영체제로부터 독립적인 메모리 공간을 할당받아 실행되는 프로그램의 인스턴스이고, 스레드는 프로세스 내에서 실행되는 작업 단위로 같은 프로세스의 스레드들은 메모리를 공유합니다. Node.js는 JavaScript 실행은 싱글 스레드로 하지만, 파일 I/O, 네트워크 요청 등의 비동기 작업은 libuv 라이브러리의 스레드 풀에서 처리합니다. 비동기 작업이 완료되면 콜백이 이벤트 큐에 추가되고, 이벤트 루프가 메인 스레드에서 이를 순차적으로 처리하여 논블로킹 동작을 구현합니다.

핵심 포인트
  • • 프로세스는 독립 메모리, 스레드는 메모리 공유
  • • Node.js는 메인 로직은 싱글 스레드, I/O는 스레드 풀 사용
  • • 이벤트 루프를 통한 비동기 처리
Follow-up 질문

멀티 스레드 환경에서 발생할 수 있는 동시성 문제에는 어떤 것들이 있으며, 이를 해결하기 위한 방법은 무엇이 있을까요?

댓글 0

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

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