logo

34 Java 컬렉션 인터뷰 질문

Java에서는 컬렉션 면접 질문이 면접관이 가장 많이 묻는 질문입니다. 가장 많이 묻는 컬렉션 인터뷰 질문과 답변 목록은 다음과 같습니다.


1) Java의 컬렉션 프레임워크란 무엇입니까?

컬렉션 프레임워크(Collection Framework)는 데이터를 객체 형태로 저장하고 조작하는 데 사용되는 클래스와 인터페이스의 조합입니다. 이를 위해 ArrayList, Vector, Stack, HashSet 등 다양한 클래스와 List, Queue, Set 등의 인터페이스를 제공합니다.


2) 배열과 컬렉션의 주요 차이점은 무엇입니까?

배열과 컬렉션은 객체의 참조를 저장하고 데이터를 조작하는 것과 관련하여 다소 유사하지만 여러 면에서 다릅니다. 배열과 컬렉션의 주요 차이점은 다음과 같습니다.

  • 배열은 항상 고정된 크기입니다. 즉, 사용자는 요구 사항이나 런타임에 따라 배열 길이를 늘리거나 줄일 수 없지만 컬렉션에서는 크기가 필요에 따라 동적으로 변경될 수 있습니다.
  • 배열은 동종 또는 유사한 유형의 객체만 저장할 수 있지만 Collection에서는 이종 객체를 저장할 수 있습니다.
  • 어레이는 '기성품'을 제공할 수 없습니다. 정렬, 검색 등 사용자 요구 사항에 맞는 방법이 있지만 컬렉션에는 사용할 수 있는 기성 방법이 포함되어 있습니다.

3) Collection 프레임워크에서 사용되는 다양한 인터페이스에 대해 설명해주세요.

컬렉션 프레임워크는 다양한 인터페이스를 구현하는데, Java Collection Framework에서 주로 사용되는 인터페이스로는 Collection 인터페이스와 Map 인터페이스(java.util.Map)가 있다. Collection Framework의 인터페이스 목록은 다음과 같습니다.

1. 수집 인터페이스: 컬렉션(java.util.Collection)은 기본 인터페이스이며 모든 컬렉션은 이 인터페이스를 구현해야 합니다.

통사론:

 public interface Collectionextends Iterable 

여기서는 이 인터페이스가 일반 유형임을 나타냅니다.

2. 목록 인터페이스: List 인터페이스는 Collection 인터페이스를 확장하며 순서가 지정된 객체 컬렉션입니다. 중복된 요소가 포함되어 있습니다. 또한 요소에 대한 무작위 액세스도 허용합니다.

통사론:

 public interface List extends Collection 

3. 인터페이스 설정: Set(java.util.Set) 인터페이스는 중복 요소를 포함할 수 없는 컬렉션입니다. Collection 인터페이스의 상속된 메서드만 포함할 수 있습니다.

통사론:

 public interface Set extends Collection 

대기열 인터페이스: 대기열(java.util.Queue) 인터페이스는 FIFO(선입선출) 형식으로 요소를 저장하는 대기열 데이터 구조를 정의합니다.

통사론:

 public interface Queue extends Collection 

4. 대기열 제거 인터페이스: 이는 이중 종료 대기열입니다. 양쪽 끝에서 요소를 삽입하고 제거할 수 있습니다. 스택과 큐의 속성을 모두 이식하여 LIFO(후입선출) 스택과 FIFO(선입선출) 큐 작업을 수행할 수 있습니다.

통사론:

 public interface Dequeue extends Queue 

5. 지도 인터페이스: 맵(java.util.Map)은 요소의 키, 값 쌍 저장소를 나타냅니다. Map 인터페이스는 Collection 인터페이스를 구현하지 않습니다. 고유 키만 포함할 수 있지만 중복 요소는 포함될 수 있습니다. Java에서 Map을 구현하는 인터페이스에는 Map 인터페이스와 Sorted Map이라는 두 가지 인터페이스가 있습니다.

AVL 나무

4) ArrayList와 Vector의 차이점은 무엇입니까?

