1. Trong Java, design pattern Singleton là gì?
A. Một pattern để tạo ra nhiều instance của một class.
B. Một pattern để đả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. Một pattern để tạo ra các đối tượng phức tạp.
D. Một pattern để quản lý bộ nhớ.
2. Trong Java, Collection interface dùng để làm gì?
A. Định nghĩa các phương thức để sắp xếp dữ liệu.
B. Định nghĩa các phương thức để lưu trữ và thao tác với một nhóm các đối tượng.
C. Định nghĩa các phương thức để tạo giao diện người dùng.
D. Định nghĩa các phương thức để thực hiện các phép toán số học.
3. Trong Java, interface khác với abstract class như thế nào?
A. Interface có thể có các phương thức đã được triển khai, abstract class thì không.
B. Một lớp có thể implements nhiều interface, nhưng chỉ có thể extends một abstract class.
C. Abstract class không thể có các biến instance, interface thì có thể.
D. Interface có thể kế thừa từ một class, abstract class thì không.
4. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật để giảm sự phụ thuộc giữa các lớp bằng cách cung cấp các phụ thuộc cho một đối tượng thay vì để đối tượng tự tạo chúng.
B. Một kỹ thuật để tăng sự phụ thuộc giữa các lớp.
C. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
D. Một kỹ thuật để mã hóa dữ liệu.
5. Trong Java, nguyên tắc SOLID là gì?
A. Một tập hợp các quy tắc về định dạng mã.
B. Một tập hợp các nguyên tắc thiết kế hướng đối tượng giúp tạo ra mã dễ bảo trì và mở rộng.
C. Một tập hợp các nguyên tắc về tối ưu hóa hiệu suất.
D. Một tập hợp các nguyên tắc về bảo mật.
6. Trong Java, JPA (Java Persistence API) là gì?
A. Một API để tạo giao diện người dùng.
B. Một API để thực hiện các phép toán số học.
C. Một API để truy cập và quản lý dữ liệu trong cơ sở dữ liệu quan hệ.
D. Một API để quản lý bộ nhớ.
7. Trong Java, `static` có nghĩa là gì?
A. Một biến hoặc phương thức chỉ có thể được truy cập từ bên trong lớp chứa nó.
B. 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. Một biến hoặc phương thức không thể bị thay đổi sau khi được khởi tạo.
D. Một biến hoặc phương thức chỉ có thể được gọi một lần.
8. Trong Java, lambda expression là gì?
A. Một cách để tạo các đối tượng ẩn danh.
B. Một cách để viết các hàm ẩn danh.
C. Một cách để khai báo các biến cục bộ.
D. Một cách để tạo các lớp con.
9. Từ khóa nào trong Java được sử dụng để tạo một thể hiện (instance) mới của một lớp?
A. class
B. extends
C. new
D. implements
10. Trong Java, Spring Framework là gì?
A. Một thư viện để tạo giao diện người dùng.
B. Một framework để phát triển các ứng dụng web.
C. Một framework toàn diện để phát triển các ứng dụng Java doanh nghiệp.
D. Một thư viện để thực hiện các phép toán số học.
11. Trong Java, mục đích của annotation là gì?
A. Để thêm bình luận vào mã nguồn.
B. Để cung cấp siêu dữ liệu về mã nguồn.
C. Để thực hiện các phép toán số học.
D. Để tạo giao diện người dùng.
12. 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 phép toán số học phức tạp.
C. Để xử lý dữ liệu tuần tự một cách hiệu quả.
D. Để quản lý bộ nhớ.
13. Kiểu dữ liệu nào sau đây trong Java được sử dụng để lưu trữ giá trị boolean (true hoặc false)?
A. int
B. float
C. boolean
D. String
14. Đâ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 giá trị của các đối tượng, `.equals()` so sánh tham chiếu.
B. `==` so sánh tham chiếu của các đối tượng, `.equals()` so sánh nội dung của các đối tượng.
C. `==` chỉ dùng để so sánh các kiểu dữ liệu nguyên thủy, `.equals()` dùng cho đối tượng.
D. Không có sự khác biệt, cả hai đều so sánh tham chiếu.
15. Phương thức nào sau đây được tự động gọi khi một đối tượng được tạo ra trong Java?
A. finalize()
B. toString()
C. Constructor
D. main()
16. 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. this
B. that
C. super
D. object
17. Trong Java, sự khác biệt giữa `ArrayList` và `LinkedList` là gì?
A. `ArrayList` sử dụng mảng động, `LinkedList` sử dụng danh sách liên kết đôi.
B. `ArrayList` là bất biến, `LinkedList` là khả biến.
C. `ArrayList` cho phép truy cập ngẫu nhiên các phần tử, `LinkedList` thì không.
D. Cả A và C.
18. 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. Đa hình (Polymorphism)
B. Kế thừa (Inheritance)
C. Đóng gói (Encapsulation)
D. Hướng thủ tục (Procedural)
19. Trong Java, exception nào xảy ra khi cố gắng truy cập một phần tử của mảng vượt quá kích thước của mảng?
A. NullPointerException
B. IOException
C. ArrayIndexOutOfBoundsException
D. ArithmeticException
20. Trong Java, mục đích của từ khóa `final` là gì?
A. Để khai báo một biến chỉ có thể được gán giá trị một lần.
B. Để khai báo một lớp không thể được kế thừa.
C. Để khai báo một phương thức không thể bị ghi đè.
D. Tất cả các đáp án trên.
21. Trong Java, luồng (thread) là gì?
A. Một chương trình độc lập có thể chạy trên hệ điều hành.
B. Một đường dẫn thực thi độc lập trong một chương trình.
C. Một loại biến đặc biệt được sử dụng để lưu trữ dữ liệu đa luồng.
D. Một kỹ thuật để nén dữ liệu.
22. 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. Quá trình mã hóa dữ liệu.
D. Quá trình giải mã dữ liệu.
23. Trong Java, mục đích chính 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 các lỗi tràn bộ nhớ.
D. Quản lý các tài nguyên hệ thống khác ngoài bộ nhớ.
24. 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)
25. Phương thức `toString()` trong Java được sử dụng để làm gì?
A. So sánh hai đối tượng.
B. Chuyển đổi một đối tượng thành một chuỗi.
C. Tạo một bản sao của đối tượng.
D. Kiểm tra xem một đối tượng có phải là null hay không.