80 Java Bộ sưu tập Câu hỏi và Câu trả lời Phỏng vấn (2025)

Dưới đây là Java Bộ sưu tập Câu hỏi phỏng vấn dành cho những ứng viên mới ra trường cũng như có kinh nghiệm để có được công việc mơ ước.

 

Java Bộ sưu tập câu hỏi và câu trả lời phỏng vấn dành cho người mới

1) Framework là gì Java?

Khung là một kiến ​​trúc phổ biến và sẵn có chứa một tập hợp các lớp và giao diện.


2) Khung Bộ sưu tập trong Java?

Collection Framework là một nhóm các lớp và giao diện được sử dụng để lưu trữ và quản lý các đối tượng. Nó cung cấp nhiều lớp khác nhau như Vector, ArrayList, HashSet, Stack, v.v. Java Khung bộ sưu tập cũng có thể được sử dụng cho các giao diện như Hàng đợi, Bộ, Danh sách, v.v.

Java Bộ sưu tập câu hỏi phỏng vấn


3) Giải thích lớp Bộ sưu tập

java.util.Collections là một lớp bao gồm các phương thức tĩnh hoạt động trên các bộ sưu tập. Nó chứa các thuật toán đa hình để hoạt động trên các bộ sưu tập, “trình bao bọc”. Lớp này chứa các phương thức cho các thuật toán, như sắp xếp nhị phân, tìm kiếm, xáo trộn, v.v.


4) HashCode() là gì?

hashCode() là phương thức trả về mã băm số nguyên.


5) Phân biệt giữa ArrayList và Vector trong Java khung sưu tập.

Lập danh sách vector
ArrayList không thể đồng bộ hóa. Vector có thể được đồng bộ hóa.
Nó không phải là một lớp kế thừa. Đó là một lớp kế thừa.
Nó có thể tăng kích thước của nó lên 50% kích thước của mảng. Nó có thể tăng kích thước của nó bằng cách tăng gấp đôi kích thước của mảng.
ArrayList không an toàn cho luồng. Vector là một chủ đề an toàn.

6) ArrayList trong là gì Java?

Lập danh sách là một cấu trúc dữ liệu có thể được kéo dài để chứa các phần tử bổ sung bên trong chính nó và thu nhỏ lại về kích thước nhỏ hơn khi các phần tử bị xóa. Đây là cấu trúc dữ liệu rất quan trọng, hữu ích trong việc xử lý hành vi động của các phần tử.


7) Phân biệt Iterator và ListIterator

Sự khác biệt giữa Iterator và ListIterator là:

Trình lặp lại ListIterator
Iterator có thể duyệt qua các phần tử mảng theo hướng thuận. ListIterator có thể duyệt qua các phần tử mảng theo hướng lùi cũng như tiến.
Nó có thể được sử dụng trong Hàng đợi, Danh sách và Bộ. Nó có thể được sử dụng trong Danh sách.
Nó chỉ có thể thực hiện thao tác loại bỏ. Nó có thể thực hiện thao tác thêm, xóa và thiết lập trong khi duyệt qua bộ sưu tập.

8) Sự khác biệt giữa Iterator và Enumeration là gì?

Sự khác biệt giữa Iterator và Enumutions

Trình lặp lại Đếm
Iterator có thể duyệt qua cả các phần tử kế thừa cũng như các phần tử không kế thừa. Việc liệt kê chỉ có thể duyệt qua các phần tử kế thừa.
Iterator không hoạt động nhanh. Việc liệt kê không nhanh chóng.
Iterator rất chậm so với Enumeration. Việc liệt kê nhanh hơn so với Iterator.
Iterator có thể thực hiện thao tác xóa trong khi duyệt qua bộ sưu tập. Bảng liệt kê chỉ có thể thực hiện thao tác duyệt qua trên bộ sưu tập.

9) Xác định BlockingQueue

BlockingQueue là một giao diện được sử dụng trong Java có thể mở rộng Hàng đợi. Nó cung cấp tính đồng thời trong nhiều hoạt động hàng đợi khác nhau như truy xuất, chèn, xóa, v.v.

Hàng đợi chờ để trở nên trống tại thời điểm truy xuất bất kỳ phần tử nào. BlockingQueue không được chứa các phần tử null. Việc triển khai Hàng đợi này là an toàn theo luồng.

Cú pháp của BlockingQueue là:

public interface BlockingQueue<E> extends Queue <E>

10) Giải thích phương thức ghi đè bằng()

Phương thức bằng được sử dụng để kiểm tra sự giống nhau giữa hai đối tượng. Trong trường hợp nếu người lập trình muốn kiểm tra một đối tượng dựa trên thuộc tính thì nó cần phải được ghi đè.


11) Sự khác biệt giữa Bộ so sánh và Bộ so sánh là gì?

Sự khác biệt giữa So sánh và So sánh là:

So sánh So sánh
Comparable cung cấp phương thức so sánhTo() để sắp xếp các phần tử trong Java. Bộ so sánh cung cấp phương thức so sánh() để sắp xếp các phần tử trong Java.
Giao diện tương đương có trong gói java.lang. Giao diện so sánh có trong java. gói sử dụng.
Logic sắp xếp phải nằm trong cùng một lớp có đối tượng bạn sắp sắp xếp. Logic sắp xếp phải nằm trong một lớp riêng để viết các cách sắp xếp khác nhau dựa trên các thuộc tính khác nhau của đối tượng.
Lớp có đối tượng bạn muốn sắp xếp phải triển khai giao diện có thể so sánh được. Lớp có đối tượng bạn muốn sắp xếp không cần triển khai giao diện so sánh.
Nó cung cấp trình tự sắp xếp đơn. Nó cung cấp nhiều trình tự sắp xếp.
Phương pháp này có thể sắp xếp dữ liệu theo thứ tự sắp xếp tự nhiên. Phương pháp này sắp xếp dữ liệu theo thứ tự sắp xếp tùy chỉnh.
Nó ảnh hưởng đến lớp ban đầu. tức là lớp thực tế bị thay đổi. Nó không ảnh hưởng đến lớp ban đầu, tức là lớp thực tế không bị thay đổi.
Được triển khai thường xuyên trong API theo Lịch, các lớp Wrapper, Ngày và Chuỗi. Nó được triển khai để sắp xếp các phiên bản của lớp bên thứ ba.
Tất cả các lớp trình bao bọc và lớp Chuỗi đều triển khai giao diện có thể so sánh được. Các lớp Comparator được triển khai duy nhất là Collator và RuleBasedColator.

