1. Đâu là điểm khác biệt giữa checked exception và unchecked exception trong Java?
A. Checked exception nhanh hơn unchecked exception
B. Checked exception phải được xử lý (try-catch hoặc throws) tại thời điểm biên dịch, unchecked exception thì không
C. Unchecked exception xảy ra do lỗi lập trình, checked exception do lỗi hệ thống
D. Không có sự khác biệt lớn, chỉ là tên gọi khác nhau
2. Đâu là cách khai báo hằng số (constant) trong Java?
A. const int MAX_VALUE = 100;
B. final static int MAX_VALUE = 100;
C. static final int MAX_VALUE = 100;
D. immutable int MAX_VALUE = 100;
3. Annotation (chú thích) trong Java được sử dụng để làm gì?
A. Thay thế cho comment trong code
B. Cung cấp siêu dữ liệu (metadata) về code cho compiler, JVM hoặc các công cụ khác
C. Để ghi lại nhật ký hoạt động của chương trình
D. Để tạo ra tài liệu API tự động
4. 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) cho ứng dụng Java
B. Kết nối và tương tác với cơ sở dữ liệu từ ứng dụng Java
C. Quản lý bộ nhớ trong ứng dụng Java
D. Xử lý các yêu cầu HTTP trong ứng dụng web Java
5. Trong Java, từ khóa nào được sử dụng để tạo một lớp con kế thừa từ một lớp cha?
A. implements
B. extends
C. inherits
D. subclass
6. Phương thức `hashCode()` và `equals()` có mối quan hệ như thế nào trong Java khi làm việc với các cấu trúc dữ liệu như `HashMap` và `HashSet`?
A. Không có mối quan hệ, chúng độc lập
B. Nếu `equals()` trả về true cho hai đối tượng, thì `hashCode()` của chúng phải khác nhau
C. Nếu `equals()` trả về true cho hai đối tượng, thì `hashCode()` của chúng phải giống nhau
D. Nếu `hashCode()` của hai đối tượng giống nhau, thì `equals()` của chúng phải trả về true
7. Lambda expression trong Java 8 là gì?
A. Một loại biến mới
B. Một cách viết ngắn gọn hơn cho anonymous inner classes (lớp nội danh)
C. Một cơ chế xử lý ngoại lệ mới
D. Một cách tạo ra đa luồng dễ dàng hơn
8. JSP (JavaServer Pages) khác Servlet như thế nào trong phát triển web Java?
A. JSP nhanh hơn Servlet
B. Servlet được sử dụng cho logic hiển thị, JSP cho logic nghiệp vụ
C. Servlet là code Java thuần túy, JSP cho phép nhúng code Java vào HTML để tạo trang web động
D. Không có sự khác biệt, JSP và Servlet có thể thay thế nhau hoàn toàn
9. Lớp `Scanner` trong Java thuộc gói (package) nào?
A. java.lang
B. java.util
C. java.io
D. java.net
10. Phương thức `main()` trong Java có kiểu trả về nào?
A. int
B. String
C. void
D. boolean
11. Garbage Collection (GC) trong Java hoạt động như thế nào?
A. GC là quá trình giải phóng bộ nhớ được quản lý thủ công bởi lập trình viên
B. GC là quá trình tự động thu hồi bộ nhớ không còn được sử dụng bởi chương trình Java
C. GC chỉ hoạt động khi bộ nhớ đầy
D. GC là một phần của compiler Java, không phải JVM
12. Giao diện `List`, `Set`, và `Map` thuộc Java Collections Framework có điểm chung nào?
A. Tất cả đều là giao diện sắp xếp dữ liệu theo thứ tự
B. Tất cả đều là giao diện lưu trữ các cặp key-value
C. Tất cả đều là giao diện con của `Collection` interface (ngoại trừ Map)
D. Tất cả đều là lớp cụ thể có thể khởi tạo trực tiếp
13. Serialization trong Java là gì?
A. Quá trình chuyển đổi dữ liệu thành định dạng có thể đọc được
B. Quá trình chuyển đổi đối tượng thành một luồng byte để lưu trữ hoặc truyền tải
C. Quá trình mã hóa dữ liệu để bảo mật
D. Quá trình tạo bản sao của đối tượng
14. Tính đóng gói (encapsulation) trong lập trình hướng đối tượng Java là gì?
A. Khả năng một đối tượng thuộc nhiều lớp khác nhau
B. Cơ chế ẩn giấu thông tin và triển khai chi tiết bên trong đối tượng, chỉ cho phép truy cập thông qua các phương thức công khai
C. Khả năng tái sử dụng mã nguồn thông qua kế thừa
D. Cơ chế tạo ra nhiều đối tượng từ một lớp
15. Java Streams API được thiết kế để làm gì?
A. Xử lý dữ liệu đầu vào/đầu ra (I/O)
B. Thao tác và xử lý dữ liệu tập hợp (collections) một cách hiệu quả và khai báo
C. Quản lý bộ nhớ và thu gom rác
D. Xây dựng giao diện người dùng đồ họa (GUI)
16. Servlet trong Java EE được sử dụng để làm gì?
A. Xử lý logic nghiệp vụ của ứng dụng
B. Xây dựng giao diện người dùng web
C. Xử lý các yêu cầu HTTP từ client và trả về phản hồi trong ứng dụng web Java
D. Quản lý phiên người dùng trong ứng dụng web
17. Reflection trong Java là gì?
A. Quá trình biên dịch mã Java thành bytecode
B. Khả năng kiểm tra và thao tác lớp, interface, constructor, method và field của một lớp tại thời gian chạy
C. Cơ chế xử lý ngoại lệ nâng cao
D. Kỹ thuật tối ưu hóa hiệu suất chương trình
18. Đâu là sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java?
A. `ArrayList` nhanh hơn trong việc thêm/xóa phần tử ở đầu danh sách, `LinkedList` nhanh hơn trong việc truy cập phần tử ngẫu nhiên
B. `ArrayList` dựa trên mảng động, `LinkedList` dựa trên cấu trúc dữ liệu danh sách liên kết đôi
C. `ArrayList` có thể chứa các phần tử null, `LinkedList` thì không
D. Không có sự khác biệt về cấu trúc dữ liệu, chỉ khác nhau về hiệu suất
19. Bộ nhớ Heap và Stack trong Java Virtual Machine (JVM) được sử dụng cho mục đích gì?
A. Heap cho biến cục bộ, Stack cho đối tượng
B. Heap cho đối tượng và biến instance, Stack cho biến cục bộ và lời gọi phương thức
C. Heap cho mã byte code, Stack cho dữ liệu
D. Heap cho dữ liệu tĩnh, Stack cho dữ liệu động
20. Dependency Injection (DI) là gì và lợi ích của nó trong phát triển ứng dụng Java?
A. Một pattern thiết kế để tạo ra các đối tượng singleton
B. Một kỹ thuật để giảm sự phụ thuộc giữa các thành phần phần mềm bằng cách 'inject' các dependencies vào đối tượng thay vì để đối tượng tự tạo hoặc tìm kiếm chúng
C. Một phương pháp để tăng cường bảo mật ứng dụng
D. Một cách để quản lý bộ nhớ hiệu quả hơn
21. Đâu là mục đích của từ khóa `static` trong Java?
A. Để tạo ra các biến và phương thức có thể truy cập từ bất kỳ đâu
B. Để khai báo một lớp không thể kế thừa
C. Để tạo ra các biến và phương thức thuộc về lớp chứ không phải đối tượng của lớp
D. Để chỉ định rằng một phương thức có thể bị ghi đè bởi lớp con
22. Vòng đời (lifecycle) của một luồng (thread) trong Java bao gồm những trạng thái nào?
A. New, Runnable, Running, Blocked/Waiting, Terminated
B. Start, Active, Inactive, Dead
C. Created, Ready, Executing, Sleeping, Finished
D. Born, Alive, Waiting, Sleeping, Destroyed
23. JVM (Java Virtual Machine) có trách nhiệm chính nào?
A. Biên dịch mã nguồn Java thành mã máy
B. Chạy bytecode Java, quản lý bộ nhớ (garbage collection) và cung cấp môi trường thực thi độc lập nền tảng
C. Quản lý các kết nối mạng trong ứng dụng Java
D. Tối ưu hóa mã nguồn Java trước khi biên dịch
24. Trong Java, cơ chế xử lý ngoại lệ (exception handling) nào được sử dụng?
A. try-catch-finally
B. if-else-throw
C. for-while-except
D. switch-case-error
25. Đâu là sự khác biệt chính giữa `String` và `StringBuilder` trong Java?
A. `String` là mutable, `StringBuilder` là immutable
B. `String` nhanh hơn `StringBuilder` trong thao tác chuỗi
C. `String` là immutable, `StringBuilder` là mutable
D. Không có sự khác biệt, chúng có thể thay thế nhau
26. 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 trong Java?
A. `equals()` so sánh tham chiếu, `==` so sánh giá trị
B. Cả hai đều so sánh tham chiếu đối tượng
C. `==` so sánh tham chiếu, `equals()` so sánh nội dung đối tượng
D. Cả hai đều so sánh nội dung đối tượng
27. Polymorphism (tính đa hình) trong OOP Java có nghĩa là gì?
A. Khả năng tạo ra các lớp mới từ các lớp đã có
B. Khả năng một đối tượng có nhiều trạng thái
C. Khả năng một đối tượng hoặc phương thức có nhiều hình thức khác nhau
D. Khả năng ẩn giấu thông tin bên trong đối tượng
28. Giao diện (interface) trong Java là gì?
A. Một lớp đặc biệt chỉ chứa các biến static
B. Một lớp trừu tượng không có phương thức nào
C. Một bản thiết kế (blueprint) cho các lớp, định nghĩa các phương thức mà các lớp phải triển khai
D. Một lớp cuối cùng không thể kế thừa
29. Phương thức `finalize()` trong Java được sử dụng để làm gì?
A. Giải phóng bộ nhớ của đối tượng ngay lập tức
B. Thực hiện các công việc dọn dẹp cuối cùng trước khi đối tượng bị thu gom rác (garbage collected)
C. Khởi tạo các biến instance của đối tượng
D. Kiểm tra xem đối tượng có còn được tham chiếu hay không
30. Java Generics giải quyết vấn đề chính nào?
A. Tăng tốc độ thực thi chương trình
B. Giảm thiểu lỗi ép kiểu (ClassCastException) tại thời gian chạy bằng cách kiểm tra kiểu tại thời gian biên dịch
C. Cải thiện khả năng bảo mật của ứng dụng
D. Đơn giản hóa cú pháp Java