❓ 컬렉션 프레임워크의 종류에 대해서 설명해주세요.
컬렉션은 복수의 자료형을 저장할 수 있고 가변적 크기를 가집니다.
- List : LinkedList, Vector. ArrayList
순서가 있는 데이터의 집합으로 데이터의 중복을 허용합니다.
- Set : HashSet, TreeSet
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않습니다.
- Map : HashTable, HashMap, TreeMap
순서를 유지하지 않으며 키와 쌍으로 이루어진 데이터의 집합으로 키는 중복을 허용하지 않고 값을 중복을 허용합니다.
❓ 배열(Array)과 컬렉션 중 연결 리스트(Linked List)에 대해서 설명해주세요.
- 배열
단 하나의 자료형만 저장할 수 있고 인덱스를 가집니다.
데이터를 한 번에 접근하여 접근 속도가 빠르나 크기를 변경할 수 없다는 단점이 있습니다.
- 연결 리스트
인덱스 대신 현재 위치의 이전, 다음 위치를 기억하고
크기가 가변적이라는 장점이 있으나 한 번에 접근이 불가하여 연결된 링크를 따라가야만 접근이 가능하여
배열보다 속도가 떨어진다는 단점이 있습니다.
따라서 배열은 데이터 양이 많지만 삽입과 삭제가 없고 데이터 접근이 빈번할 때 사용하며
연결 리스트는 데이터 양이 적고 삽입과 삭제가 빈번할 때 사용합니다.
❓ ArrayList와 Vector에 대해서 설명해주세요.
- ArrayList
동기화되지 않아서 동기화가 필요할 때 synchronized 명령어를 사용할 수 있고 처리 속도가 빠릅니다.
- Vector
동기화되어 있어서 한 번에 하나의 스레드만 벡터의 메소드를 호출할 수 있습니다.
크기가 동적인 배열을 사용할 때 주로 사용한다는 공통점이 있으며
ArrayList는 비동기식 방식(여러 스레드가 ArrayList에서 동시에 작업 가능)이고,
Vector는 동기식 방식(한 스레드가 벡터 작업 중이면 다른 스레드가 벡터를 보유할 수 없음)이라는 점에서 차이가 있습니다.
❓ HashMap과 HashTable에 대해서 설명해주세요.
Map 인터페이스를 상속받아 구현되고 키,값 형태로 데이터를 관리하는 자료 구조입니다.
하지만 HashMap은 동기화를 지원하지 않아 단일 스레드 환경에서 사용하기 좋고
HashTable은 동기화를 지원하기 때문에 멀티 스레드 환경에서 사용하기 좋습니다.
그리고 HashMap은 Null을 허용하지만 HashTable은 Null을 허용하지 않는다는 점에서 차이가 있습니다.
❓ 스택(Stack)과 큐(Queue), 힙(Heap)에 대해서 설명해주세요.
- 스택
후입선출(LIFO) 방식으로 나중에 들어간 원소가 먼저 나오는 구조입니다.
지역 변수, 함수 등이 할당되는데 사용할 수 있습니다.
- 큐
선입선출(FIFO) 방식으로 먼저 들어간 원소가 먼저 나오는 구조입니다.
프로세스 처리, CPU 관리에서 사용할 수 있습니다.
- 힙
new 연산자를 통한 동적 할당된 객체들이 저장되며 가비지 컬렉션에 의해 메모리가 관리됩니다.
'면접' 카테고리의 다른 글
신입 개발자 면접 준비 - 네트워크, 보안 (0) | 2024.01.24 |
---|---|
신입 개발자 면접 준비 - 스프링, JPA (0) | 2024.01.22 |
신입 개발자 기술 면접 정리 - 데이터베이스 (0) | 2024.01.19 |
신입 개발자 기술 면접 정리 - JAVA (0) | 2024.01.17 |