12) Giải thích bằng() bằng ví dụ

Equals() xác minh xem đối tượng số có bằng đối tượng được truyền dưới dạng đối số hay không.

Cú pháp của phương thức bằng() là:

public boolean equals(Object o)

Phương thức này có hai tham số 1) bất kỳ đối tượng nào, 2) giá trị trả về. Nó trả về true nếu đối số được truyền không phải là null và là một đối tượng thuộc loại tương tự có cùng giá trị số.

Ví dụ:

import java.lang.Integer;
public class Test { 
   public static void main(String args[]) {
      Integer p = 5;
      Integer q = 20;
      Integer r =5;
      Short s = 5;
      System.out.println(p.equals(q));  
      System.out.println(p.equals(r)); 
      System.out.println(p.equals(s));
   }
}

13) Liệt kê lợi ích của việc thu thập chung

Lợi ích của việc sử dụng bộ sưu tập chung là:

  • Nếu các lập trình viên đang sử dụng lớp chung, họ không yêu cầu đánh máy.
  • Nó an toàn về kiểu và có thể được kiểm tra tại thời điểm biên dịch.
  • Nó cung cấp sự ổn định của mã bằng cách phát hiện lỗi tại thời điểm biên dịch.

14) Giải thích phương pháp chuyển đổi ArrayList thành Array và Array thành ArrayList

Các lập trình viên có thể chuyển đổi một mảng thành ArrayList bằng phương thức asList() của lớp Arrays. Nó là một phương thức tĩnh của lớp Arrays chấp nhận đối tượng List. Cú pháp của phương thức asList() là:

Arrays.asList(item)

Java lập trình viên có thể chuyển đổi ArrayList thành đối tượng List bằng cú pháp:

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

15) Cho ví dụ về ArrayList

Ví dụ về ArrayList đảo ngược là:

import java.util.ArrayList;
class Test_ArrayList {
 public static void main(String[] args) {
  //Creating a generic ArrayList
  ArrayList<String> arlTest = new ArrayList<String>();
  //Size of arrayList
  System.out.println("Size of ArrayList at creation: " + arlTest.size());
  //Lets add some elements to it
  arlTest.add("D");
  arlTest.add("U");
  arlTest.add("K");
  arlTest.add("E");

  //Recheck the size after adding elements
  System.out.println("Size of ArrayList after adding elements: " + arlTest.size());

  //Display all contents of ArrayList
  System.out.println("List of all elements: " + arlTest);

  //Remove some elements from the list
  arlTest.remove("D");
  System.out.println("See contents after removing one element: " + arlTest);

  //Remove element by index
  arlTest.remove(2);
  System.out.println("See contents after removing element by index: " + arlTest);
  //Check size after removing elements
  System.out.println("Size of arrayList after removing elements: " + arlTest.size());
  System.out.println("List of all elements after removing elements: " + arlTest);
  //Check if the list contains "K"
  System.out.println(arlTest.contains("K"));
 }
}

16) Cho ví dụ sắp xếp mảng theo thứ tự tăng dần

Ví dụ sắp xếp mảng theo thứ tự giảm dần là:

package com.guru99;

public class SelectionSortAlgo {
 
	public static void main(String a[])
	{  
		int[] myArray = {860,8,200,9}; 
		
		System.out.println("------Before Sort-----");
 
		printArray(myArray);
 		selection(myArray);//sorting array using selection sort  
 		System.out.println("-----After Sort-----");  
		printArray(myArray); 
	} 
		public static void selection(int[] array)
	{  
		for (int i = 0; i < array.length - 1; i++)  
		{  System.out.println("Sort Pass Number "+(i+1));
			int index = i;  
			for (int j = i + 1; j < array.length; j++)
			{   
			    System.out.println("Comparing "+ array[index]  + " and " + array[j]);  
				if (array[j] < array[index]){ 
				System.out.println(array[index]  + " is greater than " + array[j] );
					index = j;		
				}  
			}  
			int smallerNumber = array[index];   
			array[index] = array[i];  
			array[i] = smallerNumber;  
			System.out.println("Swapping Elements: New Array After Swap");
			printArray(array);
		}  
	}  
	static void printArray(int[] array){
	    
	    for(int i=0; i < array.length; i++)
		{  
			System.out.print(array[i] + " ");  
		} 
	    System.out.println();   
	}
}

17) Giải thích các giao diện cơ bản của Java khung bộ sưu tập

Java khung bộ sưu tập là gốc của hệ thống phân cấp bộ sưu tập. Nó đại diện cho một nhóm đối tượng như các phần tử của nó. các Java ngôn ngữ lập trình không cung cấp việc triển khai trực tiếp giao diện đó.

  • Thiết lập: Set là một bộ sưu tập không có phần tử trùng lặp. Nó sử dụng hashtable để lưu trữ các phần tử.
  • Danh sách: List là một tập hợp được sắp xếp có thể chứa các phần tử trùng lặp. Nó cho phép các nhà phát triển truy cập bất kỳ phần tử nào từ hộp thư đến của nó. List giống như một mảng có độ dài động.
  • BẢN ĐỒ: Nó là một đối tượng ánh xạ các khóa tới các giá trị. Nó không thể chứa các khóa trùng lặp. Mỗi khóa có thể được ánh xạ tới ít nhất một giá trị.

