1. Trong Java, mục đích của từ khóa `transient` là gì?
A. Để chỉ định rằng một biến không nên được serialized.
B. Để chỉ định rằng một biến là hằng số.
C. Để chỉ định rằng một biến có thể được truy cập từ bất kỳ đâu.
D. Để chỉ định rằng một biến nên được lưu trữ trong bộ nhớ cache.
2. Trong Java, mục đích của từ khóa `final` là gì?
A. Để khai báo một hằng số.
B. Để ngăn một lớp bị kế thừa.
C. Để ngăn một phương thức bị ghi đè.
D. Tất cả các đáp án trên.
3. Trong Java, Dependency Injection (DI) là gì?
A. Một design pattern cho phép tạo ra các đối tượng một cách linh hoạt.
B. Một kỹ thuật mà trong đó các dependency của một đối tượng được cung cấp cho đối tượng đó, thay vì đối tượng tự tạo ra chúng.
C. Một kỹ thuật để giảm sự phụ thuộc giữa các lớp.
D. Một kỹ thuật để tăng cường tính bảo mật của ứng dụng.
4. Trong Java, thread pool là gì và tại sao nó hữu ích?
A. Một tập hợp các luồng đã được tạo sẵn để thực hiện các tác vụ, giúp giảm chi phí tạo và hủy luồng.
B. Một kỹ thuật để đồng bộ hóa các luồng.
C. Một kỹ thuật để ưu tiên các luồng.
D. Một kỹ thuật để quản lý bộ nhớ cho các luồng.
5. Mục đích của phương thức `hashCode()` trong Java là gì?
A. Để trả về một số nguyên duy nhất đại diện cho một đối tượng, được sử dụng trong các cấu trúc dữ liệu như HashMap.
B. Để so sánh hai đối tượng.
C. Để in ra thông tin về một đối tượng.
D. Để tạo ra một bản sao của một đối tượng.
6. Trong Java, design pattern Singleton được sử dụng để làm gì?
A. Để đảm bảo rằng một lớp chỉ có một instance duy nhất và cung cấp một điểm truy cập toàn cục đến instance đó.
B. Để tạo ra nhiều instance của một lớp.
C. Để tạo ra các đối tượng không thể thay đổi.
D. Để tạo ra các đối tượng có thể được truy cập từ bất kỳ đâu.
7. Annotation `@Override` trong Java được sử dụng để làm gì?
A. Để chỉ định rằng một phương thức ghi đè một phương thức từ lớp cha.
B. Để chỉ định rằng một phương thức là abstract.
C. Để chỉ định rằng một phương thức là static.
D. Để chỉ định rằng một phương thức là final.
8. Đoạn code nào sau đây thể hiện cách đúng để đọc một file văn bản trong Java?
A. `FileInputStream fis = new FileInputStream(`file.txt`);`
B. `BufferedReader br = new BufferedReader(new FileReader(`file.txt`));`
C. `File file = new File(`file.txt`);`
D. `InputStream is = new InputStream(`file.txt`);`
9. Trong Java, Serialization là gì?
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 đối tượng từ một đối tượng duy nhất.
C. Quá trình mã hóa dữ liệu để bảo mật.
D. Quá trình chuyển đổi dữ liệu thành dạng mà con người có thể đọc được.
10. Sự khác biệt giữa `StringBuilder` và `StringBuffer` trong Java là gì?
A. `StringBuilder` là thread-safe, `StringBuffer` thì không.
B. `StringBuffer` là thread-safe, `StringBuilder` thì không.
C. Không có sự khác biệt, chúng hoàn toàn giống nhau.
D. `StringBuilder` nhanh hơn `StringBuffer`.
11. Đoạn code Java nào sau đây thể hiện cách tạo một đối tượng `ArrayList` chứa các chuỗi?
A. `ArrayList list = new LinkedList();`
B. `ArrayList list = new ArrayList(String);`
C. `ArrayList list = new ArrayList();`
D. `List list = new List();`
12. Trong Java, AOP (Aspect-Oriented Programming) là gì?
A. 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à security ra khỏi logic nghiệp vụ chính.
B. Một phương pháp lập trình để tối ưu hóa hiệu suất của ứng dụng.
C. Một phương pháp lập trình để tạo ra các giao diện người dùng.
D. Một phương pháp lập trình để quản lý bộ nhớ.
13. 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 có thể implements nhiều interface, nhưng chỉ có thể kế thừa một abstract class.
C. Abstract class không thể chứa các biến thành viên, còn interface thì có thể.
D. Interface có thể có constructor, còn abstract class thì không.
14. Trong Java, đặc điểm nào sau đây KHÔNG phải là một đặc điểm của lập trình hướng đối tượng?
A. Đa hình (Polymorphism)
B. Kế thừa (Inheritance)
C. Đóng gói (Encapsulation)
D. Lập trình tuyến tính (Linear programming)
15. Trong Java, nguyên tắc SOLID là gì?
A. 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 ứng dụng dễ bảo trì và mở rộng.
B. Một tập hợp các quy tắc đặt tên biến và phương thức.
C. Một tập hợp các kỹ thuật tối ưu hóa hiệu suất.
D. Một tập hợp các kỹ thuật bảo mật ứng dụng.
16. Phương thức `equals()` trong Java được sử dụng để làm gì?
A. So sánh địa chỉ bộ nhớ của hai đối tượng.
B. Gán giá trị của một đối tượng cho một đối tượng khác.
C. So sánh nội dung của hai đối tượng.
D. Kiểm tra xem một đối tượng có phải là null hay không.
17. Đâu là sự khác biệt chính giữa `==` và phương thức `.equals()` trong Java khi so sánh các đối tượng?
A. `==` so sánh nội dung, `.equals()` so sánh tham chiếu.
B. `==` so sánh tham chiếu, `.equals()` so sánh nội dung (nếu được ghi đè).
C. Cả hai đều so sánh tham chiếu.
D. Cả hai đều so sánh nội dung.
18. Đâu là mục đích của việc sử dụng Maven hoặc Gradle trong dự án Java?
A. Quản lý dependencies, build, test và triển khai dự án một cách tự động.
B. Tạo ra các giao diện người dùng.
C. Quản lý bộ nhớ.
D. Tối ưu hóa hiệu suất của ứng dụng.
19. Trong Java, IoC (Inversion of Control) container là gì?
A. Một framework quản lý lifecycle của các bean, inject các dependency vào bean, và cấu hình bean.
B. Một công cụ để tối ưu hóa hiệu suất của ứng dụng.
C. Một công cụ để tạo ra các giao diện người dùng.
D. Một công cụ để quản lý bộ nhớ.
20. Trong Java, lambda expression là gì?
A. Một cách để tạo ra các đối tượng ẩn danh.
B. Một cách để viết các hàm ẩn danh ngắn gọn.
C. Một cách để khai báo các biến cục bộ.
D. Một cách để tạo ra các lớp con.
21. Sự khác biệt giữa Checked Exception và Unchecked Exception trong Java là gì?
A. Checked Exception phải được xử lý hoặc khai báo trong phương thức, Unchecked Exception thì không.
B. Unchecked Exception phải được xử lý hoặc khai báo trong phương thức, Checked Exception thì không.
C. Checked Exception xảy ra trong thời gian chạy, Unchecked Exception xảy ra trong thời gian biên dịch.
D. Checked Exception là các lỗi cú pháp, Unchecked Exception là các lỗi logic.
22. Trong Java, ORM (Object-Relational Mapping) là gì?
A. Một kỹ thuật để ánh xạ các đối tượng trong ứng dụng với các bản ghi trong cơ sở dữ liệu quan hệ.
B. Một kỹ thuật để tối ưu hóa truy vấn cơ sở dữ liệu.
C. Một kỹ thuật để mã hóa dữ liệu trong cơ sở dữ liệu.
D. Một kỹ thuật để tạo ra các đối tượng từ dữ liệu trong cơ sở dữ liệu.
23. Phương thức `substring()` trong Java hoạt động như thế nào?
A. Trả về một chuỗi con bắt đầu từ một vị trí chỉ định đến hết chuỗi.
B. Trả về một chuỗi con bắt đầu từ một vị trí chỉ định với một độ dài chỉ định.
C. Trả về một chuỗi con giữa hai vị trí chỉ định.
D. Tất cả các đáp án trên.
24. Từ khóa `static` trong Java được sử dụng để làm gì?
A. Để tạo ra các đối tượng không thể thay đổi.
B. Để khai báo một biến hoặc phương thức thuộc về lớp chứ không phải đối tượng.
C. Để chỉ định rằng một lớp không thể được kế thừa.
D. Để tạo ra các đối tượng có thể được truy cập từ bất kỳ đâu.
25. Trong Java, exception `NullPointerException` xảy ra khi nào?
A. Khi cố gắng truy cập một biến không tồn tại.
B. Khi một phương thức đệ quy gọi chính nó quá nhiều lần.
C. Khi cố gắng truy cập một thành viên của một đối tượng null.
D. Khi chia một số cho 0.
26. Trong Java, garbage collection là gì và nó hoạt động như thế nào?
A. Một kỹ thuật để giải phóng bộ nhớ không còn được sử dụng bởi chương trình một cách tự động.
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ớ một cách thủ công.
D. Một kỹ thuật để ngăn chặn rò rỉ bộ nhớ.
27. Trong Java, Microservices là gì?
A. Một kiến trúc phần mềm chia ứng dụng thành các dịch vụ nhỏ, độc lập, giao tiếp với nhau thông qua mạng.
B. Một kỹ thuật để tối ưu hóa hiệu suất của ứng dụng.
C. Một kỹ thuật để tạo ra các giao diện người dùng.
D. Một kỹ thuật để quản lý bộ nhớ.
28. Điều gì xảy ra nếu bạn cố gắng truy cập một biến thành viên private của một lớp từ một lớp khác trong Java?
A. Chương trình sẽ biên dịch thành công và chạy mà không có lỗi.
B. Biến private sẽ được tự động chuyển thành public.
C. Trình biên dịch sẽ báo lỗi.
D. Biến private sẽ được tự động chuyển thành protected.
29. Làm thế nào để bạn tạo một luồng (thread) mới trong Java?
A. Bằng cách kế thừa lớp `Thread` hoặc implements interface `Runnable`.
B. Bằng cách sử dụng từ khóa `new thread`.
C. Bằng cách gọi phương thức `createThread()`.
D. Bằng cách sử dụng lớp `Process`.
30. Trong Java, JPA (Java Persistence API) là gì?
A. Một API để quản lý dữ liệu trong bộ nhớ.
B. Một API để làm việc với cơ sở dữ liệu quan hệ một cách độc lập với nhà cung cấp.
C. Một API để tạo ra các giao diện người dùng.
D. Một API để quản lý các luồng.