1. Trong Java, từ khóa nào được sử dụng để tạo một thể hiện (instance) của một lớp (class)?
A. class
B. new
C. instanceof
D. extends
2. Phương thức `main` trong Java có kiểu trả về là gì?
A. int
B. String
C. void
D. boolean
3. Đâu là cách khai báo một biến hằng số (constant) trong Java?
A. const int NUMBER = 10;
B. final int NUMBER = 10;
C. static int NUMBER = 10;
D. immutable int NUMBER = 10;
4. Trong lập trình hướng đối tượng Java, tính chất nào cho phép một lớp con (subclass) kế thừa các thuộc tính và phương thức từ lớp cha (superclass)?
A. Đóng gói (Encapsulation)
B. Đa hình (Polymorphism)
C. Kế thừa (Inheritance)
D. Trừu tượng (Abstraction)
5. 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
6. Vòng lặp `for-each` trong Java thường được sử dụng để làm gì?
A. Lặp vô hạn
B. Lặp qua các phần tử của một mảng hoặc Collection
C. Lặp cho đến khi một điều kiện sai
D. Lặp với một số lần cố định dựa trên điều kiện phức tạp
7. Phương thức `equals()` và toán tử `==` khác nhau như thế nào khi so sánh các đối tượng String trong Java?
A. `equals()` so sánh tham chiếu đối tượng, `==` so sánh giá trị chuỗi
B. `equals()` so sánh giá trị chuỗi, `==` so sánh tham chiếu đối tượng
C. Cả hai đều so sánh giá trị chuỗi
D. Cả hai đều so sánh tham chiếu đối tượng
8. Trong Java, `NullPointerException` xảy ra khi nào?
A. Chia cho số 0
B. Truy cập một biến đối tượng chưa được khởi tạo (null)
C. Chuyển đổi kiểu dữ liệu không hợp lệ
D. Vượt quá giới hạn của mảng
9. Interface trong Java được sử dụng để làm gì?
A. Tạo ra các đối tượng
B. Định nghĩa một hợp đồng mà các lớp có thể thực hiện (implement)
C. Kế thừa từ nhiều lớp khác
D. Thay thế cho lớp trừu tượng (abstract class)
10. Phương thức `toString()` trong Java có mục đích chính là gì?
A. Chuyển đổi một đối tượng thành kiểu dữ liệu String
B. So sánh hai đối tượng String
C. Trả về kiểu dữ liệu của đối tượng
D. Kiểm tra xem một đối tượng có phải là String hay không
11. Trong Java, từ khóa `static` có ý nghĩa gì khi được sử dụng cho một biến thành viên (member variable)?
A. Biến chỉ có thể truy cập từ lớp hiện tại
B. Biến thuộc về lớp chứ không phải bất kỳ thể hiện cụ thể nào của lớp
C. Biến không thể thay đổi giá trị sau khi khởi tạo
D. Biến chỉ có thể được truy cập trong cùng một gói (package)
12. Exception handling (xử lý ngoại lệ) trong Java được thực hiện chủ yếu bằng các khối lệnh nào?
A. if-else
B. for và while
C. try-catch-finally
D. switch-case
13. Phương thức `substring(int beginIndex, int endIndex)` của lớp String trong Java trả về chuỗi con (substring) như thế nào?
A. Từ `beginIndex` đến `endIndex` (bao gồm cả hai)
B. Từ `beginIndex` đến `endIndex` (không bao gồm cả hai)
C. Từ `beginIndex` đến `endIndex - 1` (bao gồm `beginIndex`, không bao gồm `endIndex`)
D. Từ `beginIndex + 1` đến `endIndex` (không bao gồm `beginIndex`, bao gồm `endIndex`)
14. Trong Java, garbage collection (thu gom rác) là quá trình gì?
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 cho các đối tượng không còn được tham chiếu đến
C. Kiểm tra và sửa lỗi cú pháp trong mã nguồn
D. Quản lý các kết nối cơ sở dữ liệu
15. Annotation (chú thích) trong Java được sử dụng để làm gì?
A. Thay thế cho comment (chú thích dòng lệnh)
B. Cung cấp metadata (dữ liệu về dữ liệu) cho trình biên dịch và JVM
C. Tăng tốc độ thực thi chương trình
D. Mã hóa mã nguồn
16. JDBC (Java Database Connectivity) được sử dụng để làm gì?
A. Xây dựng giao diện người dùng đồ họa (GUI)
B. Kết nối và tương tác với cơ sở dữ liệu từ ứng dụng Java
C. Phát triển ứng dụng web phía máy chủ
D. Quản lý bộ nhớ trong Java
17. Trong Java, `boxing` và `unboxing` liên quan đến kiểu dữ liệu nào?
A. String và char
B. Các kiểu dữ liệu nguyên thủy (primitive) và lớp wrapper tương ứng
C. Mảng và Collection
D. Lớp và interface
18. Lambda expression (biểu thức lambda) trong Java 8 được sử dụng chủ yếu để làm gì?
A. Định nghĩa lớp ẩn danh (anonymous class) một cách ngắn gọn
B. Tăng cường hiệu suất vòng lặp
C. Xử lý ngoại lệ hiệu quả hơn
D. Thay thế cho interface
19. Stream API trong Java 8 được thiết kế để làm gì?
A. Xử lý dữ liệu tuần tự (sequential) hiệu quả hơn
B. Thực hiện các thao tác xử lý dữ liệu kiểu hàm (functional) trên các Collection
C. Quản lý bộ nhớ tốt hơn
D. Tạo giao diện người dùng đồ họa (GUI)
20. Trong lập trình đa luồng (multithreading) Java, từ khóa `synchronized` được sử dụng để làm gì?
A. Tạo một luồng mới
B. Đồng bộ hóa việc truy cập vào tài nguyên dùng chung giữa các luồng
C. Dừng một luồng đang chạy
D. Ưu tiên một luồng cụ thể
21. Giả sử bạn có một lớp `Dog` kế thừa từ lớp `Animal`. Để ép kiểu một đối tượng `Animal` thành `Dog`, bạn sử dụng cách nào?
A. `Animal a = (Animal) new Dog();`
B. `Dog d = (Dog) new Animal();`
C. `Dog d = Dog.parseAnimal(new Animal());`
D. `Animal a = new Dog() as Animal;`
22. Trong Java, Collection Framework cung cấp các interface và lớp để làm gì?
A. Xử lý đồ họa
B. Lưu trữ và thao tác với các nhóm đối tượng
C. Kết nối mạng
D. Xử lý cơ sở dữ liệu
23. Phương thức `finalize()` trong Java có mục đích sử dụng chính là gì?
A. Khởi tạo đối tượng
B. Giải phóng tài nguyên trước khi đối tượng bị garbage collected
C. Sao chép đối tượng
D. So sánh hai đối tượng
24. Để đọc dữ liệu từ một file văn bản trong Java, bạn thường sử dụng lớp nào?
A. FileWriter
B. PrintWriter
C. FileReader hoặc BufferedReader
D. FileOutputStream
25. Trong Java, serialization (tuần tự hóa) là quá trình gì?
A. Mã hóa dữ liệu
B. Chuyển đổi một đối tượng thành một chuỗi byte để lưu trữ hoặc truyền tải
C. Giải mã dữ liệu
D. Nén dữ liệu
26. Giả sử bạn có một ứng dụng Java cần xử lý nhiều tác vụ đồng thời, mỗi tác vụ mất một khoảng thời gian đáng kể để hoàn thành. Giải pháp tốt nhất để cải thiện hiệu suất là gì?
A. Tăng tốc độ CPU
B. Sử dụng lập trình đa luồng (multithreading)
C. Tối ưu hóa thuật toán
D. Giảm dung lượng bộ nhớ sử dụng
27. Trong Java, Dependency Injection (DI - Tiêm phụ thuộc) là một design pattern (mẫu thiết kế) giúp làm gì?
A. Tăng cường bảo mật ứng dụng
B. Giảm sự phụ thuộc giữa các thành phần của ứng dụng
C. Tối ưu hóa hiệu suất bộ nhớ
D. Đơn giản hóa việc triển khai giao diện người dùng
28. Spring Framework là gì trong hệ sinh thái Java?
A. Một thư viện để xây dựng giao diện người dùng đồ họa
B. Một framework ứng dụng toàn diện để phát triển ứng dụng Java doanh nghiệp
C. Một công cụ biên dịch mã Java
D. Một hệ quản trị cơ sở dữ liệu NoSQL
29. Giả sử bạn cần tạo một lớp (class) mà không thể khởi tạo trực tiếp đối tượng từ nó, mà chỉ có thể được kế thừa bởi các lớp con. Bạn nên sử dụng loại lớp nào?
A. Lớp final
B. Lớp static
C. Lớp trừu tượng (abstract class)
D. Lớp interface
30. Trong Java, thuật ngữ `JAR file` dùng để chỉ loại file nào?
A. File chứa mã nguồn Java
B. File lưu trữ các lớp Java đã biên dịch, tài nguyên và metadata của ứng dụng Java
C. File cấu hình ứng dụng Java
D. File dữ liệu cơ sở dữ liệu Java