18) Các tính năng của Java Bản đồ băm?

Đặc điểm của Java Bản đồ băm là:

  • Các giá trị có thể được lưu trữ trong bản đồ bằng cách tạo thành cặp khóa-giá trị. Giá trị có thể được lấy bằng cách sử dụng khóa bằng cách chuyển nó đến phương thức chính xác.
  • Nếu không có phần tử nào tồn tại trong Bản đồ, nó sẽ đưa ra 'NoSuchElementException'.
  • HashMap chỉ lưu trữ các tham chiếu đối tượng. Đó là lý do tại sao không thể sử dụng các kiểu dữ liệu nguyên thủy như double hoặc int. Sử dụng lớp bao bọc (như Integer hoặc Double) thay thế.


19) Ngăn xếp là gì?

Ngăn xếp là một vùng đặc biệt của bộ nhớ máy tính để lưu trữ các biến tạm thời được tạo bởi một hàm. Trong ngăn xếp, các biến được khai báo, lưu trữ và khởi tạo trong thời gian chạy.


20) Danh sách liên kết là gì?

Danh sách liên kết là một cấu trúc dữ liệu có thể lưu trữ một tập hợp các mục. Nói cách khác, danh sách liên kết có thể được sử dụng để lưu trữ nhiều đối tượng cùng loại. Mỗi đơn vị hoặc thành phần của danh sách được gọi là một nút. Một nút trong danh sách Liên kết có dữ liệu của nó và địa chỉ của nút tiếp theo. Nó giống như một chuỗi. Danh sách liên kết được sử dụng để tạo biểu đồ và cây.


Java Bộ sưu tập câu hỏi và câu trả lời phỏng vấn dành cho người có kinh nghiệm

21) Cho ví dụ về ArrayList

Ví dụ về ArrayList là:

import java.util.ArrayList;
class Test_ArrayList {
 public static void main(String[] args) {
  //Creating a generic ArrayList
  ArrayList<String> arlTest = new ArrayList<String>();
  //Size of arrayList
  System.out.println("Size of ArrayList at creation: " + arlTest.size());
  //Lets add some elements to it
  arlTest.add("D");
  arlTest.add("U");
  arlTest.add("K");
  arlTest.add("E");

  //Recheck the size after adding elements
  System.out.println("Size of ArrayList after adding elements: " + arlTest.size());

  //Display all contents of ArrayList
  System.out.println("List of all elements: " + arlTest);

  //Remove some elements from the list
  arlTest.remove("D");
  System.out.println("See contents after removing one element: " + arlTest);

  //Remove element by index
  arlTest.remove(2);
  System.out.println("See contents after removing element by index: " + arlTest);

  //Check size after removing elements
  System.out.println("Size of arrayList after removing elements: " + arlTest.size());
  System.out.println("List of all elements after removing elements: " + arlTest);
  //Check if the list contains "K"
  System.out.println(arlTest.contains("K"));
 }
}

22) Giải thích danh sách liên kết được hỗ trợ bởi Java

Hai loại danh sách liên kết được hỗ trợ bởi Java là:

  • Danh sách liên kết đơn: Danh sách liên kết đơn là một loại cấu trúc dữ liệu. Trong danh sách liên kết đơn, mỗi nút trong danh sách lưu trữ nội dung của nút đó và một tham chiếu hoặc con trỏ tới nút tiếp theo trong danh sách. Nó không lưu trữ bất kỳ tham chiếu hoặc con trỏ nào đến nút trước đó.
  • Danh sách liên kết đôi: Danh sách liên kết đôi là một loại danh sách liên kết đặc biệt trong đó việc duyệt qua các phần tử dữ liệu có thể được thực hiện theo cả hai hướng. Điều này có thể thực hiện được bằng cách có hai liên kết trong mỗi nút, một liên kết đến nút tiếp theo và một liên kết khác kết nối với nút trước đó.

23) Giải thích các phương thức được cung cấp bởi giao diện Queue?

Phương pháp của Java Giao diện hàng đợi là:

Phương pháp Mô tả
phép cộng boolean(đối tượng) Chèn phần tử được chỉ định vào Hàng đợi. Nó trả về true trong trường hợp thành công.
ưu đãi boolean(đối tượng) Phương thức này được sử dụng để chèn phần tử vào Hàng đợi.
Xóa đối tượng() Nó lấy và loại bỏ phần đầu hàng đợi.
Thăm dò đối tượng() (): Nó truy xuất và loại bỏ phần đầu hàng đợi hoặc trả về null trong trường hợp nó trống.
Thăm dò đối tượng() Nó truy xuất và loại bỏ phần đầu hàng đợi hoặc trả về null trong trường hợp nó trống.
Phần tử đối tượng() Lấy dữ liệu từ Hàng đợi nhưng không xóa phần đầu của nó.
Xem nhanh đối tượng() Lấy dữ liệu từ Hàng đợi nhưng không xóa phần đầu của nó hoặc trong trường hợp Hàng đợi trống thì nó sẽ lấy dữ liệu rỗng.

24) Nêu các phương thức được cung cấp bởi lớp Stack

Các phương thức quan trọng được cung cấp bởi lớp Stack là:

  • xô(): Đẩy mục vào ngăn xếp.
  • trống (): Phương pháp này phát hiện xem ngăn xếp có trống hay không.
  • nhạc pop (): T Java phương thức khung sưu tập sẽ loại bỏ đối tượng khỏi ngăn xếp.
  • tìm kiếm (): Phương pháp này tìm kiếm các mục trong ngăn xếp.
  • nhìn lén (): T Java phương thức nhìn vào đối tượng ngăn xếp mà không loại bỏ nó.

