Q1) ArrayList와 LinkedList의 차이점은 무엇인가요?
A1) ArrayList와 LinkedList는 모두 자바에서 리스트를 구현하는 데 사용하는 클래스입니다. ArrayList는 배열을 이용해 리스트를 구현하므로 인덱스를 기반으로 리스트의 요소에 빠르게 접근할 수 있습니다. 하지만 요소를 추가하거나 삭제하는 경우 배열 크기를 변경해야 해서 시간이 많이 소요됩니다. 반면, LinkedList는 연결 리스트로 구현해서 요소의 삽입과 삭제가 빠릅니다. 하지만 특정 요소에 접근할 때 순차적으로 접근하므로 배열보다 시간이 많이 소요된다는 단점이 있습니다.
Q2) 자바에서 추상 클래스와 인터페이스의 차이점은 무엇인가요?
A2) 자바의 추상 클래스와 인터페이스는 추상화를 위한 개념입니다. 하지만 추상 클래스는 클래스의 일종이므로 단일 상속만 지원하며, 구현부가 없는 추상 메서드 뿐만 아니라 일반 메서드와 변수도 가질 수 있습니다. 반면, 인터페이스는 모든 메서드가 추상 메서드이며 다중 상속을 지원합니다.
Q3) 자바의 가비지 컬렉터에 대해 설명해 주세요.
A3) 가비지 컬렉터는 동적 할당된 메모리 영역에서 사용하지 않는 메모리를 정리하는 역할을 합니다. 또한, 자동으로 실행되기 때문에 메모리 관리에 대한 부담을 덜어 줍니다. 가비지 컬렉터에는 reachability라는 개념을 적용합니다. 이는 참조되는 객체를 reachable, 참조되지 않은 객체를 inreachable하다고 판단합니다. 가비지 컬렉터는 inreachable한 객체들을 불필요하다고 판단하고 이를 제거하는 방법으로 메모리를 관리합니다.
'공부 기록 > CS' 카테고리의 다른 글
| 운영체제 정리 (2) | 2025.07.31 |
|---|---|
| 6.3 인공지능 (0) | 2024.08.20 |
| 6.1 객체 지향 프로그래밍 (0) | 2024.08.16 |
| 5장 요약정리 (0) | 2024.08.15 |
| 5.3 최단 거리 알고리즘 (0) | 2024.08.14 |