1. Đâ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` an toàn luồng, trong khi `LinkedList` thì không.
C. `ArrayList` có thể chứa các phần tử trùng lặp, trong khi `LinkedList` thì không.
D. `ArrayList` nhanh hơn trong việc chèn và xóa phần tử ở đầu danh sách so với `LinkedList`.
2. Đâu là đặc điểm của một lớp (class) abstract trong Java?
A. Không thể tạo đối tượng từ lớp abstract.
B. Có thể chứa các phương thức abstract.
C. Phải được kế thừa bởi một lớp con để sử dụng.
D. Tất cả các đáp án trên.
3. Trong Java, interface `Comparable` được sử dụng để làm gì?
A. Định nghĩa cách các đối tượng của một lớp có thể so sánh với nhau.
B. Tạo ra một luồng mới.
C. Định nghĩa một lớp trừu tượng.
D. Xử lý các sự kiện chuột.
4. Trong Java, đâu là một ví dụ về structural design pattern?
A. Adapter
B. Observer
C. Strategy
D. Template Method
5. Mục đích chính của từ khóa `transient` trong Java là gì?
A. Ngăn không cho một biến được lưu trong quá trình serialization.
B. Khai báo một biến là hằng số.
C. Chỉ định rằng một biến chỉ có thể được truy cập từ bên trong lớp.
D. Cho phép một biến được truy cập từ bất kỳ đâu.
6. Trong Java, đâu là một lợi ích của việc sử dụng lambda expression?
A. Cho phép viết code ngắn gọn và dễ đọc hơn.
B. Tăng hiệu suất của chương trình.
C. Giảm độ phức tạp của code.
D. Tất cả các đáp án trên.
7. Trong Java, từ khóa nào được sử dụng để khai báo một hằng số?
A. static
B. final
C. const
D. immutable
8. Trong Java, phương thức `hashCode()` được sử dụng để làm gì?
A. Trả về một giá trị hash code cho đối tượng.
B. So sánh hai đối tượng.
C. Tạo ra một bản sao của đối tượng.
D. Giải phóng bộ nhớ của đối tượng.
9. Phương thức nào sau đây được gọi tự động khi một đối tượng Java bị hủy?
A. finalize()
B. delete()
C. destroy()
D. gc()
10. Trong Java, mục đích của từ khóa `volatile` là gì?
A. Đảm bảo rằng một biến được đọc trực tiếp từ bộ nhớ chính, không phải từ cache của luồng.
B. Khai báo một biến là hằng số.
C. Kiểm soát quyền truy cập vào một biến bởi nhiều luồng.
D. Tạo ra một luồng mới.
11. Trong Java, đâu là một ví dụ về design pattern creational?
A. Singleton
B. Observer
C. Strategy
D. Template Method
12. Đâu là một lợi ích của việc sử dụng `encapsulation` trong lập trình hướng đối tượng Java?
A. Ẩn giấu dữ liệu và bảo vệ tính toàn vẹn của dữ liệu.
B. Tăng tính linh hoạt của code.
C. Giảm độ phức tạp của code.
D. Tất cả các đáp án trên.
13. Trong Java, annotation `@Override` được sử dụng để làm gì?
A. Chỉ ra rằng một phương thức ghi đè (override) một phương thức từ lớp cha.
B. Khai báo một biến là hằng số.
C. Chỉ định rằng một phương thức chỉ có thể được truy cập từ bên trong lớp.
D. Cho phép một phương thức được truy cập từ bất kỳ đâu.
14. Đâu là mục đích của từ khóa `synchronized` trong Java?
A. Kiểm soát quyền truy cập vào một đoạn code hoặc một đối tượng bởi nhiều luồng (threads).
B. Tạo ra một luồng mới.
C. Dừng một luồng đang chạy.
D. Xóa một luồng khỏi bộ nhớ.
15. Trong Java, sự khác biệt chính giữa `throw` và `throws` là gì?
A. `throw` dùng để ném một exception, `throws` dùng để khai báo một exception có thể được ném bởi một phương thức.
B. `throw` dùng để bắt một exception, `throws` dùng để ném một exception.
C. `throw` dùng để khai báo một lớp exception, `throws` dùng để tạo một đối tượng exception.
D. `throw` dùng để xử lý một exception, `throws` dùng để bỏ qua một exception.
16. Trong Java, cơ chế nào cho phép một lớp kế thừa nhiều interface?
A. Multiple inheritance.
B. Interface inheritance.
C. Class inheritance.
D. Delegation.
17. Trong Java, đâu là cách chính xác để tạo một instance của một inner class không static?
A. Sử dụng từ khóa `new` trực tiếp trên inner class.
B. Tạo một instance của outer class, sau đó sử dụng instance đó để tạo instance của inner class.
C. Inner class không static không thể được tạo instance.
D. Sử dụng phương thức static của outer class.
18. Trong Java, `static` variable được khởi tạo khi nào?
A. Khi một đối tượng của lớp được tạo ra.
B. Khi lớp được tải vào bộ nhớ.
C. Khi chương trình bắt đầu chạy.
D. Khi garbage collector chạy.
19. Đâu là cách khai báo một mảng các số nguyên trong Java?
A. int[] arr;
B. int arr[];
C. array of int arr;
D. Cả A và B đều đúng.
20. Trong Java, đâu là một ví dụ về functional interface?
A. Runnable
B. Iterable
C. Collection
D. List
21. Phương thức `main()` trong Java phải có signature như thế nào?
A. public static void main(String[] args)
B. static public void main(String[] args)
C. public void main(String[] args)
D. void main(String[] args)
22. Trong Java, exception `NullPointerException` thường xảy ra khi nào?
A. Khi truy cập một biến đối tượng có giá trị null.
B. Khi chia một số cho 0.
C. Khi cố gắng truy cập một phần tử không tồn tại trong mảng.
D. Khi một file không được tìm thấy.
23. Trong Java, Stream API được giới thiệu từ phiên bản nào?
A. Java 7
B. Java 8
C. Java 9
D. Java 10
24. Đâu là cách tốt nhất để so sánh hai chuỗi trong Java?
A. Sử dụng toán tử `==`.
B. Sử dụng phương thức `equals()`.
C. Sử dụng phương thức `compareTo()`.
D. Sử dụng phương thức `equalsIgnoreCase()`.
25. 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 final static.
C. Các phương thức trừu tượng và các biến final static.
D. Các phương thức trừu tượng, các biến final static và các phương thức default.
26. Trong Java, mục đích của garbage collection là gì?
A. Giải phóng bộ nhớ không còn được sử dụng bởi chương trình.
B. Tối ưu hóa hiệu suất của chương trình.
C. Ngăn chặn rò rỉ bộ nhớ.
D. Tất cả các đáp án trên.
27. Trong Java, sự khác biệt giữa `==` và phương thức `equals()` khi so sánh các đối tượng là gì?
A. `==` so sánh tham chiếu, `equals()` so sánh nội dung.
B. `==` so sánh nội dung, `equals()` so sánh tham chiếu.
C. Cả hai đều so sánh tham chiếu.
D. Cả hai đều so sánh nội dung.
28. Trong Java, đối tượng `String` là immutable. Điều này có nghĩa là gì?
A. Giá trị của một đối tượng `String` không thể thay đổi sau khi nó được tạo ra.
B. Đối tượng `String` không thể được kế thừa.
C. Đối tượng `String` không thể được so sánh với đối tượng khác.
D. Đối tượng `String` không thể được lưu trong bộ nhớ.
29. Trong Java, Collection nào sau đây đảm bảo các phần tử được sắp xếp theo thứ tự chèn?
A. HashSet
B. TreeSet
C. LinkedHashSet
D. PriorityQueue
30. Trong Java, phương thức `clone()` được sử dụng để làm gì?
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. Xóa một đối tượng khỏi bộ nhớ.
D. Giải phóng bộ nhớ của một đối tượng.