25) Xác định EmptySet() trong Java khung bộ sưu tập

Phương thức EmptySet() trả về tập bất biến trống bất cứ khi nào người lập trình cố gắng loại bỏ các phần tử null. Tập hợp được trả về bởi EmptySet() có thể tuần tự hóa được. Cú pháp của phương pháp này là:

chung kết tĩnh công khai Bộ bộ rỗng()


26) Phân biệt giữa Bộ sưu tập và Bộ sưu tập

Sự khác biệt giữa Bộ sưu tập và Bộ sưu tập là:

Bộ sưu tập Các hạng mục
Bộ sưu tập là một giao diện. Bộ sưu tập là một lớp học.
Nó đại diện cho một nhóm đối tượng như một thực thể duy nhất. Nó định nghĩa các phương thức tiện ích khác nhau cho các đối tượng thu thập.
Bộ sưu tập là giao diện gốc của Java Khung sưu tập. Bộ sưu tập là một lớp tiện ích chung.
Giao diện này được sử dụng để lấy cấu trúc dữ liệu bộ sưu tập. Lớp này chứa các phương thức tĩnh để thao tác cấu trúc dữ liệu.

27) Xác định LinkedHashSet trong Java Khung sưu tập?

LinkedHashSet là một lớp con của lớp có tên HashSet và triển khai giao diện đã đặt. Đây là phiên bản HashSet được sắp xếp hợp lý, duy trì Danh sách liên kết đôi trên tất cả các thành phần của nó.


28) Sự khác biệt giữa dự phòng nhanh và an toàn là gì?

Thất bại Thất bại
Nó không cho phép sửa đổi bộ sưu tập trong khi lặp lại. Nó cho phép sửa đổi bộ sưu tập trong khi lặp lại.
Nó có thể ném ConcurrentModificationException Nó không thể ném bất kỳ ngoại lệ nào.
Nó sử dụng bộ sưu tập gốc để duyệt qua các phần tử. Nó sử dụng bản sao bộ sưu tập gốc để duyệt qua các phần tử.
Không có yêu cầu về bộ nhớ bổ sung. Có một yêu cầu về bộ nhớ bổ sung.

29) Danh sách các chế độ xem bộ sưu tập của giao diện bản đồ

Các chế độ xem bộ sưu tập của giao diện bản đồ là: 1) chế độ xem tập hợp khóa, 2) chế độ xem tập hợp giá trị và 3) chế độ xem tập hợp mục nhập.


30) Lợi ích của Khung sưu tập trong Java?

Lợi ích của Khung sưu tập trong Java là:

  • Java khung thu thập cung cấp các cấu trúc dữ liệu hiệu quả và hiệu quả cao giúp nâng cao độ chính xác và tốc độ của chương trình.
  • Chương trình được phát triển với Java Khung sưu tập dễ bảo trì.
  • Nhà phát triển có thể kết hợp các lớp với các loại khác để tăng khả năng sử dụng lại mã.
  • Sản phẩm Java khung bộ sưu tập cho phép các lập trình viên sửa đổi các kiểu bộ sưu tập nguyên thủy theo cách họ muốn.

31) Cách tốt nhất để sắp xếp các đối tượng Bộ sưu tập trong Java?

Một cách tốt để sắp xếp Java các đối tượng bộ sưu tập đang sử dụng giao diện So sánh và So sánh. Nhà phát triển có thể sử dụng Collections.sort(), các phần tử được sắp xếp dựa trên thứ tự được đề cập trong so sánhTo().

Khi nhà phát triển sử dụng Bộ sưu tập, sắp xếp (Bộ so sánh), nó sẽ sắp xếp các đối tượng phụ thuộc vào so sánh () của giao diện Bộ so sánh.


32) Giải thích Vector trong Java

Vector giống như một mảng. Nó có các thành phần có thể được truy cập bằng giá trị chỉ mục. Các vectơ có thể chứa một phương thức kế thừa cũng không phải là một phần của khung bộ sưu tập.


33) Sự khác biệt giữa Bộ và Bản đồ là gì?

Thiết lập Bản đồ
Bộ thuộc gói-java.util. Bản đồ thuộc gói- java.util.
Nó có thể mở rộng giao diện bộ sưu tập. Nó không mở rộng giao diện bộ sưu tập.
Nó không cho phép các giá trị trùng lặp. Nó cho phép các giá trị trùng lặp.
Set chỉ có thể sắp xếp một giá trị null. Bản đồ có thể sắp xếp nhiều giá trị null.

34) Xác định lớp từ điển

Lớp Từ điển là một Java lớp có khả năng lưu trữ các cặp khóa-giá trị.


35) Xác định EnumSet

java.util.EnumSet là triển khai Set có thể sử dụng với các kiểu enum. EnumSet có tất cả các phần tử phải đến từ một kiểu enum được chỉ định rõ ràng hoặc ngầm định. Nó không được đồng bộ hóa và các khóa null cũng không được phép. EnumSet cung cấp các phương thức như EnumSetof(E first, E… rest), supplementOf(EnumSet s) và copyOf(Collection c).


36) Hai cách để loại bỏ các bản sao khỏi ArrayList là gì?

Hai cách để loại bỏ các bản sao khỏi ArrayList là:

  • Bộ băm: Nhà phát triển có thể sử dụng HashSet để xóa phần tử trùng lặp khỏi ArrayList. Hạn chế là nó không thể bảo toàn thứ tự chèn.
  • LinkedHashSet: Nhà phát triển cũng có thể duy trì thứ tự chèn bằng cách sử dụng LinkedHashSet thay vì HashSet.

37) IdentityHashMap là gì?

IdentityHashMap là một lớp triển khai các giao diện Serializable, Clonable, Map và mở rộng lớp Tóm tắt. Nó được thiết kế cho trường hợp cần có ngữ nghĩa bình đẳng tham chiếu.


