1. Trong Java, luồng (stream) là gì?
A. Một kênh giao tiếp giữa các tiến trình.
B. Một chuỗi các phần tử có thể được xử lý tuần tự.
C. Một loại bộ nhớ đặc biệt để lưu trữ dữ liệu tạm thời.
D. Một công cụ để tạo ra các số ngẫu nhiên.
2. 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 final static.
C. Các phương thức abstract và các biến final static.
D. Các phương thức concrete và các biến instance.
3. Trong Java, package nào chứa lớp `Scanner` để đọc dữ liệu từ bàn phím?
A. java.io
B. java.util
C. java.lang
D. java.net
4. Trong Java, final class là gì?
A. Một lớp không thể có phương thức.
B. Một lớp không thể được kế thừa.
C. Một lớp chỉ có thể chứa các biến final.
D. Một lớp không thể tạo ra đối tượng.
5. Trong Java, exception nào xảy ra khi cố gắng truy cập một phần tử không tồn tại trong một mảng?
A. NullPointerException
B. ArrayIndexOutOfBoundsException
C. IOException
D. SQLException
6. Đâu là điểm khác biệt chính giữa `ArrayList` và `LinkedList` trong Java?
A. `ArrayList` sử dụng mảng động, `LinkedList` sử dụng danh sách liên kết.
B. `ArrayList` sử dụng danh sách liên kết, `LinkedList` sử dụng mảng động.
C. `ArrayList` nhanh hơn trong việc chèn và xóa phần tử, `LinkedList` nhanh hơn trong việc truy cập phần tử.
D. Không có sự khác biệt, cả hai đều có hiệu suất tương đương.
7. Trong Java, cơ chế nào cho phép một lớp kế thừa các thuộc tính và phương thức từ một lớp khác?
A. Đóng gói (Encapsulation)
B. Đa hình (Polymorphism)
C. Kế thừa (Inheritance)
D. Trừu tượng (Abstraction)
8. Đâu là mục đích của phương thức `hashCode()` trong Java?
A. Trả về một giá trị hash code cho một đối tượng.
B. So sánh hai đối tượng có bằng nhau hay không.
C. Tạo ra một bản sao của một đối tượng.
D. Giải phóng bộ nhớ của một đối tượng.
9. Mục đích của từ khóa `synchronized` trong Java là gì?
A. Đảm bảo rằng một phương thức hoặc khối mã chỉ có thể được truy cập bởi một luồng tại một thời điểm.
B. Tăng tốc độ thực thi của một phương thức.
C. Giảm mức sử dụng bộ nhớ của một chương trình.
D. Tạo ra một bản sao của một đối tượng.
10. Phương thức nào sau đây được gọi tự động khi một đối tượng được tạo trong Java?
A. finalize()
B. start()
C. init()
D. Constructor
11. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật để tạo ra các đối tượng độc lập với nhau.
B. Một mẫu thiết kế (design pattern) cho phép chuyển giao sự phụ thuộc của các đối tượng cho một container.
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ông cụ để gỡ lỗi chương trình.
12. Trong Java, annotation nào được sử dụng để chỉ ra rằng một phương thức ghi đè một phương thức từ lớp cha?
A. @Override
B. @Overwrite
C. @Implement
D. @Inherit
13. Trong Java, từ khóa `volatile` được sử dụng để làm gì?
A. Đảm bảo rằng một biến được lưu trữ trong bộ nhớ cache của CPU.
B. Đảm bảo rằng một biến được đọc từ bộ nhớ chính, không phải từ cache của CPU.
C. Tạo ra một biến không thể thay đổi.
D. Tăng tốc độ truy cập vào một biến.
14. Trong Java, thuật ngữ "serialization" dùng để chỉ điều gì?
A. Quá trình chuyển đổi một đối tượng thành một chuỗi byte.
B. Quá trình mã hóa dữ liệu.
C. Quá trình giải mã dữ liệu.
D. Quá trình nén dữ liệu.
15. Đâu là mục đích của từ khóa `transient` trong Java?
A. Ngăn chặn một biến được serialized.
B. Tạo ra một biến chỉ có thể truy cập từ bên trong lớp.
C. Tạo ra một biến không thể thay đổi.
D. Tạo ra một biến có thể truy cập từ bất kỳ đâu.
16. Đâu là điểm khác biệt chính giữa `throw` và `throws` trong Java?
A. `throw` dùng để ném một exception, `throws` dùng để khai báo một exception.
B. `throws` dùng để ném một exception, `throw` dùng để khai báo một exception.
C. Không có sự khác biệt, cả hai đều dùng để ném exception.
D. Không có sự khác biệt, cả hai đều dùng để khai báo exception.
17. Trong Java, JRE là viết tắt của cụm từ nào?
A. Java Runtime Environment
B. Java Resource Editor
C. Java Revolution Enterprise
D. Java Realtime Engine
18. Đâu là sự khác biệt giữa Checked Exception và Unchecked Exception trong Java?
A. Checked Exception phải được xử lý hoặc khai báo, Unchecked Exception thì không.
B. Unchecked Exception phải được xử lý hoặc khai báo, Checked Exception thì không.
C. Checked Exception xảy ra trong quá trình biên dịch, Unchecked Exception xảy ra trong quá trình chạy.
D. Không có sự khác biệt, cả hai đều phải được xử lý hoặc khai báo.
19. Trong Java, từ khóa nào được sử dụng để khai báo một hằng số?
A. static
B. const
C. final
D. immutable
20. Đâu là mục đích của phương thức `finalize()` trong Java?
A. Khởi tạo một đối tượng.
B. Giải phóng bộ nhớ của một đối tượng trước khi garbage collection.
C. Sao chép một đối tượng.
D. So sánh hai đối tượng.
21. Trong Java, Collection nào không cho phép chứa các phần tử trùng lặp?
A. List
B. ArrayList
C. Set
D. Queue
22. Lớp nào là lớp cha của tất cả các lớp trong Java?
A. Main
B. Class
C. Object
D. System
23. Phương thức nào được sử dụng để tạo một luồng mới trong Java?
A. run()
B. start()
C. execute()
D. create()
24. Đâ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 giá trị, `equals()` so sánh tham chiếu.
B. `==` so sánh tham chiếu, `equals()` so sánh giá trị (nếu được ghi đè).
C. Không có sự khác biệt, cả hai đều so sánh tham chiếu.
D. Không có sự khác biệt, cả hai đều so sánh giá trị.
25. Đâu là một đặc điểm của lập trình hướng đối tượng (OOP) trong Java?
A. Sử dụng goto statement để điều khiển luồng thực thi.
B. Chia chương trình thành các hàm độc lập.
C. Sử dụng các đối tượng để mô hình hóa thế giới thực.
D. Tránh sử dụng cấu trúc dữ liệu phức tạp.
26. Đâu là lợi ích của việc sử dụng đa luồng (multithreading) trong Java?
A. Giảm mức sử dụng bộ nhớ.
B. Tăng tốc độ thực thi chương trình bằng cách thực hiện song song các tác vụ.
C. Đơn giản hóa việc gỡ lỗi.
D. Ngăn chặn hoàn toàn các lỗi lập trình.
27. 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 phương pháp để mã hóa dữ liệu.
D. Một công cụ để gỡ lỗi chương trình.
28. Đâu là một lợi ích của việc sử dụng Generics trong Java?
A. Loại bỏ hoàn toàn các lỗi runtime.
B. Cho phép kiểm tra kiểu tại thời điểm biên dịch.
C. Tăng tốc độ thực thi của chương trình.
D. Giảm mức sử dụng bộ nhớ.
29. Đâu là mục đích của từ khóa `static` trong Java?
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ủa lớp.
C. Tạo ra một biến hoặc phương thức không thể thay đổi.
D. Tạo ra một biến hoặc phương thức chỉ có thể truy cập bởi các lớp con.
30. Trong Java, hãy giải thích sự khác biệt chính giữa `StringBuilder` và `StringBuffer`?
A. `StringBuilder` là thread-safe, `StringBuffer` thì không.
B. `StringBuffer` là thread-safe, `StringBuilder` thì không.
C. `StringBuilder` chậm hơn `StringBuffer`.
D. Không có sự khác biệt.