아니요.배열목록벡터
1)ArrayList가 동기화되지 않았습니다.벡터가 동기화되었습니다.
2)ArrayList는 레거시 클래스가 아닙니다.Vector는 레거시 클래스입니다.
삼)ArrayList는 배열 크기의 50%만큼 크기를 늘립니다.벡터는 배열 크기를 두 배로 늘려 크기를 늘립니다.
4)ArrayList는 스레드로부터 안전하지 않습니까? 동기화되지 않았기 때문입니다.벡터 목록은 스레드로부터 안전합니까? 모든 방법이 동기화되기 때문입니다.

5) ArrayList와 LinkedList의 차이점은 무엇입니까?

아니요.배열목록링크드리스트
1)ArrayList는 동적 배열을 사용합니다.LinkedList는 이중 연결리스트를 사용합니다.
2)ArrayList는 너무 많은 양이 필요하기 때문에 조작에 효율적이지 않습니다.LinkedList는 조작에 효율적입니다.
삼)ArrayList는 데이터를 저장하고 가져오는 데 더 좋습니다.LinkedList는 데이터를 조작하는 데 더 좋습니다.
4)ArrayList는 무작위 액세스를 제공합니다.LinkedList는 임의 액세스를 제공하지 않습니다.
5)ArrayList는 객체만 저장하므로 메모리 오버헤드가 적습니다.LinkedList는 객체와 해당 객체의 주소를 저장하므로 더 많은 메모리 오버헤드를 사용합니다.

6) Iterator와 ListIterator의 차이점은 무엇입니까?

Iterator는 순방향으로만 요소를 순회하는 반면 ListIterator는 순방향 및 역방향으로 요소를 순회합니다.

아니요.반복자목록반복자
1)Iterator는 정방향으로만 요소를 탐색합니다.ListIterator는 요소를 앞뒤 방향으로 모두 순회합니다.
2)Iterator는 List, Set 및 Queue에서 사용할 수 있습니다.ListIterator는 List에서만 사용할 수 있습니다.
삼)Iterator는 컬렉션을 순회하는 동안에만 제거 작업을 수행할 수 있습니다.ListIterator는?추가,?를 수행할 수 있습니다. ?제거하다,? 그리고?설정? 컬렉션을 순회하는 동안 작업.

7) 반복자와 열거형의 차이점은 무엇입니까?

아니요.반복자열거
1)Iterator는 레거시 요소와 레거시가 아닌 요소를 순회할 수 있습니다.열거형은 레거시 요소만 순회할 수 있습니다.
2)Iterator는 실패하지 않습니다.열거는 실패하지 않습니다.
삼)Iterator는 Enumeration보다 느립니다.열거형은 Iterator보다 빠릅니다.
4)Iterator는 컬렉션을 탐색하는 동안 제거 작업을 수행할 수 있습니다.열거는 컬렉션에 대해 순회 작업만 수행할 수 있습니다.

8) 리스트와 세트의 차이점은 무엇인가요?

List와 Set은 모두 컬렉션 인터페이스를 확장합니다. 그러나 아래 나열된 둘 사이에는 몇 가지 차이점이 있습니다.

  • 목록에는 중복 요소가 포함될 수 있지만 세트에는 고유 항목이 포함됩니다.
  • List는 삽입 순서를 유지하는 정렬된 컬렉션인 반면, Set은 삽입 순서를 유지하지 않는 정렬되지 않은 컬렉션입니다.
  • List 인터페이스에는 Vector 클래스인 단일 레거시 클래스가 포함되어 있는 반면 Set 인터페이스에는 레거시 클래스가 없습니다.
  • List 인터페이스는 n개의 null 값을 허용하는 반면 Set 인터페이스는 단일 null 값만 허용합니다.

9) HashSet과 TreeSet의 차이점은 무엇입니까?

HashSet 및 TreeSet 두 클래스 모두 Set 인터페이스를 구현합니다. 두 가지의 차이점은 다음과 같습니다.

  • HashSet은 순서를 유지하지 않지만 TreeSet은 오름차순을 유지합니다.
  • HashSet은 해시 테이블에 의해 구현되는 반면 TreeSet은 Tree 구조에 의해 구현됩니다.
  • HashSet은 TreeSet보다 빠르게 수행됩니다.
  • HashSet은 HashMap의 지원을 받는 반면 TreeSet은 TreeMap의 지원을 받습니다.

