1. Trong Java, sự khác biệt giữa `==` và `.equals()` khi so sánh các đối tượng là gì?
A. `==` so sánh giá trị của các đối tượng, còn `.equals()` so sánh tham chiếu của các đối tượng.
B. `==` so sánh tham chiếu của các đối tượng, còn `.equals()` so sánh giá trị của các đối tượng (nếu được override).
C. `==` chỉ có thể so sánh các kiểu dữ liệu nguyên thủy, còn `.equals()` chỉ có thể so sánh các đối tượng.
D. Không có sự khác biệt, cả hai đều so sánh giá trị của các đối tượng.
2. Sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java là gì?
A. `ArrayList` nhanh hơn trong việc chèn và xóa phần tử ở giữa danh sách, trong khi `LinkedList` nhanh hơn trong việc truy cập ngẫu nhiên.
B. `ArrayList` sử dụng mảng động để lưu trữ các phần tử, trong khi `LinkedList` sử dụng cấu trúc dữ liệu danh sách liên kết.
C. `ArrayList` có thể chứa các phần tử trùng lặp, trong khi `LinkedList` không thể.
D. `ArrayList` là một lớp trừu tượng, trong khi `LinkedList` là một lớp cụ thể.
3. Trong Java, sự khác biệt giữa Abstract Class và Interface là gì?
A. Abstract Class có thể chứa các phương thức concrete, còn Interface chỉ chứa các phương thức abstract.
B. Class có thể implements nhiều Abstract Class, còn chỉ có thể extends một Interface.
C. Abstract Class không thể có các biến instance, còn Interface có thể.
D. Không có sự khác biệt giữa Abstract Class và Interface.
4. Trong Java, nguyên tắc SOLID nào khuyến khích việc một lớp chỉ nên có một lý do để thay đổi?
A. Single Responsibility Principle (SRP)
B. Open/Closed Principle (OCP)
C. Liskov Substitution Principle (LSP)
D. Interface Segregation Principle (ISP)
5. Trong Java, mục đích của từ khóa `transient` là gì?
A. Để khai báo một biến là hằng số.
B. Để chỉ định rằng một biến không nên được serialized.
C. Để tạo một luồng mới.
D. Để đảm bảo rằng một biến được đọc từ bộ nhớ chính thay vì cache của luồng.
6. Đoạn code sau in ra kết quả gì?
“`java
String s1 = new String(“test”);
String s2 = new String(“test”);
System.out.println(s1.equals(s2));
“`
A. true
B. false
C. NullPointerException
D. IOException
7. Đoạn code sau in ra kết quả gì?
“`java
int x = 5;
int y = x++;
System.out.println(“x = ” + x + “, y = ” + y);
“`
A. x = 5, y = 5
B. x = 6, y = 5
C. x = 5, y = 6
D. x = 6, y = 6
8. Trong Java, Stream API được sử dụng để làm gì?
A. Để tạo giao diện người dùng.
B. Để thực hiện các thao tác trên collections một cách khai báo và song song.
C. Để quản lý bộ nhớ.
D. Để xử lý các sự kiện bất thường.
9. Trong Java, mục đích của Maven hoặc Gradle là gì?
A. Để tạo giao diện người dùng.
B. Để quản lý dependencies, build, và deploy project.
C. Để quản lý bộ nhớ.
D. Để xử lý các sự kiện bất thường.
10. Trong Java, đặc điểm nào sau đây thể hiện tính đóng gói (encapsulation)?
A. Cho phép một lớp kế thừa các thuộc tính và phương thức từ một lớp khác.
B. Che giấu các chi tiết triển khai bên trong của một lớp và chỉ hiển thị giao diện bên ngoài.
C. Khả năng một đối tượng có thể có nhiều hình thức khác nhau.
D. Cơ chế xử lý các sự kiện bất thường xảy ra trong quá trình thực thi chương trình.
11. Trong Java, mục đích của từ khóa `assert` là gì?
A. Để khai báo một biến là hằng số.
B. Để kiểm tra một điều kiện và ném một AssertionError nếu điều kiện đó là false.
C. Để tạo một luồng mới.
D. Để đảm bảo rằng một biến được đọc từ bộ nhớ chính thay vì cache của luồng.
12. Đoạn code sau in ra kết quả gì?
“`java
List list = new ArrayList();
list.add(“A”);
list.add(“B”);
list.add(“C”);
list.remove(1);
System.out.println(list);
“`
A. [A, B, C]
B. [A, C]
C. [B, C]
D. [A, B]
13. Trong Java, sự khác biệt giữa `throw` và `throws` là gì?
A. `throw` được sử dụng để khai báo một exception có thể được ném ra từ một phương thức, trong khi `throws` được sử dụng để ném một exception.
B. `throw` được sử dụng để ném một exception, trong khi `throws` được sử dụng để khai báo một exception có thể được ném ra từ một phương thức.
C. Cả hai đều được sử dụng để ném một exception, nhưng `throw` được sử dụng bên trong một khối `try-catch`, trong khi `throws` được sử dụng bên ngoài.
D. Cả hai đều được sử dụng để khai báo một exception, nhưng `throw` được sử dụng trong interface, trong khi `throws` được sử dụng trong class.
14. Đoạn code sau in ra kết quả gì?
“`java
int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println(“a = ” + a + “, b = ” + b);
“`
A. a = 10, b = 20
B. a = 20, b = 10
C. a = 0, b = 0
D. a = 30, b = -10
15. Trong Java, từ khóa nào được sử dụng để tạo một hằng số?
A. static
B. const
C. final
D. immutable
16. Trong Java, Annotation được sử dụng để làm gì?
A. Để tạo các đối tượng một cách tự động.
B. Để cung cấp metadata về code.
C. Để quản lý bộ nhớ.
D. Để xử lý các sự kiện bất thường.
17. Đoạn code sau in ra kết quả gì?
“`java
String str = “Java”;
str.concat(” Programming”);
System.out.println(str);
“`
A. Java Programming
B. Java
C. NullPointerException
D. IOException
18. Trong Java, mục đích của từ khóa `volatile` là gì?
A. Để khai báo một biến là hằng số.
B. Để đảm bảo rằng một biến được đọc từ bộ nhớ chính thay vì cache của luồng.
C. Để tạo một luồng mới.
D. Để ngăn chặn việc thực thi đồng thời của nhiều luồng trên cùng một đối tượng hoặc khối mã.
19. Interface trong Java có thể chứa những gì?
A. Chỉ các phương thức trừu tượng.
B. Chỉ các biến static final.
C. Các phương thức trừu tượng và các biến static final.
D. Các phương thức đã được triển khai và các biến thông thường.
20. Trong Java, garbage collection là gì?
A. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
B. Một quá trình tự động giải phóng bộ nhớ không còn được sử dụng bởi chương trình.
C. Một công cụ để tìm và sửa lỗi trong chương trình.
D. Một phương pháp để nén dữ liệu để tiết kiệm không gian lưu trữ.
21. Trong Java, mục đích của Design Pattern Singleton là gì?
A. Để tạo ra nhiều instance của một class.
B. Để đảm bảo rằng một class chỉ có một instance duy nhất và cung cấp một điểm truy cập toàn cục đến instance đó.
C. Để tạo ra một interface chung cho các class khác nhau.
D. Để che giấu các chi tiết triển khai của một class.
22. Phương thức `hashCode()` trong Java được sử dụng để làm gì?
A. Trả về một mã số duy nhất đại diện cho một đối tượng.
B. So sánh hai đối tượng xem chúng có bằng nhau hay không.
C. Chuyển đổi một đối tượng thành một chuỗi.
D. Kiểm tra xem một đối tượng có phải là null hay không.
23. Đoạn code sau in ra kết quả gì?
“`java
Integer num1 = 100;
Integer num2 = 100;
System.out.println(num1 == num2);
Integer num3 = 200;
Integer num4 = 200;
System.out.println(num3 == num4);
“`
A. true
true
B. true
false
C. false
true
D. false
false
24. Đoạn code sau in ra kết quả gì?
“`java
int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr.length);
“`
A. 4
B. 5
C. 6
D. NullPointerException
25. Trong Java, exception `NullPointerException` xảy ra khi nào?
A. Khi cố gắng truy cập một biến chưa được khởi tạo.
B. Khi cố gắng truy cập một đối tượng thông qua một tham chiếu null.
C. Khi cố gắng chia một số cho 0.
D. Khi cố gắng truy cập một phần tử ngoài phạm vi của một mảng.
26. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật để tạo các đối tượng một cách tự động.
B. Một mẫu thiết kế trong đó các dependency của một đối tượng được cung cấp cho nó thay vì đối tượng tự tạo ra chúng.
C. Một phương pháp để kiểm tra xem một đối tượng có phải là null hay không.
D. Một cách để tối ưu hóa hiệu suất của chương trình.
27. Trong Java, mục đích của từ khóa `synchronized` là gì?
A. Để tạo một luồng mới.
B. Để ngăn chặn việc thực thi đồng thời của nhiều luồng trên cùng một đối tượng hoặc khối mã.
C. Để chỉ định rằng một phương thức là trừu tượng.
D. Để khai báo một biến là hằng số.
28. Phương thức `equals()` trong Java được sử dụng để làm gì?
A. So sánh hai đối tượng xem chúng có phải là một đối tượng hay không (tham chiếu).
B. So sánh hai đối tượng xem chúng có bằng nhau về mặt giá trị hay không.
C. Gán giá trị của một đối tượng cho một đối tượng khác.
D. Kiểm tra xem một đối tượng có phải là null hay không.
29. Trong Java, mục đích chính của việc sử dụng Generics là gì?
A. Để tăng hiệu suất của chương trình.
B. Để cung cấp type safety tại thời điểm biên dịch và loại bỏ nhu cầu ép kiểu.
C. Để giảm kích thước code.
D. Để tạo ra các đối tượng một cách tự động.
30. Đoạn code sau in ra kết quả gì?
“`java
String str1 = “Hello”;
String str2 = new String(“Hello”);
System.out.println(str1 == str2);
“`
A. true
B. false
C. NullPointerException
D. IOException
31. Trong Java, anonymous class là gì?
A. Một lớp không có phương thức.
B. Một lớp không có tên.
C. Một lớp không thể được khởi tạo.
D. Một lớp chỉ có thể được sử dụng một lần.
32. Trong Java, phương thức `wait()`, `notify()` và `notifyAll()` được sử dụng để làm gì?
A. Để quản lý bộ nhớ.
B. Để đồng bộ hóa các luồng.
C. Để tạo ra các đối tượng bất biến.
D. Để tăng tốc độ truy cập cơ sở dữ liệu.
33. Trong Java, garbage collection là gì?
A. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
B. Một quá trình tự động giải phóng bộ nhớ không còn được sử dụng bởi chương trình.
C. Một cách để quản lý các luồng trong chương trình.
D. Một cơ chế để kiểm tra lỗi trong chương trình.
34. Trong Java, mục đích của từ khóa `volatile` là gì?
A. Để tạo ra các biến không thể thay đổi giá trị.
B. Để đảm bảo rằng giá trị của một biến được đọc từ bộ nhớ chính thay vì cache của luồng.
C. Để tạo ra các biến chỉ có thể truy cập từ bên trong lớp.
D. Để tạo ra các biến có thể truy cập từ bất kỳ đâu.
35. Đâu là sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java?
A. `ArrayList` sử dụng mảng động, trong khi `LinkedList` sử dụng danh sách liên kết đôi.
B. `ArrayList` cho phép truy cập ngẫu nhiên nhanh hơn, trong khi `LinkedList` cho phép chèn/xóa nhanh hơn ở giữa danh sách.
C. `ArrayList` an toàn luồng, trong khi `LinkedList` thì không.
D. Cả `ArrayList` và `LinkedList` đều có hiệu suất tương đương trong mọi trường hợp.
36. Đâu là sự khác biệt giữa `HashMap` và `TreeMap` trong Java?
A. `HashMap` duy trì thứ tự chèn, `TreeMap` không.
B. `TreeMap` duy trì thứ tự chèn, `HashMap` không.
C. `HashMap` không đảm bảo thứ tự, `TreeMap` sắp xếp các phần tử theo khóa.
D. Không có sự khác biệt, cả hai đều hoạt động giống nhau.
37. Trong Java, Dependency Injection (DI) là gì?
A. Một mẫu thiết kế để giảm sự phụ thuộc giữa các lớp.
B. Một kỹ thuật để tăng tốc độ biên dịch.
C. Một cách để quản lý bộ nhớ hiệu quả hơn.
D. Một phương pháp để tạo ra các đối tượng bất biến.
38. Trong Java, interface có thể chứa những gì?
A. Chỉ các phương thức trừu tượng.
B. Chỉ các biến static final.
C. Các phương thức trừu tượng và các biến static final.
D. Các phương thức concrete và các biến instance.
39. Đâu là mục đích của annotation `@FunctionalInterface` trong Java?
A. Để đánh dấu một interface là một functional interface (chỉ có một phương thức trừu tượng).
B. Để đánh dấu một interface là một interface thông thường.
C. Để tạo ra một interface bất biến.
D. Để tăng tốc độ thực thi của interface.
40. Đâu là mục đích của phương thức `clone()` trong Java?
A. Để tạo ra một bản sao của một đối tượng.
B. Để so sánh hai đối tượng.
C. Để kiểm tra xem một đối tượng có phải là null hay không.
D. Để chuyển đổi một đối tượng thành một chuỗi.
41. Đâu là sự khác biệt giữa `StringBuilder` và `StringBuffer` trong Java?
A. `StringBuilder` an toàn luồng, `StringBuffer` thì không.
B. `StringBuffer` an toàn luồng, `StringBuilder` thì không.
C. Không có sự khác biệt, cả hai đều hoạt động giống nhau.
D. `StringBuilder` chỉ dùng cho chuỗi ngắn, `StringBuffer` dùng cho chuỗi dài.
42. Đâu là sự khác biệt giữa Checked Exception và Unchecked Exception trong Java?
A. Checked Exception phải được xử lý hoặc khai báo, Unchecked Exception thì không.
B. Unchecked Exception phải được xử lý hoặc khai báo, Checked Exception thì không.
C. Checked Exception xảy ra tại thời gian chạy, Unchecked Exception xảy ra tại thời gian biên dịch.
D. Không có sự khác biệt, cả hai đều phải được xử lý hoặc khai báo.
43. Trong Java, Singleton Pattern là gì?
A. Một mẫu thiết kế để tạo ra nhiều thể hiện của một lớp.
B. Một mẫu thiết kế để đảm bảo rằng một lớp chỉ có một thể hiện duy nhất.
C. Một mẫu thiết kế để tạo ra các đối tượng bất biến.
D. Một mẫu thiết kế để quản lý bộ nhớ hiệu quả hơn.
44. Đâu là sự khác biệt giữa `throw` và `throws` trong Java?
A. `throw` dùng để khai báo exception, `throws` dùng để ném exception.
B. `throw` dùng để ném exception, `throws` dùng để khai báo exception.
C. Không có sự khác biệt, chúng có thể thay thế cho nhau.
D. `throw` dùng trong interface, `throws` dùng trong class.
45. Đâu là lợi ích của việc sử dụng Generics trong Java?
A. Giảm kích thước mã.
B. Tăng hiệu suất thời gian chạy.
C. Cung cấp kiểm tra kiểu tại thời điểm biên dịch.
D. Cho phép sử dụng các kiểu dữ liệu động.
46. Trong Java, mục đích của `try-with-resources` statement là gì?
A. Để quản lý bộ nhớ hiệu quả hơn.
B. Để đảm bảo rằng các tài nguyên (ví dụ: file, kết nối cơ sở dữ liệu) được đóng sau khi sử dụng.
C. Để tăng tốc độ thực thi của chương trình.
D. Để tạo ra các đối tượng bất biến.
47. Annotation `@Override` trong Java được sử dụng để làm gì?
A. Đánh dấu một phương thức là static.
B. Đánh dấu một phương thức là private.
C. Chỉ ra rằng một phương thức ghi đè một phương thức từ lớp cha.
D. Tạo một phương thức mới trong interface.
48. Trong Java, mục đích của Reflection API là gì?
A. Để tạo ra các đối tượng bất biến.
B. Để kiểm tra và thao tác các lớp, interface, trường, và phương thức tại thời gian chạy.
C. Để tăng tốc độ thực thi của chương trình.
D. Để quản lý bộ nhớ hiệu quả hơn.
49. Trong Java, mục đích của phương thức `hashCode()` là gì?
A. Để so sánh hai đối tượng.
B. Để tạo ra một mã băm (hash code) cho một đối tượng.
C. Để kiểm tra xem một đối tượng có phải là null hay không.
D. Để chuyển đổi một đối tượng thành một chuỗi.
50. Trong Java, từ khóa `final` được sử dụng để làm gì?
A. Để khai báo một biến có thể thay đổi giá trị.
B. Để khai báo một biến không thể thay đổi giá trị sau khi khởi tạo.
C. Để khai báo một lớp có thể kế thừa.
D. Để khai báo một phương thức có thể bị ghi đè.
51. Sự khác biệt chính giữa `==` và phương thức `equals()` trong Java là gì?
A. `==` so sánh giá trị, `equals()` so sánh tham chiếu.
B. `==` so sánh tham chiếu, `equals()` so sánh giá trị (nếu được ghi đè).
C. `==` chỉ dùng cho số nguyên thủy, `equals()` chỉ dùng cho đối tượng.
D. Không có sự khác biệt, cả hai đều so sánh giá trị.
52. Trong Java, mục đích của từ khóa `synchronized` là gì?
A. Để tăng tốc độ thực thi của chương trình.
B. Để đảm bảo rằng chỉ một luồng có thể truy cập một khối mã hoặc phương thức tại một thời điểm.
C. Để tạo ra các đối tượng bất biến.
D. Để quản lý bộ nhớ một cách hiệu quả hơn.
53. Trong Java, exception `NullPointerException` xảy ra khi nào?
A. Khi một biến số nguyên bị chia cho 0.
B. Khi cố gắng truy cập một thành viên của một đối tượng null.
C. Khi một mảng được truy cập với một chỉ số nằm ngoài phạm vi.
D. Khi một chuỗi không thể được chuyển đổi thành một số.
54. Trong Java, Iterator Pattern là gì?
A. Một mẫu thiết kế để tạo ra các đối tượng bất biến.
B. Một mẫu thiết kế để cung cấp một cách tuần tự truy cập các phần tử của một tập hợp mà không cần tiết lộ cấu trúc bên dưới của tập hợp đó.
C. Một mẫu thiết kế để quản lý bộ nhớ hiệu quả hơn.
D. Một mẫu thiết kế để tăng tốc độ thực thi của chương trình.
55. Phương thức `equals()` trong Java được sử dụng để làm gì?
A. So sánh tham chiếu của hai đối tượng.
B. So sánh giá trị của hai đối tượng.
C. Kiểm tra xem một đối tượng có phải là null hay không.
D. Tạo một bản sao của đối tượng.
56. Trong Java, Serialization là gì?
A. Quá trình chuyển đổi một đối tượng thành một chuỗi byte để lưu trữ hoặc truyền tải.
B. Quá trình tạo ra một đối tượng mới từ một lớp.
C. Quá trình kiểm tra lỗi trong một đối tượng.
D. Quá trình tối ưu hóa bộ nhớ sử dụng bởi một đối tượng.
57. Đâu là lợi ích chính của việc sử dụng Lambda Expression trong Java?
A. Tăng hiệu suất của chương trình.
B. Cho phép viết mã ngắn gọn và dễ đọc hơn.
C. Giảm kích thước của file thực thi.
D. Cho phép sử dụng các kiểu dữ liệu động.
58. Đâu là mục đích chính của từ khóa `static` trong Java?
A. Tạo ra các biến không thể thay đổi.
B. Tạo ra các biến chỉ có thể truy cập từ bên trong lớp.
C. Tạo ra các thành viên thuộc về lớp chứ không phải đối tượng.
D. Tạo ra các biến có thể truy cập từ bất kỳ đâu.
59. Trong Java, Stream API được sử dụng để làm gì?
A. Để quản lý các luồng dữ liệu vào/ra.
B. Để thực hiện các thao tác xử lý dữ liệu theo kiểu hàm (functional) trên các tập hợp.
C. Để tạo ra các đối tượng bất biến.
D. Để tăng tốc độ truy cập cơ sở dữ liệu.
60. Trong Java, đặc điểm nào sau đây là đúng về tính đa hình (polymorphism)?
A. Tính đa hình chỉ áp dụng cho các lớp trừu tượng.
B. Tính đa hình cho phép các đối tượng thuộc các lớp khác nhau được coi là đối tượng của một lớp chung.
C. Tính đa hình chỉ có thể được thực hiện thông qua kế thừa.
D. Tính đa hình ngăn cản việc sử dụng lại mã.
61. Đâu là cách tốt nhất để tạo một chuỗi bất biến (immutable string) trong Java?
A. Sử dụng lớp `StringBuilder`
B. Sử dụng lớp `StringBuffer`
C. Sử dụng lớp `String`
D. Sử dụng lớp `StringJoiner`
62. Trong Java, cách nào sau đây là đúng để tạo một Singleton class?
A. Tạo một class với constructor public
B. Tạo một class với constructor private và một static method để trả về instance của class
C. Tạo một interface
D. Sử dụng abstract class
63. Trong Java, mục đích chính của việc sử dụng marker interface (ví dụ: `Serializable`) là gì?
A. Để đánh dấu một class là không thể thay đổi
B. Để cung cấp thông tin cho JVM hoặc trình biên dịch về class
C. Để tạo các phương thức abstract
D. Để quản lý bộ nhớ
64. Trong Java, exception nào sau đây là unchecked exception?
A. IOException
B. SQLException
C. NullPointerException
D. ClassNotFoundException
65. Trong Java, thế nào là ‘Method Overloading’?
A. Viết lại một phương thức trong lớp con với cùng tên và tham số
B. Tạo nhiều phương thức trong cùng một class với cùng tên nhưng khác tham số
C. Tạo các class ẩn danh
D. Tạo interface
66. Trong Java, sự khác biệt giữa `throw` và `throws` là gì?
A. `throw` dùng để khai báo exception, `throws` dùng để ném exception
B. `throw` dùng để ném exception, `throws` dùng để khai báo exception
C. Cả hai đều dùng để ném exception
D. Cả hai đều dùng để khai báo exception
67. Trong Java, Stream API được sử dụng để làm gì?
A. Để tạo giao diện người dùng
B. Để xử lý dữ liệu tuần tự một cách hiệu quả
C. Để quản lý bộ nhớ
D. Để thực hiện các thao tác nhập/xuất
68. Phương thức `wait()`, `notify()` và `notifyAll()` được sử dụng để làm gì trong Java?
A. Để quản lý bộ nhớ
B. Để đồng bộ hóa các luồng
C. Để xử lý ngoại lệ
D. Để tạo các luồng mới
69. Trong Java, nguyên tắc SOLID nào nói về việc một class chỉ nên có một lý do để thay đổi?
A. Single Responsibility Principle (SRP)
B. Open/Closed Principle (OCP)
C. Liskov Substitution Principle (LSP)
D. Interface Segregation Principle (ISP)
70. Trong Java, JDBC được sử dụng để làm gì?
A. Để tạo giao diện người dùng
B. Để kết nối và tương tác với cơ sở dữ liệu
C. Để quản lý bộ nhớ
D. Để xử lý các yêu cầu HTTP
71. Trong Java, Serialization là gì?
A. Quá trình chuyển đổi một đối tượng thành một chuỗi byte để lưu trữ hoặc truyền tải
B. Quá trình tạo một đối tượng mới
C. Quá trình giải phóng bộ nhớ
D. Quá trình kiểm tra lỗi
72. Trong Java, mục đích của annotation là gì?
A. Để tạo tài liệu tự động cho code
B. Để cung cấp siêu dữ liệu về code
C. Để thực hiện kiểm tra lỗi tại thời gian biên dịch
D. Để tối ưu hóa hiệu suất của code
73. Trong Java, sự khác biệt chính giữa `HashMap` và `TreeMap` là gì?
A. `HashMap` duy trì thứ tự các phần tử, `TreeMap` thì không
B. `TreeMap` duy trì thứ tự các phần tử, `HashMap` thì không
C. `HashMap` cho phép key null, `TreeMap` thì không
D. `TreeMap` cho phép key null, `HashMap` thì không
74. Trong Java, đặc điểm nào sau đây KHÔNG phải là một đặc điểm của lập trình hướng đối tượng?
A. Tính trừu tượng
B. Tính đa hình
C. Tính kế thừa
D. Tính toàn cục
75. Trong Java, Annotation `@Override` được sử dụng để làm gì?
A. Để tạo một phương thức mới
B. Để chỉ ra rằng một phương thức ghi đè một phương thức từ lớp cha
C. Để đánh dấu một phương thức là không thể thay đổi
D. Để tối ưu hóa hiệu suất của một phương thức
76. Đâu là sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java?
A. `ArrayList` nhanh hơn trong việc chèn và xóa phần tử ở đầu danh sách
B. `LinkedList` sử dụng bộ nhớ hiệu quả hơn `ArrayList`
C. `ArrayList` nhanh hơn trong việc truy cập phần tử ngẫu nhiên
D. `LinkedList` không cho phép lưu trữ các phần tử trùng lặp
77. Trong Java, sự khác biệt giữa `==` và phương thức `equals()` là gì?
A. `==` so sánh giá trị, `equals()` so sánh tham chiếu
B. `==` so sánh tham chiếu, `equals()` so sánh giá trị (nếu được ghi đè)
C. Cả hai đều so sánh giá trị
D. Cả hai đều so sánh tham chiếu
78. Phương thức `equals()` trong Java được sử dụng để làm gì?
A. So sánh tham chiếu của hai đối tượng
B. So sánh giá trị của hai đối tượng
C. Kiểm tra xem một đối tượng có phải là null không
D. Gán giá trị cho một đối tượng
79. Trong Java, từ khóa nào được sử dụng để tạo một hằng số?
A. static
B. const
C. final
D. immutable
80. Trong Java, mục đích của từ khóa `transient` là gì?
A. Để đánh dấu một biến là hằng số
B. Để ngăn một biến được tuần tự hóa (serialized)
C. Để tạo một biến toàn cục
D. Để tối ưu hóa hiệu suất của biến
81. Trong Java, khi nào nên sử dụng `HashSet` thay vì `ArrayList`?
A. Khi cần truy cập các phần tử theo chỉ số
B. Khi cần lưu trữ các phần tử theo thứ tự chèn
C. Khi cần kiểm tra sự tồn tại của một phần tử một cách nhanh chóng và không quan tâm đến thứ tự
D. Khi cần lưu trữ các phần tử trùng lặp
82. Đâu là mục đích chính của garbage collection trong Java?
A. Tối ưu hóa hiệu suất của chương trình
B. Giải phóng bộ nhớ đã được cấp phát nhưng không còn sử dụng
C. Ngăn chặn tràn bộ nhớ
D. Quản lý các luồng (threads)
83. Trong Java, interface khác với abstract class như thế nào?
A. Interface có thể chứa các phương thức đã được triển khai
B. Một class có thể implements nhiều interface nhưng chỉ có thể kế thừa từ một abstract class
C. Abstract class không thể chứa các biến
D. Interface có thể có constructor
84. Trong Java, thuật ngữ ‘Covariance’ và ‘Contravariance’ liên quan đến vấn đề gì?
A. Kế thừa (Inheritance)
B. Đa hình (Polymorphism)
C. Generics
D. Ngoại lệ (Exceptions)
85. Trong Java, điểm khác biệt chính giữa `StringBuilder` và `StringBuffer` là gì?
A. `StringBuilder` là bất biến, `StringBuffer` là có thể thay đổi
B. `StringBuilder` an toàn cho đa luồng, `StringBuffer` thì không
C. `StringBuffer` an toàn cho đa luồng, `StringBuilder` thì không
D. Không có sự khác biệt
86. Trong Java, mục đích của Factory Pattern là gì?
A. Để tạo các đối tượng một cách trực tiếp
B. Để tạo interface
C. Để trừu tượng hóa quá trình tạo đối tượng
D. Để quản lý bộ nhớ
87. Trong Java, cơ chế nào cho phép một đối tượng thuộc một lớp có thể được coi là thuộc một lớp khác?
A. Đa kế thừa
B. Tính đóng gói
C. Tính đa hình
D. Tính trừu tượng
88. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật để tạo các đối tượng độc lập
B. Một mẫu thiết kế để giảm sự phụ thuộc giữa các lớp
C. Một cách để tăng hiệu suất của ứng dụng
D. Một phương pháp để quản lý bộ nhớ
89. Trong Java, từ khóa `synchronized` được sử dụng để làm gì?
A. Tạo một luồng mới
B. Đảm bảo rằng chỉ một luồng có thể truy cập vào một đoạn code hoặc phương thức tại một thời điểm
C. Đồng bộ hóa dữ liệu giữa các đối tượng
D. Tạm dừng một luồng
90. Trong Java, mục đích của Lambda Expression là gì?
A. Để tạo các class ẩn danh
B. Để cung cấp một cách ngắn gọn để biểu diễn các instance của functional interface
C. Để quản lý bộ nhớ
D. Để xử lý ngoại lệ
91. Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu dữ liệu nguyên thủy (primitive data type) trong Java?
A. int
B. float
C. boolean
D. String
92. Đâu là cách khai báo một ArrayList các chuỗi (String) trong Java?
A. ArrayList list = new ArrayList();
B. ArrayList list = new ArrayList(String);
C. List list = new List();
D. String[] list = new ArrayList();
93. Phương thức nào sau đây được gọi tự động khi một đối tượng được tạo ra trong Java?
A. finalize()
B. start()
C. run()
D. Constructor
94. Trong Java, thread là gì?
A. Một biến toàn cục
B. Một luồng thực thi trong một chương trình
C. Một loại collection
D. Một interface
95. Phương thức nào sau đây được sử dụng để chuyển đổi một chuỗi (String) thành một số nguyên (int) trong Java?
A. String.parseInt()
B. Integer.parseInt()
C. String.toInt()
D. Integer.valueOf()
96. Phương thức nào sau đây được sử dụng để lấy độ dài của một chuỗi (String) trong Java?
A. size()
B. length()
C. count()
D. index()
97. Phương thức nào sau đây được sử dụng để so sánh hai chuỗi (String) trong Java một cách phân biệt chữ hoa chữ thường?
A. equals()
B. equalsIgnoreCase()
C. compareTo()
D. compareToIgnoreCase()
98. Vòng lặp nào sau đây luôn thực thi ít nhất một lần trong Java?
A. for
B. while
C. do-while
D. if
99. Phương thức nào sau đây được sử dụng để dừng một thread trong Java?
A. stop()
B. suspend()
C. interrupt()
D. terminate()
100. Đâu là từ khóa được sử dụng để tạo một hằng số trong Java?
A. static
B. const
C. final
D. immutable
101. Trong Java, từ khóa nào được sử dụng để ngăn một lớp bị kế thừa?
A. static
B. final
C. abstract
D. private
102. Trong Java, garbage collection là gì?
A. Một kỹ thuật tối ưu hóa mã nguồn
B. Một cơ chế quản lý bộ nhớ tự động
C. Một loại exception
D. Một công cụ debug
103. Đâu là từ khóa được sử dụng để khai báo một lớp trừu tượng (abstract class) trong Java?
A. static
B. final
C. abstract
D. private
104. Đâu là cách tạo một đối tượng của lớp ‘MyClass’ trong Java?
A. MyClass obj = new MyClass();
B. MyClass obj = MyClass();
C. MyClass obj = create MyClass();
D. MyClass obj = new();
105. Phương thức nào sau đây được sử dụng để tạo một bản sao (copy) của một đối tượng trong Java?
A. duplicate()
B. clone()
C. copy()
D. newInstance()
106. Trong Java, cơ chế nào cho phép một lớp kế thừa các thuộc tính và phương thức từ một lớp khác?
A. Đóng gói (Encapsulation)
B. Kế thừa (Inheritance)
C. Đa hình (Polymorphism)
D. Trừu tượng (Abstraction)
107. Từ khóa nào được sử dụng để chỉ đối tượng hiện tại trong một phương thức hoặc constructor?
A. that
B. this
C. object
D. current
108. Đâu là cách khai báo một mảng các số nguyên (int) có kích thước là 5 trong Java?
A. int arr = new int[5];
B. int[] arr = new int[5];
C. int arr[] = new int(5);
D. int[5] arr = new int[];
109. Trong Java, từ khóa nào được sử dụng để xử lý ngoại lệ (exception)?
A. handle
B. catch
C. try
D. exception
110. Trong Java, Collection nào sau đây đảm bảo các phần tử được lưu trữ theo thứ tự chèn vào?
A. HashSet
B. TreeSet
C. LinkedHashSet
D. PriorityQueue
111. Đâu là một ví dụ về tính đa hình (polymorphism) trong Java?
A. Một lớp kế thừa từ nhiều lớp khác
B. Một phương thức có cùng tên nhưng khác tham số trong cùng một lớp
C. Một lớp có nhiều constructor
D. Một biến được khai báo là final
112. Trong Java, annotation nào được sử dụng để chỉ ra rằng một phương thức ghi đè (override) một phương thức từ lớp cha?
A. @Override
B. @Overload
C. @Super
D. @Inherit
113. Đâu là cách đúng để viết một comment một dòng trong Java?
A. /* This is a comment */
B. // This is a comment
C.
D. # This is a comment
114. Đâu là cách đúng để tạo một đối tượng Scanner để đọc dữ liệu từ bàn phím trong Java?
A. Scanner scanner = new Scanner();
B. Scanner scanner = new Scanner(System.in);
C. Scanner scanner = System.in.Scanner();
D. Scanner scanner = new System.Scanner();
115. Trong Java, phương thức ‘System.out.println()’ được sử dụng để làm gì?
A. Đọc dữ liệu từ bàn phím
B. In dữ liệu ra màn hình console
C. Ghi dữ liệu vào file
D. Kết nối với cơ sở dữ liệu
116. Ngoại lệ (Exception) nào sau đây là một checked exception trong Java?
A. NullPointerException
B. ArrayIndexOutOfBoundsException
C. IOException
D. IllegalArgumentException
117. Trong Java, đặc điểm nào sau đây KHÔNG phải là một đặc điểm của lập trình hướng đối tượng (OOP)?
A. Tính đóng gói (Encapsulation)
B. Tính kế thừa (Inheritance)
C. Tính đa hình (Polymorphism)
D. Sử dụng con trỏ trực tiếp (Direct pointer manipulation)
118. Trong Java, mục đích của từ khóa ‘static’ là gì?
A. Tạo ra một đối tượng mới
B. Khai báo một hằng số
C. Liên kết một biến hoặc phương thức với lớp chứ không phải với một đối tượng cụ thể
D. Ngăn chặn một lớp bị kế thừa
119. Interface trong Java có thể chứa những gì?
A. Chỉ các phương thức trừu tượng (abstract methods)
B. Chỉ các biến static final
C. Các phương thức trừu tượng và các biến static final
D. Các phương thức concrete và các biến instance
120. Trong Java, phương thức ‘equals()’ của lớp Object so sánh cái gì?
A. Giá trị của các đối tượng
B. Tham chiếu của các đối tượng
C. Kiểu dữ liệu của các đối tượng
D. Kích thước của các đối tượng
121. Trong Java, exception nào sau đây là unchecked exception?
A. IOException
B. SQLException
C. NullPointerException
D. FileNotFoundException
122. Đâu là sự khác biệt chính giữa `==` và phương thức `.equals()` trong Java khi so sánh các đối tượng?
A. `==` so sánh tham chiếu đối tượng, `.equals()` so sánh nội dung đối tượng
B. `==` so sánh nội dung đối tượng, `.equals()` so sánh tham chiếu đối tượng
C. Cả hai đều so sánh tham chiếu đối tượng
D. Cả hai đều so sánh nội dung đối tượng
123. Mục đích của từ khóa `static` trong Java là gì?
A. Tạo ra một biến hoặc phương thức chỉ có thể truy cập được trong lớp chứa nó.
B. Tạo ra một biến hoặc phương thức thuộc về lớp chứ không phải là một thể hiện cụ thể của lớp đó.
C. Ngăn không cho một phương thức bị ghi đè trong lớp con.
D. Chỉ định rằng một lớp không thể được tạo thể hiện.
124. Trong Java, Dependency Injection (DI) là gì?
A. Một mẫu thiết kế phần mềm cho phép giảm sự phụ thuộc giữa các lớp.
B. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
C. Một cách để quản lý bộ nhớ hiệu quả hơn.
D. Một phương pháp để kiểm tra lỗi trong mã nguồn.
125. Trong Java, đặc điểm nào sau đây KHÔNG phải là một đặc điểm của lập trình hướng đối tượng?
A. Tính đa hình (Polymorphism)
B. Tính trừu tượng (Abstraction)
C. Tính kế thừa (Inheritance)
D. Tính toàn cục (Globality)
126. Trong Java, Iterator dùng để làm gì?
A. Để sắp xếp các phần tử trong một Collection.
B. Để duyệt qua các phần tử của một Collection.
C. Để tìm kiếm một phần tử cụ thể trong một Collection.
D. Để tạo ra một bản sao của một Collection.
127. Annotation trong Java được sử dụng để làm gì?
A. Để cung cấp siêu dữ liệu về mã nguồn.
B. Để thực hiện các thao tác nhập/xuất dữ liệu.
C. Để định nghĩa các lớp trừu tượng.
D. Để tạo ra các luồng (threads).
128. Trong Java, mục đích chính của việc sử dụng Design Pattern là gì?
A. Để tăng tốc độ thực thi của chương trình.
B. Để giải quyết các vấn đề thiết kế phần mềm thường gặp một cách hiệu quả.
C. Để giảm kích thước mã nguồn.
D. Để làm cho mã nguồn trở nên khó hiểu hơn.
129. Trong Java, phương thức `compareTo()` được sử dụng để làm gì?
A. Để so sánh hai đối tượng xem chúng có bằng nhau hay không.
B. Để so sánh hai đối tượng và trả về một số nguyên âm, dương hoặc không nếu đối tượng này nhỏ hơn, lớn hơn hoặc bằng đối tượng kia.
C. Để chuyển đổi một đối tượng thành một chuỗi.
D. Để tạo ra một bản sao của một đối tượng.
130. Từ khóa nào sau đây được sử dụng để ngăn một lớp không bị kế thừa trong Java?
A. static
B. abstract
C. final
D. private
131. Sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java là gì?
A. `ArrayList` nhanh hơn trong việc chèn và xóa các phần tử ở giữa danh sách, trong khi `LinkedList` nhanh hơn trong việc truy cập các phần tử theo chỉ mục.
B. `ArrayList` nhanh hơn trong việc truy cập các phần tử theo chỉ mục, trong khi `LinkedList` nhanh hơn trong việc chèn và xóa các phần tử ở giữa danh sách.
C. `ArrayList` sử dụng nhiều bộ nhớ hơn `LinkedList`.
D. Không có sự khác biệt đáng kể giữa `ArrayList` và `LinkedList`.
132. Trong Java, lambda expression là gì?
A. Một cách để tạo ra các lớp ẩn danh.
B. Một cách để biểu diễn một thể hiện của một interface chức năng.
C. Một cách để định nghĩa một phương thức static.
D. Một cách để tạo ra các biến toàn cục.
133. Phương thức nào sau đây được gọi tự động khi một đối tượng được tạo trong Java?
A. finalize()
B. start()
C. run()
D. Constructor
134. Trong Java, cơ chế ‘try-with-resources’ được sử dụng để làm gì?
A. Để tự động đóng các tài nguyên sau khi sử dụng.
B. Để xử lý các exception một cách hiệu quả hơn.
C. Để tạo ra các luồng (threads).
D. Để tối ưu hóa hiệu suất của chương trình.
135. Trong Java, mục đích của từ khóa `synchronized` là gì?
A. Để tạo ra một bản sao của một đối tượng.
B. Để đảm bảo rằng chỉ có một luồng có thể truy cập vào một khối mã hoặc phương thức tại một thời điểm.
C. Để tối ưu hóa hiệu suất của chương trình.
D. Để chỉ định rằng một biến không thể thay đổi giá trị.
136. Trong Java, Serialization là gì?
A. Quá trình chuyển đổi một đối tượng thành một chuỗi byte để lưu trữ hoặc truyền tải.
B. Quá trình chuyển đổi một chuỗi byte thành một đối tượng.
C. Một kỹ thuật để mã hóa dữ liệu.
D. Một cách để nén dữ liệu.
137. ClassLoader trong Java có vai trò gì?
A. Biên dịch mã nguồn Java thành bytecode.
B. Tải các lớp Java vào bộ nhớ trong quá trình thực thi chương trình.
C. Tối ưu hóa hiệu suất của chương trình Java.
D. Quản lý bộ nhớ cho các đối tượng Java.
138. Trong Java, mục đích của Optional là gì?
A. Để thay thế cho việc sử dụng `null` để tránh NullPointerException.
B. Để tạo ra các đối tượng tùy biến.
C. Để quản lý các tùy chọn cấu hình của chương trình.
D. Để tạo ra các tham số tùy chọn cho một phương thức.
139. Trong Java, garbage collection là gì?
A. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
B. Một quá trình tự động giải phóng bộ nhớ không còn được sử dụng bởi chương trình.
C. Một phương pháp để quản lý các kết nối cơ sở dữ liệu.
D. Một công cụ để kiểm tra lỗi trong mã nguồn.
140. Trong Java, sự khác biệt giữa Checked Exception và Unchecked Exception là gì?
A. Checked Exception phải được xử lý hoặc khai báo trong mệnh đề `throws`, trong khi Unchecked Exception thì không.
B. Unchecked Exception phải được xử lý hoặc khai báo trong mệnh đề `throws`, trong khi Checked Exception thì không.
C. Checked Exception xảy ra trong thời gian biên dịch, trong khi Unchecked Exception xảy ra trong thời gian chạy.
D. Unchecked Exception xảy ra trong thời gian biên dịch, trong khi Checked Exception xảy ra trong thời gian chạy.
141. Trong Java, nguyên tắc ‘DRY’ (Don’t Repeat Yourself) có nghĩa là gì?
A. Không viết mã trùng lặp.
B. Viết mã dễ đọc và dễ hiểu.
C. Viết mã hiệu quả và tối ưu.
D. Không sử dụng các thư viện bên ngoài.
142. Trong Java, điểm khác biệt giữa `StringBuilder` và `StringBuffer` là gì?
A. `StringBuilder` là thread-safe, `StringBuffer` thì không.
B. `StringBuffer` là thread-safe, `StringBuilder` thì không.
C. Không có sự khác biệt, cả hai đều thread-safe.
D. Không có sự khác biệt, cả hai đều không thread-safe.
143. Trong Java, SOLID là viết tắt của những nguyên tắc thiết kế hướng đối tượng nào?
A. Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion
B. Simple, Obvious, Logical, Intuitive, Documented
C. Secure, Optimized, Lightweight, Integrated, Detailed
D. Structured, Organized, লিঙ্কড, Implemented, Defined
144. Mục đích của Stream API trong Java là gì?
A. Để quản lý bộ nhớ hiệu quả hơn.
B. Để thực hiện các thao tác trên tập hợp dữ liệu theo kiểu hàm.
C. Để tạo ra giao diện người dùng đồ họa.
D. Để kết nối với cơ sở dữ liệu.
145. Phương thức `wait()`, `notify()` và `notifyAll()` được định nghĩa trong lớp nào trong Java?
A. Thread
B. Runnable
C. Object
D. System
146. Trong Java, mục đích của `volatile` keyword là gì?
A. Đảm bảo một biến không thể thay đổi sau khi được khởi tạo.
B. Đảm bảo một biến được đọc từ bộ nhớ chính thay vì cache của thread.
C. Đảm bảo một phương thức không thể bị override.
D. Đảm bảo một class không thể bị kế thừa.
147. Trong Java, điểm khác biệt chính giữa `throw` và `throws` là gì?
A. `throw` dùng để khai báo exception, `throws` dùng để ném exception.
B. `throws` dùng để khai báo exception, `throw` dùng để ném exception.
C. Cả hai đều dùng để ném exception.
D. Cả hai đều dùng để khai báo exception.
148. Interface trong Java có thể chứa gì?
A. Chỉ các phương thức trừu tượng
B. Các phương thức trừu tượng và các biến static final
C. Các phương thức trừu tượng và các phương thức có thân (default methods)
D. Tất cả các đáp án trên
149. Trong Java, thuật ngữ ‘immutability’ (tính bất biến) có nghĩa là gì?
A. Một đối tượng không thể thay đổi trạng thái của nó sau khi được tạo.
B. Một đối tượng có thể thay đổi trạng thái của nó sau khi được tạo.
C. Một biến không thể được gán lại giá trị mới.
D. Một phương thức không thể bị override.
150. Trong Java, JPA (Java Persistence API) là gì?
A. Một thư viện để tạo giao diện người dùng đồ họa.
B. Một API để quản lý bộ nhớ.
C. Một đặc tả kỹ thuật để quản lý dữ liệu quan hệ trong các ứng dụng Java.
D. Một công cụ để kiểm tra lỗi trong mã nguồn.