38) WeakHashMap là gì?

WeakHashMap là một triển khai của Java Bản đồ. Nó được sử dụng để lưu trữ các tham chiếu yếu đến các khóa của nó. Việc sắp xếp bằng Bản đồ này cho phép một cặp khóa-giá trị được thu thập dưới dạng rác. Khóa của nó không được tham chiếu bên ngoài WeakHashMap.


39) Các phương pháp để làm cho bộ sưu tập trở nên an toàn là gì?

Các phương pháp để làm cho chuỗi bộ sưu tập trở nên an toàn là:

  • Collections.synchronizedList(danh sách);
  • Collections.synchronizedMap(bản đồ);
  • Collections.synchronizedSet(bộ);

40) Giải thích Không được hỗ trợOperangoại lệ

Không được hỗ trợOperationException là một ngoại lệ được đưa ra trên các phương thức không được loại bộ sưu tập thực tế hỗ trợ.

Ví dụ: Nhà phát triển đang tạo một danh sách chỉ đọc bằng cách sử dụng “Collections.unmodibilityList(list)” và gọi phương thức call(), add() hoặc delete(). Nó sẽ ném rõ ràng Không được hỗ trợOperationException.


41) Đặt tên cho các lớp bộ sưu tập cho phép phần tử ngẫu nhiên truy cập vào các phần tử của nó

Các lớp bộ sưu tập cung cấp quyền truy cập phần tử ngẫu nhiên vào các phần tử của nó là: 1) ArrayList, 2) HashMap, 3) TreeMap và 4) Hashtable.


42) Giải thích sự khác biệt giữa Hàng đợi và Deque.

Hàng đợi boong tàu
Nó được gọi là Hàng đợi một đầu Nó được gọi là Hàng đợi hai đầu
Các phần tử trong Hàng đợi được thêm hoặc bớt ở một đầu Các phần tử trong Hàng đợi được thêm từ một trong hai đầu có thể được thêm và xóa khỏi cả hai đầu
Nó kém linh hoạt hơn. Nó linh hoạt hơn.

43) Đề cập đến giao diện List và Set triển khai

Giao diện Danh sách triển khai lớp: 1) ArrayList, 2) Vector và 3) LinkedList.

Lớp triển khai giao diện Set: 1) Hashset và 2) TreeSet.


44) Giải thích mẫu thiết kế theo sau là Iterator

Trình lặp tuân theo chi tiết của mẫu thiết kế trình lặp. Nó cung cấp cho nhà phát triển khả năng điều hướng qua các bộ sưu tập đối tượng bằng giao diện chung mà không cần biết cách triển khai.


45) Peek() của giao diện Hàng đợi là gì?

Peek() là một phương thức giao diện hàng đợi. Nó lấy tất cả các phần tử nhưng không loại bỏ phần đầu hàng đợi. Trong trường hợp Hàng đợi trống thì phương thức này sẽ trả về null.


46) CopyOnWriteArrayList là gì?

CopyOnWriteArrayList là một biến thể của ArrayList trong đó các thao tác như thêm và đặt được thực hiện bằng cách tạo một bản sao của mảng. Nó là một thread-safe và do đó nó không ném ra ConcurrentModificationException. ArrayLists này cho phép tất cả các phần tử, bao gồm cả null.


47) Phân biệt ArrayList và LinkedList

Sự khác biệt giữa ArrayList và LinkedList là:

Lập danh sách Danh sách liên kết
Nó sử dụng một mảng động. Nó sử dụng một danh sách liên kết đôi.
ArrayList không thích hợp để thao tác. LinkedList thích hợp hơn để thao tác.
ArrayList cung cấp quyền truy cập ngẫu nhiên. LinkedList không cung cấp quyền truy cập ngẫu nhiên.
ArrayList s chỉ lưu trữ các đối tượng do đó tốn ít bộ nhớ hơn LinkedList lưu trữ đối tượng cũng như đối tượng địa chỉ; do đó, nó tốn nhiều bộ nhớ hơn.

48) Giải thích các phương thức của giao diện iterator

Các phương thức của giao diện iterator là:

Phương pháp Mô tả
boolean công khai hasNext() Nó trả về true nếu trình lặp có các phần tử; nếu không, nó trả về false.
Đối tượng công cộng tiếp theo() Phương thức này trả về phần tử và di chuyển con trỏ đến giá trị tiếp theo.
xóa khoảng trống công khai () T Java phương thức có thể loại bỏ các phần tử cuối cùng được trả về bởi trình vòng lặp. Public void Remove() ít được sử dụng hơn.

49) Các phương thức của lớp HashSet là gì?

Các phương thức của lớp HashSet là:

Phương pháp Mô tả
thêm boolean(Đối tượng o) Phương thức này thêm phần tử đề cập vào bộ này nếu nó chưa có.
boolean chứa (Đối tượng o): Nó trả về true nếu tập hợp chứa phần tử được chỉ định.
khoảng trống (): Phương pháp này loại bỏ các phần tử đã đặt.
boolean isEmpty(): Nó trả về true trong trường hợp tập hợp không có phần tử.
loại bỏ boolean (Đối tượng o): Nó loại bỏ phần tử được chỉ định khỏi tập hợp.
bản sao đối tượng(): Phương thức này trả về một bản sao của phiên bản HashSet: bản thân các phần tử không được sao chép.
trình lặp lặp () Nó trả về một iterator trên các phần tử trong tập hợp này.
kích thước int(): Nó trả về số phần tử có sẵn trong tập hợp.

50) Các phương pháp của Java Lớp TreeSet?

Các phương pháp của Java Lớp TreeSet là:

