Java 자료구조 면접 질문 리스트 List 관련 ArrayList vs LinkedList

ArrayList와 LinkedList의 차이점과 언제 사용하나? ArrayList의 내부 구조와 동적 크기 조정 원리는? LinkedList에서 중간 삽입/삭제가 빠른 이유는? 각각의 시간복잡도는? (조회, 삽입, 삭제)

Vector vs ArrayList

Vector와 ArrayList의 차이점은? 멀티스레드 환경에서 안전한 List는? Collections.synchronizedList()와 Vector 차이점은?

Set 관련 HashSet vs TreeSet vs LinkedHashSet

각각의 특징과 사용 시나리오는? HashSet의 내부 구조와 해시 충돌 해결 방법은? TreeSet의 정렬 기준은? Comparable vs Comparator 중복 제거가 필요한 상황에서 어떤 Set을 선택할까?

Map 관련 HashMap vs TreeMap vs LinkedHashMap

각각의 특징과 성능 차이는? HashMap의 내부 구조 (버킷, 해시 함수, 충돌 해결) Java 8에서 HashMap의 개선사항은? (Red-Black Tree) ConcurrentHashMap과 HashMap의 차이점은?

HashMap 심화

hashCode()와 equals() 메서드의 역할은? 해시 충돌이 발생하면 어떻게 처리하나? Load Factor가 무엇이고 왜 중요한가? HashMap의 초기 용량을 어떻게 설정해야 하나?

Queue/Deque 관련 Queue 구현체들

ArrayDeque vs LinkedList as Queue PriorityQueue의 특징과 내부 구조는? BlockingQueue의 종류와 사용 시나리오는?

Stack

Stack 클래스 대신 Deque를 권장하는 이유는? 스택 오버플로우가 발생하는 상황은?

컬렉션 프레임워크 Iterator vs Enhanced for-loop

Iterator를 사용하는 이유는? ConcurrentModificationException이 언제 발생하나? fail-fast vs fail-safe Iterator 차이점은?

Comparable vs Comparator

언제 각각을 사용하나? 정렬 기준이 여러 개일 때 어떻게 처리하나?

java// 면접에서 구현 요청 가능 public class Person implements Comparable { // compareTo 구현 } 성능 및 최적화 시간복잡도 질문

각 컬렉션의 주요 연산별 시간복잡도는? O(1), O(log n), O(n) 연산들을 구분해서 설명 대용량 데이터 처리 시 어떤 자료구조를 선택할까?

메모리 관리

ArrayList의 trimToSize() 메서드는 언제 사용하나? WeakHashMap의 사용 시나리오는? 메모리 누수를 방지하는 방법은?

동시성 관련 Thread-Safe 컬렉션

Collections.synchronizedXxx()와 ConcurrentXxx 차이점은? CopyOnWriteArrayList는 언제 사용하나? ConcurrentHashMap의 동작 원리는?

실무 활용 적절한 자료구조 선택

캐시 구현 시 어떤 자료구조를 사용할까? 중복 제거와 정렬이 모두 필요하면? 삽입 순서를 유지하면서 빠른 검색이 필요하면?

성능 최적화

java// 면접에서 개선 요청 가능
List<String> list = new ArrayList<>();
for(int i = 0; i < 10000; i++) {
    list.add("item" + i);

// 어떻게 최적화할까? 코딩 테스트 연계 자료구조 활용 문제

LRU 캐시 구현하기 최빈값 찾기 (HashMap 활용) 괄호 유효성 검사 (Stack 활용) 우선순위 작업 스케줄링 (PriorityQueue)

면접 예상 답변 예시 Q: ArrayList와 LinkedList 중 어떤 것을 선택할까요? A: “사용 패턴에 따라 다릅니다. 인덱스 기반 조회가 많으면 ArrayList(O(1)), 중간 삽입/삭제가 많으면 LinkedList(O(1))를 선택합니다. 하지만 실무에서는 대부분 ArrayList를 사용하는데, 현대 CPU의 캐시 지역성 때문에 연속된 메모리 배치가 유리하기 때문입니다.” 핵심: 각 자료구조의 내부 동작 원리와 실무 활용 경험을 함께 설명할 수 있어야 합니다!

컬렉션 프레임워크 전체 면접 질문

  1. 전체 구조 관련

컬렉션 프레임워크의 주요 인터페이스들과 특징은? Collection과 Map의 차이점은? Iterable 인터페이스의 역할은?

  1. List 계열

ArrayList vs LinkedList vs Vector 차이점 List의 주요 메서드들과 시간복잡도

  1. Set 계열

HashSet vs TreeSet vs LinkedHashSet 차이점 Set에서 중복을 어떻게 판별하나?

  1. Map 계열

HashMap vs TreeMap vs LinkedHashMap HashMap의 내부 구조와 해시 충돌 해결

  1. Queue/Deque 계열

PriorityQueue vs ArrayDeque LinkedList가 List와 Deque를 모두 구현하는 이유

면접에서 컬렉션 프레임워크 답변 예시 Q: 컬렉션 프레임워크에 대해 설명해주세요 A: “Java 컬렉션 프레임워크는 데이터를 저장하고 조작하기 위한 통일된 아키텍처입니다. 주요 인터페이스로는 Collection(List, Set, Queue)과 Map이 있고, 각각 다양한 구현체를 제공합니다. List는 순서가 있고 중복을 허용하며 ArrayList, LinkedList 등이 있습니다. Set은 중복을 허용하지 않고 HashSet, TreeSet 등이 있습니다. Map은 key-value 쌍을 저장하며 HashMap, TreeMap 등이 있습니다. 실무에서는 사용 패턴에 따라 적절한 구현체를 선택하는 것이 중요합니다.” Q: ArrayList는 컬렉션 프레임워크에서 어떤 위치인가요? A: “ArrayList는 List 인터페이스의 구현체 중 하나입니다. List 인터페이스는 Collection을 상속받아서 순서가 있고 중복을 허용하는 컬렉션을 정의합니다. ArrayList는 같은 List 구현체인 LinkedList, Vector와 동일한 메서드를 제공하지만 내부 구현이 달라서 성능 특성이 다릅니다. 이것이 컬렉션 프레임워크의 장점으로, 인터페이스는 동일하게 사용하면서 필요에 따라 구현체만 바꿀 수 있습니다.”