10) 세트와 맵의 차이점은 무엇입니까?

세트와 맵의 차이점은 다음과 같습니다.

  • Set에는 값만 포함되는 반면 Map에는 키와 값이 모두 포함됩니다.
  • 세트에는 고유한 값이 포함되어 있지만 맵에는 중복된 값이 있는 고유한 키가 포함될 수 있습니다.
  • Set에는 단일 Null 값이 포함되는 반면 Map에는 n개의 Null 값이 있는 단일 Null 키가 포함될 수 있습니다.

11) HashSet과 HashMap의 차이점은 무엇입니까?

HashSet과 HashMap의 차이점은 다음과 같습니다.

  • HashSet에는 값만 포함되는 반면 HashMap에는 항목(키, 값)이 포함됩니다. HashSet은 반복할 수 있지만 HashMap은 반복하려면 Set으로 변환해야 합니다.
  • HashSet은 Set 인터페이스를 구현하는 반면 HashMap은 Map 인터페이스를 구현합니다.
  • HashSet은 중복 값을 가질 수 없지만 HashMap은 고유 키를 가진 중복 값을 포함할 수 있습니다.
  • HashSet에는 단일 null 값만 포함되는 반면 HashMap은 n 개의 null 값이 있는 단일 null 키를 보유할 수 있습니다.

12) HashMap과 TreeMap의 차이점은 무엇입니까?

HashMap과 TreeMap의 차이점은 다음과 같습니다.

  • HashMap은 순서를 유지하지 않지만 TreeMap은 오름차순을 유지합니다.
  • HashMap은 해시 테이블로 구현되는 반면 TreeMap은 트리 구조로 구현됩니다.
  • HashMap은 키 또는 값을 기준으로 정렬할 수 있는 반면, TreeMap은 키를 기준으로 정렬할 수 있습니다.
  • HashMap에는 여러 개의 null 값이 있는 null 키가 포함될 수 있지만 TreeMap은 null 키를 보유할 수 없지만 여러 개의 null 값을 가질 수 있습니다.

13) HashMap과 Hashtable의 차이점은 무엇입니까?

아니요.해시맵해시테이블
1)HashMap이 동기화되지 않았습니다.해시테이블이 동기화되었습니다.
2)HashMap은 하나의 null 키와 여러 개의 null 값을 포함할 수 있습니다.해시테이블에는 null 키나 null 값이 포함될 수 없습니다.
삼)HashMap은 스레드로부터 안전하지 않습니다. 따라서 스레드가 아닌 응용 프로그램에 유용합니다.해시테이블은 스레드로부터 안전하며 다양한 스레드 간에 공유될 수 있습니다.
4)4) HashMap은 AbstractMap 클래스를 상속받습니다.Hashtable은 Dictionary 클래스를 상속합니다.

14) 컬렉션과 컬렉션의 차이점은 무엇입니까?

컬렉션과 컬렉션의 차이점은 다음과 같습니다.

  • 컬렉션은 인터페이스인 반면 컬렉션은 클래스입니다.
  • Collection 인터페이스는 List, Set, Queue에 대한 데이터 구조의 표준 기능을 제공합니다. 그러나 Collections 클래스는 컬렉션 요소를 정렬하고 동기화하는 클래스입니다.
  • Collection 인터페이스는 데이터 구조에 사용할 수 있는 메서드를 제공하는 반면 Collections 클래스는 컬렉션에 대한 다양한 작업에 사용할 수 있는 정적 메서드를 제공합니다.

15) 비교 대상과 비교 대상의 차이점은 무엇입니까?

아니요.유사한비교기
1)Comparable은 한 종류의 시퀀스만 제공합니다.비교기는 여러 종류의 시퀀스를 제공합니다.
2)CompareTo()라는 메서드 하나를 제공합니다.Compare()라는 메서드 하나를 제공합니다.
삼)java.lang 패키지에 있습니다.java.util 패키지에 있습니다.
4)Comparable 인터페이스를 구현하면 실제 클래스가 수정됩니다.실제 클래스는 변경되지 않습니다.