Phương pháp Description
boolean addAll(Bộ sưu tập c) Thêm tất cả các phần tử trong bộ sưu tập đã chỉ định vào bộ này.
boolean chứa (Đối tượng o) Trả về true nếu tập hợp chứa phần tử đề cập.
boolean isEmpty() T Java phương thức trả về true nếu tập hợp này không chứa phần tử nào.
loại bỏ boolean(Đối tượng o) Xóa phần tử được chỉ định khỏi tập hợp.
void add(Đối tượng o) Nó thêm phần tử được chỉ định vào tập hợp.
khoảng trống rõ ràng() T Java phương thức loại bỏ tất cả các phần tử khỏi tập hợp.

51) Giải thích HashSet được liên kết

Java Lớp LinkedHashSet là một triển khai Danh sách liên kết và bảng Hash của giao diện Set. Nó chứa các phần tử độc đáo giống như HashSet. HashSet được liên kết trong Java cũng cung cấp các hoạt động thiết lập tùy chọn có thể duy trì thứ tự chèn.


52) Các phương thức quan trọng được sử dụng trong danh sách liên kết là gì?

Các phương thức quan trọng được sử dụng trong danh sách liên kết là:

Phương pháp Mô tả
phép cộng boolean(Đối tượng o) Nó được sử dụng để nối phần tử đã chỉ định vào cuối vectơ.
boolean chứa (Đối tượng o) Đó là một phương thức trả về true nếu danh sách này chứa phần tử được chỉ định.
void add (chỉ mục int, phần tử đối tượng) Chèn phần tử vào phần tử được chỉ định trong vectơ.
void addFirst(Đối tượng o) Nó được sử dụng để chèn phần tử đã cho vào đầu.
void addLast(Object o) Nó được sử dụng để nối phần tử đã cho vào cuối.
Kích thước int() Phương thức này có thể được sử dụng để trả về tổng số phần tử trong một danh sách.
loại bỏ boolean(Đối tượng o) Nó có thể loại bỏ sự xuất hiện đầu tiên của phần tử được chỉ định khỏi danh sách này.
int indexOf(Phần tử đối tượng) T Java phương thức trả về chỉ mục có lần xuất hiện đầu tiên của phần tử được đề cập trong danh sách này hoặc -1.
int LastIndexOf(Phần tử đối tượng) Nó là một Java phương thức trả về chỉ mục có lần xuất hiện cuối cùng của phần tử được chỉ định trong danh sách này hoặc -1.

53) Liệt kê các lớp khác nhau có sẵn theo bộ

Các lớp khác nhau có sẵn trong các bộ là: HashSet, TreeSetand và LinkedHashSet.


54) Liệt kê các phương thức có sẵn trong Java Giao diện xếp hàng

  • phép cộng boolean(đối tượng)
  • ưu đãi boolean(đối tượng)
  • loại bỏ đối tượng()
  • thăm dò đối tượng()
  • phần tử đối tượng()
  • nhìn trộm đối tượng()

55) Phân biệt giữa Danh sách và Tập hợp.

Danh sách Thiết lập
Tập hợp các phần tử có thứ tự Tập hợp các phần tử không có thứ tự
Giữ nguyên thứ tự chèn Không giữ nguyên thứ tự chèn
Cho phép giá trị trùng lặp Giá trị trùng lặp không được phép
Bất kỳ số lượng giá trị null có thể được lưu trữ Chỉ có thể lưu trữ một giá trị null
ListIterator có thể được sử dụng để duyệt List theo bất kỳ hướng nào ListIterator không thể được sử dụng để duyệt qua một Set
Chứa một lớp kế thừa được gọi là vector Không chứa bất kỳ lớp kế thừa nào

Java Bộ sưu tập câu hỏi và câu trả lời phỏng vấn cho hơn 5 năm kinh nghiệm

56) Giải thích từng vòng lặp với ví dụ

Vòng lặp For-Each là một dạng vòng lặp for khác được sử dụng để duyệt mảng. Nó làm giảm đáng kể mã và không sử dụng chỉ mục hay đúng hơn là bộ đếm trong vòng lặp.

Ví dụ cho mỗi vòng lặp:

class UsingForEach {
  public static void main(String[] args) {
    String[] arrData = {"Alpha", "Beta", "Gamma", "Delta", "Sigma"};
    //The conventional approach of using the for loop
    System.out.println("Using conventional For Loop:");
    for(int i=0; i< arrData.length; i++){
      System.out.println(arrData[i]);
    }
    System.out.println("\nUsing Foreach loop:");
    //The optimized method of using the for loop - also called the foreach loop
    for (String strTemp : arrData){
      System.out.println(strTemp);
    }
  }
}

57) Giải thích toán tử kim cương

Toán tử kim cương cho phép trình biên dịch thu thập các đối số kiểu của lớp chung. Trong Java SE, nhà phát triển có thể thay thế hàm tạo tham số bằng tập tham số rỗng (<>) được gọi là toán tử kim cương.


58) Giải thích giao diện truy cập ngẫu nhiên

Giao diện RandomAccess được sử dụng bởi việc triển khai Danh sách để cho biết rằng chúng đang hỗ trợ nhanh.


59) Đặt tên cho các lớp bộ sưu tập thực hiện giao diện truy cập ngẫu nhiên

JavaGói .util có các lớp có thể triển khai giao diện truy cập ngẫu nhiên là: CopyOnWriteArrayList, Stack, ArrayList và Vector.


60) Làm thế nào để nối nhiều ArrayLists?

Danh sách này cung cấp một phương thức addall() chứa nhiều ArrayList trong Java.

Ví dụ: hãy xem xét hai danh sách 1) AreaList và 2) SecondAreaList. Nhà phát triển có thể tham gia cùng họ bằng cách sử dụng addall() như:

AreaList.addAll(secondAreaList);


61) Giải thích giao diện deque

Java.util.Deque là Java, một giao diện mở rộng giao diện Queue. Nó hỗ trợ việc chèn và xóa các phần tử ở cả hai đầu. Queue này cũng được gọi là hàng đợi hai đầu.


