1. Trong Java, mục đích của từ khóa `volatile` là gì?
A. Đảm bảo rằng một biến chỉ có thể được truy cập bởi một luồng tại một thời điểm.
B. Đảm bảo rằng giá trị của một biến được đọc từ bộ nhớ chính thay vì cache của luồng.
C. Đánh dấu một biến là hằng số.
D. Tạo một luồng mới.
2. Trong Java, Dependency Injection (DI) là gì?
A. Một mẫu thiết kế phần mềm cho phép tạo ra các đối tượng độc lập.
B. Một kỹ thuật cho phép một đối tượng nhận các dependency của nó từ bên ngoài thay vì tự tạo ra chúng.
C. Một phương pháp để quản lý bộ nhớ trong ứng dụng.
D. Một cách để tạo ra các lớp con một cách tự động.
3. Trong Java, từ khóa nào được sử dụng để tạo một hằng số?
A. static
B. final
C. const
D. immutable
4. Trong Java, garbage collection là gì?
A. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
B. Một quá trình tự động giải phóng bộ nhớ không còn được sử dụng bởi chương trình.
C. Một cơ chế để phát hiện và sửa lỗi trong chương trình.
D. Một phương pháp để quản lý các luồng (threads) trong chương trình.
5. Trong Java, sự khác biệt 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, `.equals()` so sánh tham chiếu.
B. `==` so sánh tham chiếu, `.equals()` so sánh giá trị của chuỗi.
C. Cả hai đều so sánh giá trị của chuỗi.
D. Cả hai đều so sánh tham chiếu.
6. Trong Java, JRE (Java Runtime Environment) là gì?
A. Một bộ công cụ để phát triển ứng dụng Java.
B. Một môi trường thực thi ứng dụng Java.
C. Một ngôn ngữ lập trình.
D. Một hệ điều hành.
7. Trong Java, IoC (Inversion of Control) là gì?
A. Một kỹ thuật để kiểm soát luồng thực thi của chương trình.
B. Một nguyên tắc thiết kế trong đó quyền kiểm soát luồng thực thi của chương trình được đảo ngược, chuyển từ đối tượng sang framework.
C. Một phương pháp để tối ưu hóa hiệu suất của chương trình.
D. Một cách để quản lý bộ nhớ trong ứng dụng.
8. Trong Java, Optional class được sử dụng để làm gì?
A. Để tạo ra các đối tượng tùy chọn.
B. Để xử lý các giá trị có thể null một cách an toàn, tránh NullPointerException.
C. Để tạo ra các tham số tùy chọn cho phương thức.
D. Để quản lý các exception trong chương trình.
9. 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. Gán giá trị của một đối tượng cho đối tượng khác.
D. Kiểm tra xem một đối tượng có phải là null hay không.
10. Trong Java, multithreading là gì và tại sao nó hữu ích?
A. Khả năng thực hiện nhiều tác vụ đồng thời trong một chương trình, giúp tăng hiệu suất và khả năng phản hồi.
B. Một kỹ thuật để chia nhỏ một chương trình thành nhiều phần nhỏ hơn.
C. Một phương pháp để quản lý bộ nhớ hiệu quả hơn.
D. Một cách để bảo vệ chương trình khỏi các cuộc tấn công bảo mật.
11. Đâu là sự khác biệt giữa `throw` và `throws` trong Java?
A. `throw` dùng để khai báo một exception, `throws` dùng để ném một exception.
B. `throw` dùng để ném một exception, `throws` dùng để khai báo một exception mà phương thức có thể ném ra.
C. Cả hai đều dùng để ném exception, nhưng `throw` dùng cho checked exception, `throws` dùng cho unchecked exception.
D. Cả hai đều dùng để khai báo exception, nhưng `throw` dùng cho checked exception, `throws` dùng cho unchecked exception.
12. Trong Java, mục đích của Maven hoặc Gradle là gì?
A. Để biên dịch code Java.
B. Để quản lý dependencies, build và deploy ứng dụng Java.
C. Để tạo ra các giao diện người dùng đồ họa.
D. Để quản lý bộ nhớ trong ứng dụng.
13. JDBC (Java Database Connectivity) là gì?
A. Một API cho phép ứng dụng Java tương tác với cơ sở dữ liệu.
B. Một ngôn ngữ truy vấn cơ sở dữ liệu.
C. Một hệ quản trị cơ sở dữ liệu.
D. Một công cụ để thiết kế giao diện người dùng cho ứng dụng Java.
14. Trong Java, JPA (Java Persistence API) là gì?
A. Một API để tạo ra các giao diện người dùng đồ họa.
B. Một API để quản lý bộ nhớ trong ứng dụng.
C. Một API để truy cập và quản lý dữ liệu trong cơ sở dữ liệu quan hệ một cách dễ dàng thông qua ORM (Object-Relational Mapping).
D. Một API để tạo ra các luồng (threads) trong chương trình.
15. Annotation trong Java là gì?
A. Một loại comment đặc biệt được sử dụng để ghi chú code.
B. Một hình thức metadata cung cấp thông tin về code cho compiler hoặc runtime environment.
C. Một cách để tạo ra các lớp con một cách tự động.
D. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
16. 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. Một kỹ thuật để mã hóa dữ liệu.
D. Một phương pháp để nén dữ liệu.
17. Trong Java, sự khác biệt giữa `HashMap` và `TreeMap` là gì?
A. `HashMap` duy trì thứ tự chèn, `TreeMap` thì không.
B. `HashMap` không duy trì thứ tự, `TreeMap` duy trì thứ tự các phần tử theo khóa.
C. `HashMap` cho phép các khóa trùng lặp, `TreeMap` thì không.
D. `HashMap` an toàn luồng, `TreeMap` thì không.
18. Trong Java, Stream API là gì?
A. Một API để quản lý luồng (threads) trong chương trình.
B. Một API để xử lý các collection dữ liệu theo kiểu functional, cho phép thực hiện các phép toán map, filter, reduce một cách dễ dàng.
C. Một API để làm việc với file và thư mục.
D. Một API để tạo ra các giao diện người dùng đồ họa.
19. Trong Java, Spring Framework là gì?
A. Một ngôn ngữ lập trình.
B. Một framework ứng dụng mạnh mẽ cung cấp nhiều tính năng như Dependency Injection, AOP, quản lý transaction và tích hợp với nhiều thư viện khác.
C. Một công cụ để thiết kế giao diện người dùng.
D. Một hệ điều hành.
20. Trong Java, mục đích của lớp `Scanner` là gì?
A. Để tạo ra các đối tượng đồ họa.
B. Để đọc dữ liệu đầu vào từ người dùng hoặc từ một file.
C. Để ghi dữ liệu ra một file.
D. Để quản lý các luồng (threads) trong chương trình.
21. Trong Java, nguyên tắc SOLID là gì?
A. Một tập hợp các quy tắc để viết code sạch và dễ đọc.
B. Một tập hợp các nguyên tắc thiết kế hướng đối tượng giúp tạo ra các hệ thống linh hoạt, dễ bảo trì và mở rộng.
C. Một phương pháp để quản lý bộ nhớ trong ứng dụng.
D. Một cách để tối ưu hóa hiệu suất của chương trình.
22. Trong Java, đặc điểm nào sau đây thể hiện tính đóng gói (encapsulation)?
A. Cho phép các lớp con kế thừa thuộc tính và phương thức từ lớp cha.
B. Che giấu thông tin và hành vi 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 một đối tượng có thể có nhiều hình thức.
D. Tự động chuyển đổi kiểu dữ liệu.
23. Trong Java, exception `NullPointerException` xảy ra khi nào?
A. Khi cố gắng truy cập một biến chưa được khởi tạo.
B. Khi cố gắng truy cập một đối tượng có giá trị null.
C. Khi cố gắng chia một số cho 0.
D. Khi cố gắng truy cập một phần tử nằm ngoài phạm vi của mảng.
24. Trong Java, AOP (Aspect-Oriented Programming) là gì?
A. Một kỹ thuật lập trình hướng đối tượng nâng cao.
B. Một phương pháp 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à authentication ra khỏi logic nghiệp vụ chính.
C. Một cách để tạo ra các giao diện người dùng phức tạp.
D. Một kỹ thuật để quản lý bộ nhớ hiệu quả hơn.
25. Trong Java, Lambda Expression là gì?
A. Một cách để tạo ra các đối tượng một cách nhanh chóng.
B. Một cách để biểu diễn một instance của functional interface.
C. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
D. Một cách để tạo ra các lớp con một cách tự động.
26. Trong Java, thế nào là Functional Interface?
A. Một interface không có phương thức nào.
B. Một interface chỉ có một phương thức abstract.
C. Một interface có nhiều phương thức abstract.
D. Một interface chỉ có các phương thức static.
27. Trong Java, mục đích của từ khóa `super` là gì?
A. Tham chiếu đến một đối tượng của 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 một đối tượng mới của lớp hiện tại.
D. Giải phóng bộ nhớ của một đối tượng.
28. Đâu là sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java?
A. `ArrayList` sử dụng mảng động, trong khi `LinkedList` sử dụng danh sách liên kết đôi.
B. `ArrayList` cho phép truy cập ngẫu nhiên nhanh hơn, trong khi `LinkedList` cho phép chèn và xóa phần tử ở giữa nhanh hơn.
C. Cả hai đáp án trên.
D. `ArrayList` an toàn luồng, `LinkedList` thì không.
29. Trong Java, interface có thể chứa những gì?
A. Chỉ các phương thức abstract.
B. Chỉ các biến static final.
C. Các phương thức abstract và các biến static final.
D. Các phương thức concrete và các biến instance.
30. Trong Java, JDK (Java Development Kit) là gì?
A. Một môi trường thực thi ứng dụng Java.
B. Một bộ công cụ để phát triển ứng dụng Java, bao gồm JRE, compiler và debugger.
C. Một ngôn ngữ lập trình.
D. Một hệ điều hành.