1. Phương thức nào sau đây được gọi tự động khi một đối tượng Java được tạo ra?
A. finalize()
B. create()
C. start()
D. Constructor
2. Trong Java, 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)?
A. int
B. boolean
C. String
D. float
3. Trong Java, mục đích của Optional là gì?
A. Để thay thế cho việc sử dụng `null` và tránh `NullPointerException`.
B. Để tạo ra các đối tượng không thể thay đổi.
C. Để tăng hiệu suất của chương trình.
D. Để tạo ra các đối tượng có thể so sánh được với nhau.
4. 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. Đa hình (Polymorphism)
C. Kế thừa (Inheritance)
D. Trừu tượng (Abstraction)
5. Trong Java, luồng (stream) là gì?
A. Một kênh giao tiếp giữa hai chương trình.
B. Một chuỗi các ký tự được in ra màn hình.
C. Một chuỗi các phần tử có thể được xử lý theo kiểu hàm (functional).
D. Một loại bộ nhớ đặc biệt để lưu trữ dữ liệu tạm thời.
6. Trong Java, interface `Comparable` được sử dụng để làm gì?
A. Để tạo ra các đối tượng có thể so sánh được với nhau.
B. Để tạo ra các đối tượng không thể thay đổi.
C. Để tạo ra các đối tượng có thể lặp qua được.
D. Để tạo ra các đối tượng có thể được serialized.
7. Trong Java, mục đích của Dependency Injection (DI) là gì?
A. Để giảm sự phụ thuộc giữa các lớp, làm cho mã dễ kiểm tra và bảo trì hơn.
B. Để tăng sự phụ thuộc giữa các lớp, làm cho mã phức tạp hơn.
C. Để tạo ra các đối tượng không thể thay đổi.
D. Để tăng hiệu suất của chương trình.
8. Trong Java, 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. object
B. this
C. current
D. self
9. Trong Java, phát biểu nào sau đây về garbage collection là đúng?
A. Garbage collection là một quá trình thủ công, cần được gọi bởi lập trình viên.
B. Garbage collection tự động giải phóng bộ nhớ không còn được sử dụng bởi chương trình.
C. Garbage collection chỉ hoạt động khi chương trình kết thúc.
D. Garbage collection không tồn tại trong Java.
10. Trong Java, JUnit là gì?
A. Một framework để viết unit test.
B. Một công cụ để quản lý dependencies.
C. Một công cụ để build project.
D. Một công cụ để debug code.
11. Trong Java, sự khác biệt chính giữa `ArrayList` và `LinkedList` là gì?
A. `ArrayList` sử dụng mảng động, trong khi `LinkedList` sử dụng danh sách liên kết.
B. `ArrayList` cho phép truy cập ngẫu nhiên nhanh hơn, trong khi `LinkedList` cho phép chèn và xóa phần tử nhanh hơn ở giữa danh sách.
C. Cả hai đáp án trên.
D. Không có sự khác biệt, chúng có thể thay thế cho nhau trong mọi trường hợp.
12. Trong Java, mục đích của Design Pattern là gì?
A. Để cung cấp các giải pháp đã được kiểm chứng cho các vấn đề thiết kế phần mềm thường gặp.
B. Để tăng tốc độ viết code.
C. Để làm cho code khó đọc hơn.
D. Để tạo ra các đối tượng không thể thay đổi.
13. 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ó tham chiếu đến cùng một vùng nhớ hay không.
B. Gán giá trị của một đối tượng cho một đối tượng khác.
C. So sánh nội dung của hai đối tượng để xem chúng có bằng nhau hay không.
D. Kiểm tra xem một đối tượng có phải là một thể hiện của một lớp cụ thể hay không.
14. 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. Để ngăn chặn việc một phương thức bị ghi đè bởi một lớp con.
C. Để điều khiển truy cập đồng thời đến một đoạn mã hoặc một đối tượng.
D. Để chỉ ra rằng một biến là hằng số.
15. Đâu là cách khai báo đúng một mảng các số nguyên trong Java?
A. int array[];
B. array int[];
C. int[] array;
D. array[] int;
16. Trong Java, annotation nào được sử dụng để báo cho compiler rằng một phương thức ghi đè (override) một phương thức từ lớp cha?
A. @Override
B. @OverrideMethod
C. @Overwrites
D. @Inherit
17. Trong Java, mục đích chính của từ khóa `static` là gì?
A. Để tạo ra các đối tượng không thể thay đổi.
B. Để khai báo các biến hoặc phương thức thuộc về lớp chứ không phải đối tượng.
C. Để chỉ ra rằng một lớp không thể được kế thừa.
D. Để tạo ra các biến cục bộ trong một phương thức.
18. Trong Java, đặc điểm nào sau đây KHÔNG phải là của một interface?
A. Có thể chứa các phương thức trừu tượng (abstract methods).
B. Các biến thành viên (member variables) phải là `final` và `static`.
C. Có thể có các phương thức `default` hoặc `static`.
D. Có thể khởi tạo trực tiếp đối tượng từ interface.
19. Trong Java, exception nào sau đây xảy ra khi cố gắng truy cập một phần tử của mảng bằng một chỉ số (index) không hợp lệ?
A. NullPointerException
B. IOException
C. ArrayIndexOutOfBoundsException
D. ClassNotFoundException
20. Trong Java, phát biểu nào sau đây về Serialization là đúng?
A. Serialization là quá trình chuyển đổi một đối tượng thành một chuỗi byte để có thể lưu trữ hoặc truyền tải.
B. Serialization là quá trình chuyển đổi một chuỗi byte thành một đối tượng.
C. Serialization là quá trình tạo ra một bản sao của một đối tượng.
D. Serialization là quá trình giải phóng bộ nhớ của một đối tượng.
21. Trong Java, sự khác biệt giữa `throw` và `throws` là gì?
A. `throw` dùng để ném một exception, còn `throws` dùng để khai báo một phương thức có thể ném exception.
B. `throw` dùng để khai báo một phương thức có thể ném exception, còn `throws` dùng để ném một exception.
C. Cả hai đều dùng để ném exception.
D. Cả hai đều dùng để khai báo một phương thức có thể ném exception.
22. Trong Java, hãy chọn phát biểu đúng về tính bất biến (immutability) của String.
A. String là bất biến, nghĩa là một khi một đối tượng String được tạo ra, giá trị của nó không thể thay đổi.
B. String là bất biến, nghĩa là một khi một đối tượng String được tạo ra, giá trị của nó có thể thay đổi.
C. String là bất biến, nghĩa là nó không thể được kế thừa.
D. String là bất biến, nghĩa là nó không thể được so sánh.
23. Trong Java, phát biểu nào sau đây về Lambda Expression là đúng?
A. Lambda Expression là một cách viết ngắn gọn cho một anonymous class chỉ có một phương thức.
B. Lambda Expression chỉ có thể được sử dụng với các interface có một phương thức trừu tượng (functional interface).
C. Cả hai đáp án trên.
D. Lambda Expression là một cách viết ngắn gọn cho một class thông thường.
24. Từ khóa nào sau đây được sử dụng để khai báo một hằng số trong Java?
A. static
B. const
C. final
D. immutable
25. Trong Java, JDBC là gì?
A. Một API cho phép Java tương tác với cơ sở dữ liệu.
B. Một framework để phát triển web.
C. Một công cụ để quản lý bộ nhớ.
D. Một ngôn ngữ lập trình.