62) Giải thích Linkedhashmap

LinkedHashMap là việc triển khai giao diện Bản đồ. Nó cũng có thể mở rộng lớp HashMap. Do đó, giống như HashMap, LinkedHashMap cho phép Java nhà phát triển cho phép một khóa null và nhiều giá trị null.


63) Giải thích các phương pháp xóa phần tử khỏi ArrayList

Các phương pháp xóa phần tử khỏi ArrayList là:

Phương pháp Mô tả
thông thoáng() Phương thức này loại bỏ các phần tử khỏi ArrayList.
xóa (chỉ mục int) Phương thức này của ArrayList có thể loại bỏ phần tử ở một vị trí cụ thể.
xóa(Đối tượng o) Nó có thể loại bỏ sự xuất hiện đầu tiên của phần tử được đề cập khỏi ArrayList.
Xoá bỏ hết() Nó có thể loại bỏ danh sách các thành phần trong một bộ sưu tập cụ thể.
loại bỏIf(Vị ngữ lọc) Phương pháp này loại bỏ các phần tử thỏa mãn việc đề cập đến một vị ngữ.

64) Giải thích bản đồ. mục Trong Bản đồ

Map.entry là một Java giao diện của java.util. Nó có một giao diện lồng nhau trong Map. Giao diện này phải được xác định bằng tên của lớp hoặc giao diện mà nó là thành viên. Do đó, nó được xác định là một Map. Entry. Nó biểu thị một cặp khóa và giá trị có thể tạo thành phần tử của Map.

Phương thức này trả về chế độ xem của bộ sưu tập. Ví dụ: hãy coi cityMap như một bản đồ. Nhà phát triển có thể sử dụng entrySet() để có được chế độ xem bản đồ có phần tử Map.Entry. Lập trình viên cũng có thể sử dụng getKey() và getValue() của Map.Entry để lấy cặp khóa và giá trị của bản đồ.


65) Phương pháp nào được sử dụng để sắp xếp mảng theo thứ tự tăng dần?

Java phương thức khung bộ sưu tập, Collections.sort() được sử dụng để sắp xếp một mảng theo thứ tự tăng dần.


66) Làm cách nào để đo hiệu suất của ArrayList?

Hiệu suất của ArrayList có thể được đo bằng:

  • Thêm một phần tử: Nhà phát triển có thể thêm một phần tử vào cuối ArrayList bằng phương thức add(E e). Đó là O (1). Trong trường hợp xấu nhất, nó có thể chuyển sang O(n). Điều này có thể xảy ra nếu nhà phát triển thêm nhiều phần tử hơn dung lượng mảng.
  • Truy xuất một phần tử: Nhà phát triển có thể truy cập chỉ mục mảng bằng cách sử dụng get(int index). Trong trường hợp này, hiệu suất có thể được đo bằng ArrayList get() là O(1).
  • Loại bỏ một phần tử: Trong trường hợp, nếu các nhà phát triển đang loại bỏ phần tử bằng cách sử dụng phương thức loại bỏ (int chỉ mục), thì hiệu suất của ArrayList có thể được tính toán bằng cách sử dụng thao tác loại bỏ (int chỉ mục) là phương thức O (n - chỉ mục).

67) Giải thích lớp LinkedList

Lớp LinkedList trong Java triển khai Deque và List bằng cách sử dụng danh sách liên kết đôi. Có một nút lớp riêng trong danh sách liên kết đôi cung cấp cấu trúc của nó. Nó cũng có một biến mục để giữ giá trị và tham chiếu đến lớp Node. Điều này có thể được sử dụng để kết nối các nút tiếp theo và trước đó.


68) Cho một ví dụ về Hashmap

Ví dụ về Hashmap là:

import java.util.HashMap;
import java.util.Map;
public class Sample_TestMaps{
  public static void main(String[] args){
    Map<String, String> objMap = new HashMap<String, String>();
    objMap.put("Name", "Suzuki");
    objMap.put("Power", "220");
    objMap.put("Type", "2-wheeler");
    objMap.put("Price", "85000");
    System.out.println("Elements of the Map:");
    System.out.println(objMap);
  }
}

69) Làm thế nào để lặp lại bản đồ?

Nhà phát triển không thể trực tiếp lặp lại bản đồ, tuy nhiên, giao diện này có hai phương thức cung cấp bộ xem bản đồ. Những phương pháp này là:

  • Bộ >entrySet(): Đó là một phương thức trả về một tập hợp có các mục được đề cập trong bản đồ. Các mục này thường bị phản đối, có loại Bản đồ. Lối vào.
  • Bộ bộ chìa khoá(): T Java phương thức trả về một tập hợp có khóa bản đồ.

70) Giải thích Treemap trong Java

TreeMap là lớp triển khai giao diện Map LinkedHashMap và HashMap. Nó cũng có thể triển khai giao diện NavigableMap và có thể mở rộng lớp Tóm tắt.


71) Sự khác biệt giữa Hashmap và Hashtable là gì?

Bản đồ băm bảng băm
Nó không được đồng bộ. Nó được đồng bộ hóa.
Bản đồ băm cho phép một khóa là giá trị null. HashTable không cho phép giá trị null.
Iterator được sử dụng để duyệt qua HashMap. Iterator hoặc Enumerator được sử dụng để duyệt HashTable.
Nó có thể được sử dụng cho cả HashTable, HashMap và không hoạt động nhanh. Nó có thể được sử dụng với HashTable và không an toàn.
HashMap hoạt động nhanh hơn HashTable. Hashtable không nhanh hơn nhiều so với HashMap.

72) Giải thích hoạt động nội bộ của HashSet trong Java

HashSet trong Java sử dụng nội bộ HashMap để lưu trữ các phần tử. Nó cũng có thể lưu trữ các giá trị duy nhất không có giá trị trùng lặp.

