기초 개념, 기술 면접 대비

자료구조 면접 퀴즈

효율적인 데이터 관리의 기초

배열, 연결리스트, 스택, 큐, 트리, 그래프 등 핵심 자료구조를 마스터하세요. 면접에서 자주 나오는 시간/공간 복잡도 분석까지.

로그인 없이 풀어보기
50개 문제, 무료

학습할 핵심 개념

배열과 동적 배열
연결리스트 (단일/이중)
스택과 큐
해시테이블
트리 (이진, BST, AVL)
그래프 (DFS, BFS)
힙과 우선순위 큐

핵심 개념 미리보기

자료구조 면접에서 꼭 나오는 개념을 미리 확인하세요

배열 (Array)

핵심

배열 (Array)

메모리 구조

인덱스01234
1020304050
주소100104108112116

주소가 4씩 일정하게 늘어납니다. 연속된 메모리 공간에 놓이기 때문입니다.

시간 복잡도

연산복잡도이유
인덱스 접근O(1)주소 = 시작 + index × size
뒤에 추가O(1)배열 확장 시 O(n)
앞/중간 삽입O(n)뒤 요소 전부 시프트
삭제O(n)빈 공간 메우기
탐색 (미정렬)O(n)순차 탐색
탐색 (정렬)O(log n)이진 탐색 가능

실무 포인트

  • 캐시 지역성: 연속 메모리라 CPU 캐시 히트율 높음
  • Java ArrayList: 내부적으로 배열. 조회 많으면 유리
  • 동적 배열: 용량 초과 시 2배로 확장 후 복사 (amortized O(1))

면접 키워드

"배열은 왜 인덱스 접근이 O(1)인가?" → 연속 메모리 + 주소 계산

면접에서 이렇게 나옵니다
  • Q.배열에서 인덱스 접근이 O(1)인 이유를 설명해주세요
  • Q.동적 배열(ArrayList)의 확장 방식을 설명해주세요
  • Q.배열 vs 연결리스트, 캐시 효율 관점에서 비교해주세요

연결 리스트 (Linked List)

핵심

연결 리스트 (Linked List)

구조

단일 연결 리스트:
[10|→] → [20|→] → [30|→] → null
 head

이중 연결 리스트:
null ← [←|10|→] ⇄ [←|20|→] ⇄ [←|30|→] → null
         head                        tail

시간 복잡도

연산복잡도이유
앞에 삽입O(1)head 포인터만 변경
뒤에 삽입O(1)tail 포인터 있을 때
중간 삽입O(n)위치까지 순회 필요
인덱스 접근O(n)순차 탐색만 가능
삭제O(1)노드 참조 있을 때

배열 vs 연결 리스트

항목배열연결 리스트
메모리연속 할당분산 할당
캐시 효율높음낮음
삽입/삭제O(n)O(1)
랜덤 접근O(1)O(n)

실무 포인트

  • Java LinkedList: Deque 인터페이스 구현 (큐/스택 모두 가능)
  • LRU 캐시: 이중 연결 리스트 + 해시맵 조합
  • 실무에서는 캐시 지역성 때문에 ArrayList가 대부분 빠름
면접에서 이렇게 나옵니다
  • Q.연결 리스트의 장단점을 설명해주세요
  • Q.LRU 캐시를 연결 리스트로 구현하는 방법은?
  • Q.단일 vs 이중 연결 리스트 차이는?

배열 vs 연결리스트

핵심

배열 vs 연결리스트

데이터를 순서대로 저장하는 두 가지 기본 자료구조. 메모리 구조와 성능 특성이 정반대.

메모리 구조

[배열] 연속된 메모리
┌───┬───┬───┬───┬───┐
│ A │ B │ C │ D │ E │
└───┴───┴───┴───┴───┘
0x100 104 108 10C 110

[연결리스트] 흩어진 메모리
┌───┬──┐  ┌───┬──┐  ┌───┬──┐
│ A │ →├─→│ B │ →├─→│ C │ ∅│
└───┴──┘  └───┴──┘  └───┴──┘
0x200     0x500     0x300

시간 복잡도 비교

연산배열연결리스트
인덱스 접근O(1)O(N)
앞에 삽입O(N)O(1)
뒤에 추가O(1)*O(1)
중간 삽입O(N)O(1)+탐색
검색O(N)O(N)
메모리연속 필요분산 가능

*동적 배열 amortized

언제 무엇을 쓸까?

상황선택이유
인덱스로 자주 접근배열O(1) 접근
삽입/삭제 빈번연결리스트O(1) 삽입
크기 고정배열메모리 효율
크기 가변적연결리스트동적 할당
캐시 성능 중요배열캐시 지역성

캐시 지역성 (실무에서 중요!)

[배열] CPU 캐시에 한번에 로드
→ 연속 메모리 → 캐시 히트율 높음
→ 실제 성능 우수

[연결리스트] 메모리 곳곳에 흩어짐
→ 캐시 미스 빈번 → 실제 성능 저하

실무에서는 배열(ArrayList)이 대부분 유리

면접에서 이렇게 나옵니다
  • Q.배열과 연결리스트의 차이를 설명해주세요.
  • Q.배열과 연결리스트의 시간복잡도 차이를 설명해주세요
  • Q.배열의 삽입이 O(N)인 이유는?

더 많은 개념과 문제는 가입 후 이용할 수 있어요

먼저 5문제 맛보기

자료구조 면접 빈출 질문

실제 면접에서 자주 나오는 질문들입니다

Q.

배열에서 인덱스 접근이 O(1)인 이유를 설명해주세요

배열 (Array) 개념 정리 보기
Q.

동적 배열(ArrayList)의 확장 방식을 설명해주세요

배열 (Array) 개념 정리 보기
Q.

배열 vs 연결리스트, 캐시 효율 관점에서 비교해주세요

배열 (Array) 개념 정리 보기
Q.

배열에서 중간 삽입이 O(n)인 이유는?

배열 (Array) 개념 정리 보기
Q.

연결 리스트의 장단점을 설명해주세요

연결 리스트 (Linked List) 개념 정리 보기
Q.

LRU 캐시를 연결 리스트로 구현하는 방법은?

연결 리스트 (Linked List) 개념 정리 보기
Q.

단일 vs 이중 연결 리스트 차이는?

연결 리스트 (Linked List) 개념 정리 보기
Q.

연결 리스트에서 사이클을 검출하는 방법은?

연결 리스트 (Linked List) 개념 정리 보기

이런 점이 좋아요

코딩 테스트 기초 완성

알고리즘 이해도 향상

면접 대비 핵심 개념

지금 바로 시작하세요

무료로 자료구조 퀴즈를 풀고, AI 오답 분석으로 실력을 키우세요.