1. Trong Java, thế nào là SOLID principles?
A. Một tập hợp các quy tắc để viết mã sạch.
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 tập hợp các quy tắc để tối ưu hóa hiệu suất của ứng dụng.
D. Một tập hợp các quy tắc để bảo mật ứng dụng.
2. Trong Java, garbage collection là gì?
A. Một kỹ thuật để giảm kích thước của các file jar.
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ông cụ để tìm và sửa lỗi trong mã.
D. Một phương pháp để tối ưu hóa hiệu suất của cơ sở dữ liệu.
3. Đâ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 các phần tử trong thời gian O(n), trong khi `LinkedList` cho phép truy cập trong thời gian O(1).
C. `ArrayList` không thể lưu trữ các phần tử null, trong khi `LinkedList` thì có thể.
D. `ArrayList` là thread-safe, trong khi `LinkedList` thì không.
4. Trong Java, đặc điểm nào sau đây là đúng về tính đa hình (polymorphism)?
A. Tính đa hình chỉ áp dụng cho các kiểu dữ liệu nguyên thủy.
B. Tính đa hình cho phép các đối tượng thuộc các lớp khác nhau được coi là đối tượng thuộc cùng một kiểu.
C. Tính đa hình ngăn cản việc sử dụng lại mã.
D. Tính đa hình chỉ có thể được thực hiện thông qua kế thừa đơn.
5. Trong Java, thread pool là gì và tại sao nó lại hữu ích?
A. Một tập hợp các thread đang chạy đồng thời để tăng tốc độ xử lý.
B. Một kỹ thuật để tạo ra các thread một cách nhanh chóng.
C. Một tập hợp các thread đã được tạo ra trước và sẵn sàng để thực hiện các tác vụ, giúp giảm chi phí tạo và hủy thread.
D. Một công cụ để quản lý bộ nhớ được sử dụng bởi các thread.
6. Trong Java, mục đích của Design Pattern là gì?
A. Để tăng tốc độ viết mã.
B. Để cung cấp các giải pháp đã được kiểm chứng cho các vấn đề thiết kế phần mềm thường gặp.
C. Để giảm kích thước của mã.
D. Để bảo mật mã.
7. 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ý dữ liệu tuần tự một cách hiệu quả và biểu đạt.
C. Để quản lý bộ nhớ.
D. Để kết nối với cơ sở dữ liệu.
8. Trong Java, thế nào là Serialization?
A. Quá trình chuyển đổi một đối tượng thành một định dạng có thể được lưu trữ hoặc truyền đi.
B. Quá trình tạo ra nhiều thể hiện của một lớp.
C. Quá trình bảo vệ dữ liệu khỏi truy cập trái phép.
D. Quá trình tối ưu hóa hiệu suất của ứng dụng.
9. Trong Java, sự khác biệt giữa `StringBuilder` và `StringBuffer` là gì?
A. `StringBuilder` là bất biến (immutable), trong khi `StringBuffer` là khả biến (mutable).
B. `StringBuilder` là thread-safe, trong khi `StringBuffer` thì không.
C. `StringBuilder` không phải là thread-safe, trong khi `StringBuffer` là thread-safe.
D. Không có sự khác biệt giữa `StringBuilder` và `StringBuffer`.
10. Trong Java, exception nào sau đây là unchecked exception?
A. IOException
B. SQLException
C. NullPointerException
D. ClassNotFoundException
11. Trong Java, từ khóa `static` có ý nghĩa gì?
A. Biến hoặc phương thức static chỉ có thể được truy cập từ bên trong lớp chứa nó.
B. Biến hoặc phương thức static thuộc về một thể hiện cụ thể của lớp.
C. Biến hoặc phương thức static thuộc về lớp chứ không phải là một thể hiện cụ thể của lớp.
D. Biến hoặc phương thức static không thể được thay đổi sau khi được khởi tạo.
12. Trong Java, Annotation là gì?
A. Một loại comment đặc biệt được sử dụng để ghi lại mã.
B. Một dạng siêu dữ liệu cung cấp thông tin về mã mà không trực tiếp ảnh hưởng đến việc thực thi.
C. Một công cụ để kiểm tra lỗi trong mã.
D. Một phương pháp để tối ưu hóa hiệu suất của mã.
13. Trong Java, mục đích của Optional class là gì?
A. Để lưu trữ các giá trị tùy chọn (optional values).
B. Để giảm thiểu các lỗi NullPointerException bằng cách cung cấp một cách rõ ràng để biểu diễn sự vắng mặt của một giá trị.
C. Để tăng hiệu suất của ứng dụng.
D. Để bảo mật ứng dụng.
14. Trong Java, mục đích của từ khóa `transient` là gì?
A. Đánh dấu một biến là hằng số.
B. Đánh dấu một biến là không được serialization.
C. Đánh dấu một biến là có thể truy cập từ bất kỳ đâu.
D. Đánh dấu một biến là volatile.
15. Trong Java, sự khác biệt giữa Checked và Unchecked Exceptions là gì?
A. Checked exceptions được kiểm tra tại thời điểm biên dịch, trong khi unchecked exceptions được kiểm tra tại thời điểm chạy.
B. Unchecked exceptions được kiểm tra tại thời điểm biên dịch, trong khi checked exceptions được kiểm tra tại thời điểm chạy.
C. Checked exceptions không cần phải được xử lý, trong khi unchecked exceptions phải được xử lý.
D. Cả hai loại exceptions đều được kiểm tra tại thời điểm biên dịch.
16. Trong Java, sự khác biệt giữa `throw` và `throws` là gì?
A. `throw` được sử dụng để khai báo một exception, trong khi `throws` được sử dụng để ném một exception.
B. `throw` được sử dụng để ném một exception, trong khi `throws` được sử dụng để khai báo rằng một phương thức có thể ném một exception.
C. Cả `throw` và `throws` đều được sử dụng để ném một exception.
D. Cả `throw` và `throws` đều được sử dụng để khai báo một exception.
17. Trong Java, thế nào là Functional Interface?
A. Một interface có nhiều phương thức abstract.
B. Một interface chỉ có một phương thức abstract.
C. Một interface không có phương thức nào.
D. Một interface có tất cả các phương thức đều là static.
18. Interface trong Java khác với abstract class như thế nào?
A. Interface có thể chứa các phương thức concrete, trong khi abstract class thì không.
B. Một class có thể implements nhiều interface, nhưng chỉ có thể extends một abstract class.
C. Abstract class không thể có constructor, trong khi interface thì có.
D. Interface có thể chứa các biến instance, trong khi abstract class thì không.
19. 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 một đối tượng có phải là null hay không.
D. Sao chép một đối tượng.
20. Trong Java, JPA (Java Persistence API) là gì?
A. Một thư viện để tạo giao diện người dùng đồ họa.
B. Một đặc tả kỹ thuật (specification) cho việc quản lý dữ liệu bền vững (persistent data) trong các ứng dụng Java.
C. Một công cụ để kiểm tra hiệu suất của ứng dụng.
D. Một công cụ để bảo mật ứng dụng.
21. Trong Java, thế nào là Garbage Collection?
A. Một quá trình thủ công để giải phóng bộ 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 kỹ thuật để tối ưu hóa hiệu suất của ứng dụng.
D. Một kỹ thuật để bảo mật ứng dụng.
22. Trong Java, mục đích của từ khóa `final` là gì?
A. Chỉ định rằng một biến phải được khởi tạo trước khi sử dụng.
B. Chỉ định rằng một lớp không thể được kế thừa, một phương thức không thể bị ghi đè, hoặc một biến không thể thay đổi giá trị sau khi được gán.
C. Chỉ định rằng một phương thức là đồng bộ hóa.
D. Chỉ định rằng một biến là volatile.
23. Trong Java, thế nào là Microservices?
A. Một kiến trúc phần mềm trong đó ứng dụng được cấu trúc như một tập hợp các dịch vụ nhỏ, độc lập, giao tiếp với nhau qua mạng.
B. Một kiến trúc phần mềm trong đó tất cả các thành phần của ứng dụng được triển khai trên một máy chủ duy nhất.
C. Một kỹ thuật để tối ưu hóa hiệu suất của ứng dụng.
D. Một kỹ thuật để bảo mật ứng dụng.
24. Đâu là đặc điểm của một Singleton pattern trong Java?
A. Cho phép tạo nhiều thể hiện của một lớp.
B. Đảm bảo rằng một lớp chỉ có một thể hiện duy nhất và cung cấp một điểm truy cập toàn cục đến thể hiện đó.
C. Ngăn chặn việc tạo thể hiện của một lớp.
D. Tạo ra các thể hiện của một lớp một cách ngẫu nhiên.
25. Trong Java, thế nào là Lambda Expression?
A. Một cách để tạo ra các lớp ẩn danh.
B. Một cách để viết các phương thức ngắn gọn và biểu đạt hơn, đặc biệt là khi làm việc với các functional interface.
C. Một cách để quản lý bộ nhớ.
D. Một cách để tạo ra các thread.
26. Trong Java, thuật ngữ `Immutability` có nghĩa là gì?
A. Một đối tượng có thể thay đổi trạng thái sau khi được tạo.
B. Một đối tượng không thể thay đổi trạng thái sau khi được tạo.
C. Một đối tượng chỉ có thể được truy cập từ một thread duy nhất.
D. Một đối tượng có thể được serialization.
27. Trong Java, mục đích của Maven hoặc Gradle là gì?
A. Để viết mã Java.
B. Để quản lý dependencies, xây dựng và triển khai dự án Java một cách tự động.
C. Để chạy ứng dụng Java.
D. Để gỡ lỗi mã Java.
28. Trong Java, sự khác biệt giữa `==` và phương thức `equals()` là gì?
A. `==` so sánh giá trị của hai đối tượng, trong khi `equals()` so sánh tham chiếu.
B. `==` so sánh tham chiếu của hai đối tượng, trong khi `equals()` so sánh giá trị (nội dung) của hai đối tượng.
C. Cả `==` và `equals()` đều so sánh tham chiếu của hai đối tượng.
D. Cả `==` và `equals()` đều so sánh giá trị của hai đối tượng.
29. Trong Java, Dependency Injection (DI) là gì và lợi ích của nó là gì?
A. 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 phụ thuộc của một lớp từ bên ngoài.
B. Một kỹ thuật để tăng sự phụ thuộc giữa các lớp.
C. Một kỹ thuật để tối ưu hóa hiệu suất của ứng dụng.
D. Một kỹ thuật để bảo mật ứng dụng.
30. Trong Java, thế nào là Reflection?
A. Một kỹ thuật để viết mã ngắn gọn hơn.
B. Một API cho phép kiểm tra và thao tác các lớp, interfaces, fields và methods tại thời điểm chạy.
C. Một kỹ thuật để tối ưu hóa hiệu suất của ứng dụng.
D. Một kỹ thuật để bảo mật ứng dụng.