In Java, nhà phát triển HashSet có thể có phương thức add(E e) chỉ lấy phần tử cần thêm làm tham số. Nó không chấp nhận cặp khóa và giá trị.


73) Giải thích ký hiệu Big-O bằng một ví dụ

Ký hiệu Big-O mô tả hiệu suất của thuật toán dưới dạng số phần tử trong ArrayList. Nhà phát triển có thể sử dụng ký hiệu Big-O để chọn triển khai bộ sưu tập. Nó dựa trên hiệu suất, thời gian và bộ nhớ.

Ví dụ: ArrayList get(index i) là một phương thức để thực hiện thao tác trong thời gian không đổi. Nó không phụ thuộc vào tổng số phần tử có sẵn trong danh sách. Do đó, hiệu suất trong ký hiệu Big-O là O(1).


74) Giải thích các phương pháp hay nhất trong Java Khung thu thập

Những thực tiễn tốt nhất trong Java Khung sưu tập là:

  • Chọn đúng loại bộ sưu tập tùy thuộc vào nhu cầu.
  • Tránh làm lại hoặc thay đổi kích thước bằng cách ước tính tổng số phần tử sẽ được lưu trữ trong các lớp bộ sưu tập.
  • Viết thư cho Java chương trình về mặt giao diện. Điều này sẽ giúp nhà phát triển thay đổi cách triển khai một cách dễ dàng trong tương lai.
  • Nhà phát triển có thể sử dụng Generics để đảm bảo an toàn về loại.
  • Sử dụng các lớp bất biến được cung cấp bởi Java Bộ phát triển. Tránh triển khai bằng() và hashCode() cho các lớp tùy chỉnh.
  • Một lập trình viên nên sử dụng lớp tiện ích Collections cho các thuật toán hoặc để có được các bộ sưu tập chỉ đọc, đồng bộ hoặc rỗng. Điều này sẽ tăng cường khả năng tái sử dụng mã với khả năng bảo trì thấp.

75) Giải thích các loại hàng đợi trong Java

Có ba loại hàng đợi trong Java:

  • Hàng đợi ưu tiên: Đây là một loại Hàng đợi đặc biệt trong đó các phần tử được sắp xếp theo thứ tự tự nhiên hoặc bộ so sánh tùy chỉnh của chúng.
  • Hàng đợi tròn: Nó là một loại Hàng đợi trong đó các thao tác của người dùng được thực hiện dựa trên phương thức FIFO. Phần tử cuối cùng được nối với vị trí đầu tiên để tạo thành một vòng tròn.
  • Double-kết thúc hàng đợi: Hàng đợi hai đầu là kiểu dữ liệu trừu tượng khái quát hóa hàng đợi. Các phần tử trong hàng đợi này có thể được thêm hoặc xóa khỏi đầu hoặc đuôi.

76) Sự khác biệt giữa ngăn xếp và hàng đợi là gì?

Sắp xếp Hàng đợi
Nguyên lý hoạt động của ngăn xếp là LIFO. Nguyên lý hoạt động của hàng đợi là FIFO.
Một đầu dùng để thực hiện việc chèn hoặc xóa phần tử. Một đầu dùng để chèn, đầu còn lại dùng để xóa phần tử.
Nó sử dụng một con trỏ. Nó sử dụng hai con trỏ trong một hàng đợi đơn giản.
Nó không có bất kỳ loại biến thể nào. Nó có các biến thể như hàng đợi ưu tiên, hàng đợi tròn, hàng đợi kết thúc đôi.
Nó rất dễ dàng để sử dụng. Nó không phải là dễ dàng để sử dụng.

77) Sự khác biệt giữa mảng và ngăn xếp là gì?

Sự khác biệt giữa mảng và ngăn xếp là:

Mảng Sắp xếp
Nó là tập hợp các phần tử được xác định bởi chỉ mục. Đây là một hoạt động thu thập đóng vai trò là hoạt động đẩy và bật.
Nó có các phần tử có kiểu dữ liệu giống nhau. Nó có các phần tử thuộc kiểu dữ liệu khác nhau.
Các phần tử có thể được xóa hoặc thêm vào mảng bằng thao tác truy cập ngẫu nhiên. Các phần tử có thể được xóa hoặc thêm vào ngăn xếp bằng thao tác LIFO.

78) Định nghĩa Iterator()

Iterator() là một giao diện cung cấp các phương thức để lặp lại Bộ sưu tập. Iterator có thể thay thế cho Enumeration trong Java. Nó cho phép người gọi xóa các phần tử khỏi bộ sưu tập. Phương pháp này cung cấp một cách chung để duyệt bằng cách sử dụng các phần tử của bộ sưu tập và triển khai mẫu thiết kế trình lặp.


79) Có những cách nào để lặp lại một danh sách?

Java Bộ sưu tập Lập trình viên khung có thể lặp lại danh sách theo hai cách: 1) Sử dụng iterator và 2) sử dụng nó cho mỗi danh sách vòng lặp.


80) Ưu điểm của ngăn xếp là gì?

Ưu điểm của ngăn xếp là:

  • Nó giúp bạn quản lý dữ liệu theo phương pháp Vào trước ra trước (LIFO), điều này không thể thực hiện được với danh sách và mảng được liên kết.
  • Khi một hàm được gọi, các biến cục bộ sẽ được lưu trữ trong một ngăn xếp và nó sẽ tự động bị hủy sau khi được trả về.
  • Ngăn xếp được sử dụng khi một biến không được sử dụng bên ngoài hàm đó.
  • Nó cho phép bạn kiểm soát cách phân bổ và giải phóng bộ nhớ.
  • Stack tự động dọn sạch đối tượng.
  • Không dễ bị hỏng
  • Biến không thể thay đổi kích thước.

Những câu hỏi phỏng vấn này cũng sẽ giúp ích cho bài thi viva(orals) của bạn