16) BlockingQueue에 대해 어떻게 이해하시나요?

BlockingQueue는 Queue 인터페이스를 확장한 인터페이스입니다. 검색, 삽입, 삭제와 같은 작업에 동시성을 제공합니다. 요소를 검색하는 동안 대기열이 비어 있지 않을 때까지 기다립니다. 요소를 저장하는 동안 사용 가능한 공간이 생길 때까지 기다립니다. BlockingQueue는 null 요소를 포함할 수 없으며 BlockingQueue의 구현은 스레드로부터 안전합니다.

통사론:

 public interface BlockingQueue extends Queue 

17) Properties 파일의 장점은 무엇인가요?

속성 파일의 값을 변경하는 경우 Java 클래스를 다시 컴파일할 필요가 없습니다. 따라서 애플리케이션을 쉽게 관리할 수 있습니다. 자주 변경되는 정보를 저장하는데 사용됩니다. 다음 예를 고려하십시오.

 import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } } 

산출

 system oracle 

18) hashCode() 메소드는 무엇입니까?

hashCode() 메서드는 해시 코드 값(정수)을 반환합니다.

hashCode() 메서드는 두 키(equals() 메서드 호출)가 동일한 경우 동일한 정수를 반환합니다.

슬로카 메타

그러나 두 개의 해시 코드 번호가 서로 다르거나 동일한 키를 가질 수 있습니다.

두 객체가 equals() 메서드를 사용하여 동일한 결과를 생성하지 않는 경우 hashcode() 메서드는 두 객체 모두에 대해 서로 다른 정수 결과를 제공합니다.


19) 왜 equals() 메소드를 재정의합니까?

equals 메소드는 두 객체가 동일한지 여부를 확인하는 데 사용됩니다. 속성을 기반으로 개체를 확인하려면 재정의해야 합니다.

예를 들어 Employee는 ID, 이름, 급여라는 3개의 데이터 멤버가 있는 클래스입니다. 그러나 우리는 급여를 기준으로 사원대상의 동일성을 확인하고자 한다. 그런 다음 equals() 메서드를 재정의해야 합니다.


20) List, Set, Map 요소를 어떻게 동기화하나요?

예, Collections 클래스는 List, Set 또는 Map 요소를 동기화되도록 만드는 메소드를 제공합니다.

공개 정적 목록 동기화 목록(목록 l){}
공개 정적 SetsynchronousSet(Set s){}
공개 정적 SortedSet 동기화SortedSet(SortedSet s){}
공개 정적 지도 동기화된 지도(지도 m){}
공개 정적 SortedMap 동기화SortedMap(SortedMap m){}

21) 제네릭 컬렉션의 장점은 무엇인가요?

일반 컬렉션을 사용하면 세 가지 주요 이점이 있습니다.

  • 일반 클래스를 사용하면 타입 캐스팅이 필요하지 않습니다.
  • 유형이 안전하며 컴파일 타임에 확인됩니다.
  • Generic은 컴파일 타임에 버그를 감지할 수 있도록 하여 코드의 안정성을 확인합니다.

22) Hashtable의 해시 충돌이란 무엇이며 Java에서는 어떻게 처리됩니까?

동일한 해시 값을 가진 두 개의 서로 다른 키를 해시 충돌이라고 합니다. 충돌을 피하기 위해 두 개의 개별 항목이 단일 해시 버킷에 보관됩니다. 해시 충돌을 방지하는 방법에는 두 가지가 있습니다.

  • 별도의 체인
  • 공개 주소 지정

23) Dictionary 클래스란 무엇인가요?

Dictionary 클래스는 키-값 쌍을 저장하는 기능을 제공합니다.


24) 해싱 기반 수집에서 로드 팩터의 기본 크기는 얼마입니까?

부하율의 기본 크기는 다음과 같습니다. 0.75 . 기본 용량은 초기 용량 * 부하율로 계산됩니다. 예를 들어 16 * 0.75 = 12입니다. 따라서 12가 Map의 기본 용량입니다.


25) 페일패스트란 무엇을 이해하나요?

