1. 'Checked exception' và 'Unchecked exception' khác nhau như thế nào trong Java?
A. Checked exception xảy ra khi biên dịch, Unchecked exception xảy ra khi chạy.
B. Checked exception phải được xử lý hoặc khai báo trong mệnh đề 'throws', Unchecked exception thì không bắt buộc.
C. Checked exception là lỗi do lập trình viên, Unchecked exception là lỗi hệ thống.
D. Checked exception có thể phục hồi, Unchecked exception thì không.
2. Trong Java, 'lambda expression' là gì và nó được sử dụng chủ yếu cho mục đích nào?
A. Một cách khai báo biến mới.
B. Một cách biểu diễn ngắn gọn cho một phương thức vô danh (anonymous method), thường được sử dụng với functional interfaces.
C. Một loại vòng lặp mới.
D. Một cơ chế xử lý ngoại lệ mới.
3. 'Thread' trong Java được sử dụng để làm gì?
A. Tạo giao diện người dùng đồ họa.
B. Thực hiện đa nhiệm (concurrency), cho phép thực thi đồng thời nhiều phần của chương trình.
C. Quản lý bộ nhớ.
D. Xử lý ngoại lệ.
4. Annotation trong Java được sử dụng để làm gì?
A. Thực hiện các phép toán số học.
B. Cung cấp metadata (siêu dữ liệu) về mã nguồn chương trình, có thể được sử dụng bởi trình biên dịch, JVM hoặc các công cụ khác.
C. Tạo giao diện người dùng.
D. Quản lý bộ nhớ.
5. Trong Java, 'package' được sử dụng để làm gì?
A. Tăng tốc độ biên dịch chương trình.
B. Nhóm các lớp và interface có liên quan lại với nhau, giúp quản lý và tổ chức mã nguồn, tránh xung đột tên.
C. Mã hóa mã nguồn chương trình.
D. Tối ưu hóa bộ nhớ sử dụng.
6. 'Serialization' trong Java là quá trình gì?
A. Chuyển đổi mã nguồn Java thành bytecode.
B. Chuyển đổi trạng thái của một đối tượng thành một luồng byte để lưu trữ hoặc truyền tải qua mạng.
C. Mã hóa dữ liệu để bảo mật.
D. Giải nén dữ liệu đã nén.
7. 'ArrayList' và 'LinkedList' khác nhau chủ yếu ở khía cạnh nào trong Java?
A. Cú pháp khai báo.
B. Hiệu suất trong các thao tác thêm/xóa và truy cập phần tử ngẫu nhiên.
C. Khả năng lưu trữ các kiểu dữ liệu khác nhau.
D. Khả năng tự động sắp xếp các phần tử.
8. Dependency Injection (DI) là một pattern thiết kế được sử dụng trong Java (và các ngôn ngữ khác) để làm gì?
A. Tăng tốc độ thực thi chương trình.
B. Giảm sự phụ thuộc giữa các thành phần của ứng dụng, giúp mã nguồn dễ bảo trì, kiểm thử và mở rộng hơn.
C. Mã hóa dữ liệu.
D. Quản lý bộ nhớ.
9. Kiểu dữ liệu nguyên thủy nào trong Java được sử dụng để lưu trữ số nguyên có kích thước nhỏ nhất?
A. int
B. short
C. byte
D. long
10. Mục đích của từ khóa 'super' trong Java là gì?
A. Tham chiếu đến lớp hiện tại.
B. Tham chiếu đến lớp cha trực tiếp của lớp hiện tại.
C. Tạo ra một lớp con.
D. Gọi một phương thức static.
11. Ngoại lệ 'NullPointerException' thường xảy ra khi nào trong Java?
A. Khi truy cập một biến cục bộ chưa được khởi tạo.
B. Khi cố gắng truy cập một thành viên (phương thức hoặc thuộc tính) của một đối tượng tham chiếu null.
C. Khi một mảng được truy cập vượt quá giới hạn chỉ số.
D. Khi cố gắng chuyển đổi một chuỗi không hợp lệ sang số.
12. Garbage Collection (GC) trong Java là gì và nó hoạt động như thế nào?
A. Một cơ chế quản lý bộ nhớ tự động, giải phóng bộ nhớ không còn được sử dụng bởi chương trình.
B. Một quá trình thủ công để giải phóng bộ nhớ được quản lý bởi lập trình viên.
C. Một kỹ thuật tối ưu hóa hiệu suất để tăng tốc độ thực thi chương trình.
D. Một loại trình biên dịch đặc biệt của Java.
13. Java Stream API được giới thiệu từ phiên bản Java nào và mục đích chính của nó là gì?
A. Java 5, để quản lý luồng vào/ra (I/O streams).
B. Java 8, để xử lý dữ liệu dạng collection theo kiểu functional, cho phép thực hiện các thao tác như lọc, biến đổi, tổng hợp dữ liệu một cách hiệu quả và dễ đọc.
C. Java 7, để cải thiện hiệu suất đa luồng.
D. Java 9, để module hóa hệ thống.
14. Vòng lặp 'for-each' (enhanced for loop) trong Java chủ yếu được sử dụng để làm gì?
A. Lặp qua các phần tử của một mảng hoặc tập hợp.
B. Lặp qua một khối mã với số lần xác định trước.
C. Lặp lại một khối mã cho đến khi một điều kiện sai.
D. Tạo một vòng lặp vô hạn.
15. Thế nào là 'method overloading' trong Java?
A. Ghi đè một phương thức của lớp cha trong lớp con.
B. Định nghĩa nhiều phương thức trong cùng một lớp có cùng tên nhưng khác nhau về số lượng hoặc kiểu dữ liệu của tham số.
C. Gọi một phương thức từ một lớp khác.
D. Ẩn đi một phương thức của lớp cha.
16. Trong Java, 'interface' khác với 'abstract class' như thế nào?
A. Interface có thể chứa các phương thức có thân, abstract class thì không.
B. Một lớp có thể kế thừa nhiều interface nhưng chỉ có thể kế thừa một abstract class.
C. Abstract class định nghĩa hành vi, interface định nghĩa trạng thái.
D. Interface được sử dụng để tạo đối tượng, abstract class thì không.
17. Trong Java, 'inheritance' (kế thừa) mang lại lợi ích gì?
A. Giảm kích thước mã nguồn chương trình.
B. Tăng tốc độ thực thi chương trình.
C. Cho phép một lớp (lớp con) kế thừa các thuộc tính và phương thức từ một lớp khác (lớp cha), tái sử dụng mã và thiết lập mối quan hệ 'is-a'.
D. Tạo ra các đối tượng bất biến.
18. Trong Java, 'HashMap' hoạt động dựa trên nguyên tắc nào để lưu trữ và truy xuất dữ liệu?
A. Sắp xếp các phần tử theo thứ tự chèn.
B. Sử dụng cấu trúc cây nhị phân tìm kiếm.
C. Sử dụng hàm băm (hash function) để ánh xạ khóa (key) đến vị trí lưu trữ giá trị (value).
D. Lưu trữ dữ liệu tuần tự trong mảng.
19. Từ khóa 'static' trong Java được sử dụng để làm gì?
A. Tạo ra các lớp con.
B. Chỉ định rằng một thành viên (biến hoặc phương thức) thuộc về lớp chứ không phải đối tượng cụ thể của lớp đó.
C. Ngăn chặn kế thừa lớp.
D. Khai báo một biến cục bộ.
20. Trong Java, từ khóa nào được sử dụng để khai báo một biến không thể thay đổi giá trị sau khi khởi tạo?
A. static
B. final
C. const
D. immutable
21. Mục đích của từ khóa 'this' trong Java là gì?
A. Tham chiếu đến lớp cha.
B. Tham chiếu đến đối tượng hiện tại mà phương thức đang được gọi trên đó.
C. Tạo ra một đối tượng mới.
D. Khai báo một biến toàn cục.
22. Phương thức 'main()' trong Java có vai trò gì?
A. Định nghĩa giao diện người dùng.
B. Là điểm bắt đầu thực thi của một chương trình Java.
C. Xử lý các ngoại lệ trong chương trình.
D. Tạo ra các đối tượng của lớp.
23. 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 đối tượng, `==` so sánh giá trị thuộc tính.
B. `equals()` so sánh giá trị thuộc tính của đối tượng, `==` so sánh tham chiếu đối tượng.
C. Cả hai đều so sánh tham chiếu đối tượng.
D. Cả hai đều so sánh giá trị thuộc tính của đối tượng.
24. Mục đích của 'constructor' trong một lớp Java là gì?
A. Hủy bỏ một đối tượng khi nó không còn được sử dụng.
B. Khởi tạo trạng thái ban đầu của một đối tượng khi nó được tạo ra.
C. Định nghĩa các phương thức truy cập (getter) cho các thuộc tính của đối tượng.
D. Thực hiện các phép toán số học trên đối tượng.
25. 'Encapsulation' (tính đóng gói) trong OOP Java có nghĩa là gì?
A. Che giấu chi tiết triển khai bên trong của một đối tượng và chỉ hiển thị giao diện bên ngoài.
B. Tạo ra nhiều bản sao của một đối tượng.
C. Chia chương trình thành các module nhỏ hơn.
D. Tăng tốc độ truy cập dữ liệu.
26. Trong lập trình hướng đối tượng Java, 'tính đa hình' (polymorphism) đề cập đến điều gì?
A. Khả năng một lớp có nhiều thuộc tính.
B. Khả năng một đối tượng thuộc nhiều lớp.
C. Khả năng một đối tượng có nhiều trạng thái.
D. Khả năng một đối tượng hoặc phương thức có nhiều hình thức hoặc hành vi khác nhau tùy thuộc vào ngữ cảnh.
27. 'Generics' trong Java được giới thiệu để giải quyết vấn đề gì?
A. Tăng tốc độ thực thi chương trình.
B. Kiểm tra kiểu dữ liệu tại thời điểm biên dịch, giúp phát hiện lỗi kiểu sớm và tăng tính an toàn kiểu.
C. Giảm kích thước mã nguồn.
D. Cải thiện khả năng quản lý bộ nhớ.
28. 'Functional Interface' trong Java là gì?
A. Một interface có nhiều phương thức trừu tượng.
B. Một interface chỉ có đúng một phương thức trừu tượng (Single Abstract Method - SAM).
C. Một interface không có phương thức nào.
D. Một interface được sử dụng để tạo ra các đối tượng hàm.
29. 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 một kiểu dữ liệu khác.
B. Trả về một biểu diễn chuỗi của đối tượng.
C. So sánh hai đối tượng để xác định xem chúng có bằng nhau không.
D. Tạo một bản sao của đối tượng.
30. JDBC (Java Database Connectivity) là gì?
A. Một framework để phát triển ứng dụng web.
B. Một API chuẩn của Java để kết nối và tương tác với cơ sở dữ liệu.
C. Một công cụ để biên dịch mã Java.
D. Một thư viện để tạo giao diện người dùng đồ họa.