1. Trong Java, sự khác biệt chính giữa `==` và `.equals()` khi so sánh các đối tượng String là gì?
A. `==` so sánh giá trị của chuỗi, còn `.equals()` so sánh tham chiếu.
B. `==` so sánh tham chiếu của chuỗi, còn `.equals()` so sánh giá trị.
C. Cả hai đều so sánh giá trị của chuỗi.
D. Cả hai đều so sánh tham chiếu của chuỗi.
2. Mục đích chính của garbage collection trong Java 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 tràn bộ nhớ.
D. Quản lý các luồng (threads) trong chương trình.
3. Trong Java, phương thức `hashCode()` được sử dụng để làm gì?
A. So sánh giá trị của hai đối tượng.
B. Tạo ra một mã hash cho một đối tượng, được sử dụng trong các cấu trúc dữ liệu như HashMap và HashSet.
C. Kiểm tra xem hai đối tượng có cùng kiểu dữ liệu hay không.
D. Gán giá trị của một đối tượng cho đối tượng khác.
4. Trong Java, Kubernetes được sử dụng để làm gì?
A. Để tạo giao diện người dùng đồ họa.
B. Để tự động hóa việc triển khai, mở rộng quy mô và quản lý các ứng dụng container.
C. Để quản lý bộ nhớ.
D. Để thực hiện các phép toán số học.
5. Trong Java, phương thức `wait()`, `notify()` và `notifyAll()` được sử dụng để làm gì?
A. Quản lý bộ nhớ.
B. Đồng bộ hóa các luồng.
C. Xử lý ngoại lệ.
D. Thực hiện các phép toán số học.
6. Trong Java, Docker được sử dụng để làm gì?
A. Để tạo giao diện người dùng đồ họa.
B. Để đóng gói, phân phối và chạy các ứng dụng trong các container.
C. Để quản lý bộ nhớ.
D. Để thực hiện các phép toán số học.
7. Trong Java, mục đích của Design Pattern là gì?
A. Để tạo ra các chương trình nhanh hơn.
B. Để giải quyết các vấn đề thiết kế phần mềm thường gặp bằng các giải pháp đã được chứng minh.
C. Để tạo ra các chương trình nhỏ hơn.
D. Để tạo ra các chương trình dễ đọc hơn.
8. Trong Java, Lambda Expression là gì?
A. Một loại comment đặc biệt trong mã nguồn.
B. Một hàm ẩn danh có thể được truyền như một đối số hoặc trả về từ một hàm khác.
C. Một cách để tạo ra các biến toàn cục.
D. Một cách để định nghĩa các hằng số.
9. Trong Java, AOP (Aspect-Oriented Programming) là gì?
A. Một kỹ thuật lập trình hướng đối tượng.
B. Một kỹ thuật lập trình cho phép tách các mối quan tâm cắt ngang (cross-cutting concerns) như logging và bảo mật ra khỏi logic nghiệp vụ chính.
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 để quản lý bộ nhớ.
10. Phương thức `equals()` trong Java được sử dụng để làm gì?
A. So sánh tham chiếu của hai đối tượng.
B. So sánh giá trị của hai đối tượng.
C. Kiểm tra xem hai đối tượng có cùng kiểu dữ liệu hay không.
D. Gán giá trị của một đối tượng cho đối tượng khác.
11. Trong Java, JPA là gì?
A. Một thư viện để tạo giao diện người dùng đồ họa.
B. Một API để truy cập và quản lý dữ liệu trong cơ sở dữ liệu quan hệ.
C. Một công cụ để quản lý bộ nhớ.
D. Một ngôn ngữ lập trình.
12. Trong Java, mục đích của từ khóa `static` là gì?
A. Tạo ra một biến hoặc phương thức chỉ có thể truy cập từ bên trong lớp.
B. Tạo ra 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. Tạo ra một biến hoặc phương thức không thể thay đổi giá trị.
D. Tạo ra một biến hoặc phương thức chỉ có thể được truy cập bởi các lớp con.
13. Trong Java, 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)?
A. int
B. float
C. boolean
D. String
14. 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 để bảo mật.
D. Quá trình giải mã dữ liệu đã được mã hóa.
15. Trong Java, Spring Framework là gì?
A. Một thư viện để tạo giao diện người dùng đồ họa.
B. Một framework ứng dụng Java cung cấp cơ sở hạ tầng toàn diện để phát triển các ứng dụng doanh nghiệp.
C. Một công cụ để quản lý bộ nhớ.
D. Một ngôn ngữ lập trình.
16. Trong Java, Microservices là gì?
A. Một kiến trúc phần mềm trong đó một ứng dụng được cấu trúc như một tập hợp các dịch vụ nhỏ, độc lập, được xây dựng xung quanh các khả năng nghiệp vụ.
B. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
C. Một kỹ thuật để quản lý bộ nhớ.
D. Một kỹ thuật để tạo giao diện người dùng đồ họa.
17. Trong Java, sự khác biệt giữa `ArrayList` và `LinkedList` là gì?
A. `ArrayList` nhanh hơn trong việc chèn và xóa các phần tử ở giữa danh sách, trong khi `LinkedList` nhanh hơn trong việc truy cập ngẫu nhiên các phần tử.
B. `ArrayList` nhanh hơn trong việc truy cập ngẫu nhiên các phần tử, trong khi `LinkedList` nhanh hơn trong việc chèn và xóa các phần tử ở giữa danh sách.
C. `ArrayList` có thể chứa các phần tử trùng lặp, trong khi `LinkedList` không thể.
D. `ArrayList` sử dụng nhiều bộ nhớ hơn `LinkedList`.
18. Trong Java, khi nào nên sử dụng `StringBuilder` thay vì `String`?
A. Khi chuỗi không thay đổi.
B. Khi thực hiện nhiều thao tác sửa đổi chuỗi.
C. Khi chuỗi chỉ chứa các ký tự số.
D. Khi chuỗi cần được mã hóa.
19. Trong Java, Optional class được sử dụng để làm gì?
A. Để tạo ra các đối tượng singleton.
B. Để biểu diễn một giá trị có thể có hoặc không có.
C. Để tối ưu hóa hiệu suất của chương trình.
D. Để quản lý bộ nhớ.
20. Trong Java, Annotation là gì?
A. Một loại comment đặc biệt trong mã nguồn.
B. Một hình thức siêu dữ liệu cung cấp thông tin về mã cho trình biên dịch hoặc JVM.
C. Một cách để tạo ra các biến toàn cục.
D. Một cách để định nghĩa các hằng số.
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 tiến trình con (sub-process) của một chương trình.
C. Một đơn vị thực thi nhỏ nhất trong một tiến trình.
D. Một biến toàn cục được chia sẻ giữa các chương trình.
22. Trong Java, khi nào nên sử dụng `HashMap` thay vì `TreeMap`?
A. Khi cần các phần tử được sắp xếp theo khóa.
B. Khi không cần các phần tử được sắp xếp theo khóa và hiệu suất là quan trọng.
C. Khi cần các phần tử được sắp xếp theo giá trị.
D. Khi cần các phần tử được sắp xếp theo thứ tự chèn.
23. Trong Java, Collection nào sau đây đảm bảo các phần tử được sắp xếp theo thứ tự chèn?
A. HashSet
B. TreeSet
C. LinkedHashSet
D. PriorityQueue
24. Exception nào sau đây là unchecked exception trong Java?
A. IOException
B. SQLException
C. NullPointerException
D. ClassNotFoundException
25. Trong Java, phát biểu nào sau đây về tính đa hình (polymorphism) là đúng?
A. Tính đa hình chỉ áp dụng cho các lớp trừu tượng.
B. Tính đa hình cho phép một đối tượng thuộc nhiều lớp khác nhau được tham chiếu thông qua cùng một biến tham chiếu.
C. Tính đa hình chỉ có thể đạt được thông qua kế thừa.
D. Tính đa hình ngăn cản việc sử dụng lại mã.
26. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật để 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 lớp bằng cách cung cấp các dependency cho một đối tượng thay vì để đối tượng tự tạo ra chúng.
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 để quản lý bộ nhớ.
27. Trong Java, từ khóa `final` được sử dụng để làm gì?
A. Khai báo một biến không thể thay đổi giá trị sau khi khởi tạo, khai báo một phương thức không thể bị ghi đè, hoặc khai báo một lớp không thể bị kế thừa.
B. Khai báo một biến có thể thay đổi giá trị sau khi khởi tạo.
C. Khai báo một phương thức có thể bị ghi đè.
D. Khai báo một lớp có thể bị kế thừa.
28. 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 triển khai, còn abstract class thì không.
B. Một lớp chỉ có thể kế thừa từ một abstract class, nhưng có thể implements nhiều interface.
C. Abstract class không thể có các biến thành viên, còn interface thì có.
D. Interface có thể có constructor, còn abstract class thì không.
29. Trong Java, Stream API được sử dụng để làm gì?
A. Để tạo giao diện người dùng đồ họa.
B. Để xử lý các tập hợp dữ liệu một cách tuần tự hoặc song song.
C. Để quản lý bộ nhớ.
D. Để thực hiện các phép toán số học.
30. Trong Java, JDBC được sử dụng để làm gì?
A. Để tạo giao diện người dùng đồ họa.
B. Để kết nối và tương tác với cơ sở dữ liệu.
C. Để quản lý bộ nhớ.
D. Để thực hiện các phép toán số học.