반응형

2025/09 2

[Java기술면접] ArrayList vs LinkedList 차이 및 시간 복잡도란?

시간 복잡도란?어떤 코드/알고리즘이 얼마나 빨리 동작하는지를 나타내는 단위예요.그런데 "몇 초" 같은 절대 시간이 아니라, 데이터 양(n)이 늘어날 때 연산 횟수가 얼마나 늘어나는지를 보는 거예요. 즉, 성능의 성장률을 나타낸 것. O(1), O(n) 이건 뭔데?O(...) 표기법 = Big-O 표기법이라고 부르고, 최악의 경우에 연산이 얼마나 걸리는지 표현한다.자주 나오는 예시O(1) : 데이터 개수와 상관없이 항상 일정한 시간.→ "한 번에 바로 찾는다."예: 배열에서 arr[5]처럼 인덱스로 값 꺼내기.O(n) : 데이터 개수(n)에 비례해서 시간이 늘어남.→ "처음부터 끝까지 다 뒤져야 한다."예: 배열에서 "값이 7인 원소 찾기" (최악의 경우 전부 확인해야 함).O(log n) : 데이터가 늘..

기술면접 2025.09.08

[Java 기술면접] ConcurrentModificationException 발생

이건 자바 면접에서 정말 자주 나오는 ConcurrentModificationException 문제이다. List list = new ArrayList(Arrays.asList("a","b","c"));for (String s : list) { if (s.equals("n")) { list.remove(s); // 여기서 문제 !! }} 1. 왜 오류가 날까? for-each 문은 내부적으로 Iterator를 사용해 리스트를 순회합니다.그런데 순회 도중에 list.remove(s)로 직접 리스트를 수정하면,Iterator가 감지 → ConcurrentModificationException 발생.즉, “Iterator로 순회 중인데, 너 몰래 리스트를 건드렸다”라는 상황이다. 2. 안전하게 ..

기술면접 2025.09.08
반응형