React 주니어 CS 기초 면접

React 주니어 (1~3년) CS 기초 5문항 조회수 115 · 2026-05-25 (월) 11:10:35
1 자료구조
Easy

Q. 해시 테이블(Hash Table)의 동작 원리와 시간 복잡도를 설명하고, JavaScript의 어떤 자료구조가 해시 테이블로 구현되어 있는지 말씀해주세요.

A. 모범답안

해시 테이블은 키를 해시 함수를 통해 인덱스로 변환하여 값을 저장하는 자료구조입니다. 평균적으로 O(1)의 시간 복잡도로 데이터를 조회, 삽입, 삭제할 수 있습니다. JavaScript의 Object와 Map이 내부적으로 해시 테이블로 구현되어 있으며, React에서 상태 관리나 데이터 캐싱 시 빠른 접근이 필요할 때 활용됩니다. 다만 해시 충돌이 발생하면 성능이 저하될 수 있습니다.

핵심 포인트
  • • 해시 함수로 키를 인덱스로 변환
  • • 평균 O(1) 시간 복잡도
  • • JavaScript의 Object와 Map이 해시 테이블 기반
  • • 해시 충돌 시 성능 저하 가능
Follow-up 질문

해시 충돌을 해결하는 방법에는 어떤 것들이 있나요?

2 네트워크
Medium

Q. REST API의 주요 특징과 설계 원칙을 설명하고, RESTful하지 않은 API 설계의 예시를 들어주세요.

A. 모범답안

REST API는 자원을 URI로 표현하고, HTTP 메서드로 행위를 정의하며, 무상태성(Stateless)을 유지하는 아키텍처 스타일입니다. 주요 원칙으로는 자원 중심의 URI 설계, 적절한 HTTP 메서드 사용, 계층 구조 표현 등이 있습니다. RESTful하지 않은 예로는 '/getUserById?id=1' 대신 '/api/user/1'을 사용하거나, 모든 요청에 POST만 사용하는 경우가 있습니다. React 애플리케이션에서는 axios나 fetch를 통해 RESTful API와 통신합니다.

핵심 포인트
  • • 자원 중심의 URI 설계
  • • HTTP 메서드로 행위 표현
  • • 무상태성 유지
  • • 명사형 URI 사용, 동사 지양
Follow-up 질문

REST API와 GraphQL의 차이점과 각각의 장단점은 무엇인가요?

3 데이터베이스
Easy

Q. 데이터베이스 인덱스(Index)의 개념과 장단점을 설명하고, 언제 인덱스를 생성하는 것이 좋은지 말씀해주세요.

A. 모범답안

인덱스는 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로, 책의 색인과 같은 역할을 합니다. 장점은 SELECT 쿼리의 조회 속도가 크게 향상되며, WHERE, JOIN, ORDER BY 절의 성능이 개선됩니다. 단점은 INSERT, UPDATE, DELETE 시 인덱스도 함께 갱신되어 쓰기 성능이 저하되고, 추가 저장 공간이 필요합니다. 자주 조회되는 컬럼이나 WHERE 절에 자주 사용되는 컬럼에 인덱스를 생성하는 것이 효과적입니다.

핵심 포인트
  • • 검색 속도 향상을 위한 자료구조
  • • 조회 성능 향상, 쓰기 성능 저하
  • • 추가 저장 공간 필요
  • • 자주 조회되는 컬럼에 적용
Follow-up 질문

복합 인덱스(Composite Index)는 무엇이며, 컬럼 순서가 중요한 이유는 무엇인가요?

4 알고리즘
Medium

Q. 정렬 알고리즘 중 버블 정렬(Bubble Sort)과 퀵 정렬(Quick Sort)의 시간 복잡도를 비교하고, JavaScript의 Array.sort() 메서드는 어떤 알고리즘을 사용하는지 설명해주세요.

A. 모범답안

버블 정렬은 인접한 요소를 비교하며 정렬하는 알고리즘으로 시간 복잡도가 O(n^2)입니다. 퀵 정렬은 피벗을 기준으로 분할 정복하는 알고리즘으로 평균 O(n log n), 최악 O(n^2)의 시간 복잡도를 가집니다. JavaScript의 Array.sort()는 V8 엔진 기준으로 Timsort를 사용하며, 최선/평균/최악 모두 O(n log n)의 안정적인 성능을 보장합니다. React에서 대량의 데이터를 정렬할 때는 useMemo를 활용해 불필요한 재정렬을 방지하는 것이 좋습니다.

핵심 포인트
  • • 버블 정렬 O(n^2), 퀵 정렬 평균 O(n log n)
  • • Array.sort()는 Timsort 사용
  • • 안정 정렬과 불안정 정렬의 차이
  • • 대량 데이터 정렬 시 메모이제이션 활용
Follow-up 질문

안정 정렬(Stable Sort)과 불안정 정렬(Unstable Sort)의 차이는 무엇이며, 실무에서 왜 중요한가요?

5 네트워크
Medium

Q. CORS(Cross-Origin Resource Sharing)가 무엇인지 설명하고, React 개발 중 CORS 에러가 발생하는 이유와 해결 방법을 말씀해주세요.

A. 모범답안

CORS는 웹 브라우저의 보안 정책으로, 다른 출처(Origin)의 리소스에 접근할 때 서버의 명시적인 허가가 필요한 메커니즘입니다. 출처는 프로토콜, 도메인, 포트의 조합으로 결정되며, 하나라도 다르면 다른 출처로 간주됩니다. React 개발 시 localhost:3000에서 다른 도메인의 API를 호출하면 CORS 에러가 발생합니다. 해결 방법으로는 서버에서 Access-Control-Allow-Origin 헤더 설정, 개발 환경에서 프록시 설정(package.json의 proxy 옵션), 또는 CORS 미들웨어 사용이 있습니다.

핵심 포인트
  • • 브라우저의 동일 출처 정책
  • • 프로토콜, 도메인, 포트가 모두 같아야 동일 출처
  • • 서버에서 CORS 헤더 설정 필요
  • • 개발 환경에서는 프록시로 우회 가능
Follow-up 질문

Preflight 요청이 무엇이며, 언제 발생하나요?

댓글 0

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

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