1. Trong lập trình Java, từ khóa nào được sử dụng để khai báo một biến hằng số?
A. static
B. final
C. const
D. immutable
2. Phương thức `equals()` trong Java được sử dụng để so sánh cái gì giữa hai đối tượng?
A. Địa chỉ bộ nhớ của đối tượng
B. Tham chiếu đối tượng
C. Giá trị nội dung của đối tượng
D. Kiểu dữ liệu của đối tượng
3. Đâu là một đặc điểm của lập trình hướng đối tượng (OOP) trong Java?
A. Sử dụng con trỏ trực tiếp đến bộ nhớ
B. Tính đóng gói (Encapsulation)
C. Chương trình tuyến tính tuần tự
D. Hạn chế sử dụng lớp và đối tượng
4. Interface trong Java được sử dụng để làm gì?
A. Tạo ra các đối tượng cụ thể
B. Định nghĩa một hợp đồng mà các lớp phải tuân theo
C. Thay thế cho lớp trừu tượng
D. Quản lý bộ nhớ tự động
5. Trong Java, exception `NullPointerException` thường xảy ra khi nào?
A. Truy cập một biến cục bộ chưa được khởi tạo
B. Gọi phương thức hoặc truy cập thuộc tính của một đối tượng null
C. Chuyển đổi kiểu dữ liệu không hợp lệ
D. Vượt quá giới hạn bộ nhớ
6. Vòng lặp `for-each` (enhanced for loop) trong Java chủ yếu được sử dụng để duyệt qua cấu trúc dữ liệu nào?
A. Kiểu dữ liệu nguyên thủy
B. Mảng và Collections
C. Con trỏ
D. File hệ thống
7. Phương thức `toString()` trong Java có mục đích chính là gì?
A. So sánh hai đối tượng
B. Chuyển đổi một đối tượng thành chuỗi đại diện
C. Tính toán giá trị hash code của đối tượng
D. Giải phóng bộ nhớ của đối tượng
8. Trong Java, từ khóa `static` có ý nghĩa gì khi được sử dụng cho một biến thành viên của lớp?
A. Biến chỉ có thể truy cập từ bên trong lớp
B. Biến được chia sẻ bởi tất cả các đối tượng 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 khởi tạo một lần duy nhất
9. Đâu là cách khai báo một mảng các số nguyên trong Java?
A. int array[];
B. array int[];
C. int[] array;
D. array[] int;
10. Phương thức `main()` trong Java có vai trò gì?
A. Phương thức khởi tạo của lớp
B. Điểm bắt đầu thực thi của chương trình Java
C. Phương thức hủy đối tượng
D. Phương thức để nhập dữ liệu từ bàn phím
11. Trong Java, `inheritance` (tính kế thừa) cho phép lớp con (subclass) làm gì?
A. Truy cập các biến private của lớp cha
B. Kế thừa các thuộc tính và phương thức của lớp cha
C. Tạo ra nhiều đối tượng của lớp cha
D. Thay đổi cấu trúc của lớp cha
12. Đâu là một ví dụ về `checked exception` trong Java?
A. ArrayIndexOutOfBoundsException
B. NullPointerException
C. FileNotFoundException
D. IllegalArgumentException
13. Trong Java, `đa hình` (polymorphism) thể hiện rõ nhất qua cơ chế nào?
A. Tính đóng gói (Encapsulation)
B. Tính kế thừa (Inheritance)
C. Overloading và Overriding
D. Garbage Collection
14. ArrayList và LinkedList khác nhau chủ yếu ở khía cạnh nào?
A. Kiểu dữ liệu lưu trữ
B. Cấu trúc dữ liệu bên trong và hiệu suất truy cập/thêm/xóa phần tử
C. Khả năng đồng bộ hóa
D. Cách thức quản lý bộ nhớ
15. Trong Java, `garbage collection` (thu gom rác) là quá trình gì?
A. Giải phóng bộ nhớ đã được cấp phát nhưng không còn sử dụng
B. Kiểm tra và sửa lỗi cú pháp trong code
C. Tối ưu hóa hiệu suất chương trình
D. Quản lý các thread trong chương trình đa luồng
16. Đâu là cách tạo một đối tượng String bất biến trong Java?
A. Sử dụng từ khóa `mutable String`
B. String đã là kiểu dữ liệu bất biến trong Java
C. Sử dụng lớp `StringBuilder`
D. Khai báo String với từ khóa `const`
17. Trong lập trình đa luồng Java, từ khóa `synchronized` được sử dụng để làm gì?
A. Tạo ra một thread mới
B. Đồng bộ hóa truy cập vào một đoạn code hoặc đối tượng
C. Tạm dừng thực thi thread hiện tại
D. Kết thúc một thread
18. Annotation `@Override` trong Java dùng để chỉ ra điều gì?
A. Một phương thức là abstract
B. Một phương thức đang được ghi đè từ lớp cha
C. Một biến là static
D. Một lớp là final
19. Trong Java, 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
C. Phát triển ứng dụng web server
D. Quản lý bộ nhớ trong Java
20. Giả sử bạn có một lớp `Dog` kế thừa từ lớp `Animal`. Để gọi constructor của lớp `Animal` từ constructor của lớp `Dog`, bạn sử dụng từ khóa nào?
A. this()
B. super()
C. parent()
D. base()
21. Trong Java, Stream API được giới thiệu từ phiên bản Java nào?
A. Java 5
B. Java 6
C. Java 7
D. Java 8
22. Lambda expression trong Java là gì?
A. Một kiểu dữ liệu mới
B. Một cách viết ngắn gọn cho anonymous inner class (lớp nặc danh)
C. Một cơ chế quản lý bộ nhớ
D. Một loại exception mới
23. Phương thức `hashCode()` trong Java thường được ghi đè cùng với phương thức nào để đảm bảo tính nhất quán?
A. toString()
B. equals()
C. getClass()
D. finalize()
24. Trong Java, package được sử dụng để làm gì?
A. Tăng tốc độ biên dịch code
B. Nhóm các lớp và interface có liên quan lại với nhau, giúp quản lý và tránh xung đột tên
C. Tối ưu hóa bộ nhớ sử dụng
D. Mã hóa code nguồn
25. Đâu là một ví dụ về `design pattern` (mẫu thiết kế) phổ biến trong lập trình Java?
A. Bubble Sort
B. Singleton
C. Binary Search
D. Linear Regression
26. Trong Java, Serializable interface được sử dụng để làm gì?
A. Xác thực người dùng
B. Cho phép đối tượng được chuyển đổi thành luồng byte (serialization) và ngược lại (deserialization)
C. Tạo ra giao diện người dùng
D. Quản lý kết nối cơ sở dữ liệu
27. Giả sử bạn có đoạn code sau: `int x = 5; int y = x++;` Giá trị của `y` và `x` sau khi đoạn code này thực thi là bao nhiêu?
A. x = 6, y = 6
B. x = 5, y = 5
C. x = 6, y = 5
D. x = 5, y = 6
28. Trong Java, thuật ngữ `boxing` và `unboxing` liên quan đến kiểu dữ liệu nào?
A. Kiểu dữ liệu nguyên thủy và kiểu tham chiếu tương ứng (wrapper classes)
B. Kiểu dữ liệu mảng
C. Kiểu dữ liệu String
D. Kiểu dữ liệu enum
29. ClassLoader trong Java có vai trò gì?
A. Biên dịch code Java
B. Tải các lớp Java vào JVM tại thời điểm runtime
C. Tối ưu hóa hiệu suất code
D. Quản lý garbage collection
30. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật quản lý bộ nhớ
B. Một design pattern giúp giảm sự phụ thuộc giữa các thành phần của ứng dụng
C. Một phương pháp kiểm thử phần mềm
D. Một loại framework để phát triển giao diện người dùng