Java에서 구조적 수정이 발생하면 즉시 ConcurrentmodificationException을 발생시키는 Iterator를 Fail-fast Iterator라고 합니다. Fail-fat 반복자는 메모리에 추가 공간이 필요하지 않습니다.


26) Array와 ArrayList의 차이점은 무엇입니까?

Array와 ArrayList의 주요 차이점은 다음과 같습니다.

SN정렬배열목록
1배열은 크기가 고정되어 있으므로 필요에 따라 배열의 크기를 조정할 수 없습니다.ArrayList는 고정된 크기가 아니며 크기를 동적으로 변경할 수 있습니다.
2배열은 정적 유형입니다.ArrayList는 동적 크기입니다.
배열은 객체뿐만 아니라 기본 데이터 유형도 저장할 수 있습니다.ArrayList는 기본 데이터 유형을 저장할 수 없으며 객체만 저장할 수 있습니다.

27) Array의 길이와 ArrayList의 크기의 차이점은 무엇입니까?

배열의 길이는 length 속성을 사용하여 얻을 수 있지만 ArrayList는 length 속성을 지원하지 않지만 size() 메서드를 사용하여 목록에 있는 개체 수를 가져올 수 있습니다.

배열의 길이 구하기

 Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length); 

ArrayList의 크기 찾기

 ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size()); 

28) ArrayList를 Array로, Array를 ArrayList로 변환하는 방법은 무엇입니까?

Arrays 클래스의 asList() 메소드를 사용하여 Array를 ArrayList로 변환할 수 있습니다. asList() 메소드는 Arrays 클래스의 정적 메소드이며 List 객체를 허용합니다. 다음 구문을 고려하세요.

 Arrays.asList(item) 

ArrayList 클래스의 toArray() 메소드를 사용하여 ArrayList를 Array로 변환할 수 있습니다. ArrayList를 List 개체로 변환하려면 다음 구문을 고려하세요.

 List_object.toArray(new�String[List_object.size()]) 

29) Java ArrayList를 읽기 전용으로 만드는 방법은 무엇입니까?

Collections.unmodifyingCollection() 메소드를 호출하여 Java ArrayList 읽기 전용을 얻을 수 있습니다. ArrayList를 읽기 전용으로 정의하면 add(), 제거() 또는 set() 메서드를 통해 컬렉션에서 어떤 수정도 수행할 수 없습니다.


30) ArrayList에서 중복 항목을 제거하는 방법은 무엇입니까?

ArrayList에서 중복 항목을 제거하는 방법에는 두 가지가 있습니다.

    HashSet 사용:HashSet을 사용하면 ArrayList에서 중복 요소를 제거할 수 있지만 삽입 순서는 유지되지 않습니다.LinkedHashSet 사용:HashSet 대신 LinkedHashSet을 사용하여 삽입 순서를 유지할 수도 있습니다.

LinkedHashSet을 사용하여 ArrayList에서 중복 요소를 제거하는 프로세스:

파이썬 소수점 이하 2자리까지 출력
  • ArrayList의 모든 요소를 ​​LinkedHashSet에 복사합니다.
  • 목록에서 모든 요소를 ​​제거하는 Clear() 메서드를 사용하여 ArrayList를 비웁니다.
  • 이제 LinkedHashset의 모든 요소를 ​​ArrayList에 복사합니다.

31) ArrayList를 반전시키는 방법은 무엇입니까?

ArrayList를 반전하려면 Collections 클래스의 reverse() 메소드를 사용할 수 있습니다. 다음 예를 고려하십시오.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

산출

 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) ArrayList를 내림차순으로 정렬하는 방법은 무엇입니까?

ArrayList를 내림차순으로 정렬하려면 Collections 클래스의 reverseOrder 메서드를 사용할 수 있습니다. 다음 예를 고려하십시오.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

산출

 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) ArrayList를 동기화하는 방법은 무엇입니까?

ArrayList를 두 가지 방법으로 동기화할 수 있습니다.

  • Collections.synchronizedList() 메소드 사용
  • CopyOnWriteArrayList 사용

3. 4) ArrayList와 LinkedList를 언제 사용합니까?

LinkedList는 업데이트 작업에 사용하는 것이 더 좋고 ArrayList는 검색 작업에 사용하는 것이 더 좋습니다.