1. Phương thức `sleep()` của lớp Thread trong Java làm gì?
A. Kết thúc hoàn toàn một luồng
B. Tạm dừng luồng hiện tại trong một khoảng thời gian nhất định
C. Khởi động lại một luồng đã bị tạm dừng
D. Đánh thức một luồng khác đang ở trạng thái chờ
2. Đâu là cách so sánh hai chuỗi (String) đúng trong Java?
A. string1 == string2
B. string1.compareTo(string2)
C. string1.equals(string2)
D. Cả Answer 2 và Answer 3 đều đúng trong mọi trường hợp
3. Trong Java, 'đa hình' (Polymorphism) có nghĩa là gì?
A. Khả năng một lớp có nhiều thuộc tính
B. Khả năng một đối tượng có nhiều kiểu dữ liệu
C. Khả năng một đối tượng thuộc nhiều lớp
D. Khả năng một đối tượng hoặc phương thức có thể biểu hiện khác nhau trong các ngữ cảnh khác nhau
4. Trong Java, 'Annotation' là gì?
A. Một loại comment đặc biệt trong code
B. Metadata cung cấp thông tin bổ sung về code cho trình biên dịch hoặc JVM
C. Một cơ chế để xử lý ngoại lệ
D. Một kiểu dữ liệu mới trong Java
5. Đâu là sự 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 đôi
B. `ArrayList` cho phép truy cập phần tử ngẫu nhiên nhanh hơn, `LinkedList` thì không
C. `LinkedList` sử dụng ít bộ nhớ hơn `ArrayList`
D. Cả `ArrayList` và `LinkedList` đều có hiệu suất tương đương trong mọi trường hợp
6. Phương thức `finalize()` trong Java được gọi khi nào?
A. Khi một đối tượng được tạo ra
B. Khi một đối tượng không còn tham chiếu và chuẩn bị được thu gom bởi Garbage Collector
C. Khi chương trình Java kết thúc
D. Khi một ngoại lệ (Exception) xảy ra
7. Đâu là mục đích của từ khóa `transient` trong Java?
A. Khai báo một biến là hằng số
B. Ngăn chặn việc tuần tự hóa (serialization) một biến thành viên của lớp
C. Khai báo một phương thức là trừu tượng
D. Đảm bảo rằng một biến được khởi tạo trước khi sử dụng
8. Trong Java, 'constructor' là gì?
A. Một phương thức đặc biệt có cùng tên với lớp và được gọi tự động khi tạo một đối tượng của lớp
B. Một phương thức dùng để xóa đối tượng
C. Một biến toàn cục của lớp
D. Một lớp cha của tất cả các lớp trong Java
9. Trong Java, 'Checked Exception' khác với 'Unchecked Exception' như thế nào?
A. Checked Exception xảy ra trong quá trình biên dịch, Unchecked Exception xảy ra khi runtime
B. Checked Exception phải được xử lý (try-catch hoặc throws) hoặc khai báo throws, Unchecked Exception thì không bắt buộc
C. Checked Exception thường do lỗi lập trình, Unchecked Exception do lỗi hệ thống
D. Không có sự khác biệt lớn, chỉ là tên gọi khác nhau
10. Đâu là mục đích chính của 'Garbage Collection' trong Java?
A. Tối ưu hóa tốc độ thực thi chương trình
B. Quản lý bộ nhớ tự động bằng cách thu hồi bộ nhớ không còn được sử dụng bởi chương trình
C. Phát hiện và sửa lỗi trong chương trình
D. Biên dịch mã nguồn Java thành bytecode
11. 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) trong Java?
A. int
B. boolean
C. String
D. char
12. Từ khóa `static` trong Java được sử dụng để làm gì?
A. Tạo ra một đối tượng mới của lớp
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ụ thể của lớp
C. Ngăn chặn việc kế thừa lớp
D. Đảm bảo rằng một phương thức không thể bị ghi đè
13. Phương thức `substring(int beginIndex, int endIndex)` của lớp String trong Java trả về kết quả gì?
A. Chuỗi con bắt đầu từ `beginIndex` và kết thúc tại `endIndex` (bao gồm cả hai chỉ số)
B. Chuỗi con bắt đầu từ `beginIndex` và kết thúc tại `endIndex` (không bao gồm `endIndex`)
C. Chuỗi con bắt đầu từ `beginIndex` đến hết chuỗi gốc
D. Chuỗi con từ đầu chuỗi gốc đến `endIndex`
14. Trong Java, 'Lambda expression' là gì?
A. Một loại biến đặc biệt
B. Một cách viết ngắn gọn cho anonymous inner class
C. Một interface mới trong Java 8
D. Một cơ chế để xử lý đa luồng
15. Trong Java, 'luồng' (Thread) là gì?
A. Một biến đặc biệt để lưu trữ dữ liệu
B. Một tiến trình độc lập của chương trình có thể thực thi song song
C. Một loại collection để chứa các đối tượng
D. Một kỹ thuật để xử lý ngoại lệ
16. Trong Java, 'package' được sử dụng để làm gì?
A. Tăng tốc độ biên dịch chương trình
B. Nhóm các lớp và interface có liên quan lại với nhau, giúp tổ chức code và tránh xung đột tên
C. Tối ưu hóa bộ nhớ sử dụng
D. Bảo mật code bằng cách ẩn giấu implementation
17. Trong Java, ngoại lệ (Exception) 'NullPointerException' thường xảy ra khi nào?
A. Khi chia một số cho 0
B. Khi cố gắng truy cập một biến đối tượng mà biến đó có giá trị null
C. Khi truy cập một phần tử mảng vượt quá kích thước mảng
D. Khi nhập sai định dạng dữ liệu
18. 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. So sánh giá trị của hai đối tượng
C. Gán giá trị của đối tượng này cho đối tượng khác
D. Kiểm tra xem một đối tượng có phải là null hay không
19. Trong Java, từ khóa `this` dùng để tham chiếu đến cái gì?
A. Lớp hiện tại
B. Đối tượng hiện tại mà phương thức đang được gọi
C. Lớp cha của lớp hiện tại
D. Một đối tượng static của lớp
20. Trong lập trình hướng đối tượng Java, tính chất nào cho phép một lớp con kế thừa các thuộc tính và phương thức từ lớp cha?
A. Đa hình (Polymorphism)
B. Đóng gói (Encapsulation)
C. Kế thừa (Inheritance)
D. Trừu tượng (Abstraction)
21. Đâu là phạm vi truy cập (access modifier) có mức độ hạn chế truy cập thấp nhất trong Java?
A. private
B. protected
C. public
D. default (package-private)
22. Đâu là cách khai báo đúng một mảng các số nguyên trong Java?
A. int array[];
B. int[] array;
C. array int[];
D. array[] int;
23. Giao diện (Interface) trong Java khác với lớp trừu tượng (Abstract class) như thế nào?
A. Interface có thể chứa các phương thức có thân, Abstract class thì không
B. Một lớp có thể kế thừa nhiều Abstract class, nhưng chỉ có thể triển khai một Interface
C. Interface chỉ chứa các phương thức trừu tượng và hằng số, Abstract class có thể chứa cả phương thức trừu tượng và không trừu tượng
D. Không có sự khác biệt, Interface và Abstract class là như nhau
24. Phương thức `printStackTrace()` trong Java được sử dụng khi xử lý ngoại lệ để làm gì?
A. In ra thông báo lỗi đơn giản cho người dùng
B. In ra dấu vết ngăn xếp (stack trace) của ngoại lệ, giúp gỡ lỗi
C. Ghi log ngoại lệ vào file
D. Khởi động lại chương trình sau khi xảy ra ngoại lệ
25. Phương thức `toString()` trong Java thường được ghi đè để làm gì?
A. So sánh hai đối tượng
B. Trả về một biểu diễn chuỗi của đối tượng, dễ đọc và hữu ích cho việc debug
C. Chuyển đổi một đối tượng sang kiểu dữ liệu chuỗi
D. Giải phóng bộ nhớ của đối tượng
26. Trong Java, từ khóa nào được sử dụng để khai báo một biến hằng số?
A. static
B. const
C. final
D. immutable
27. Phương thức `parseInt()` của lớp Integer trong Java dùng để làm gì?
A. Chuyển đổi một số nguyên sang chuỗi
B. Chuyển đổi một chuỗi biểu diễn số nguyên sang kiểu int
C. Kiểm tra xem một chuỗi có phải là biểu diễn của số nguyên hay không
D. Định dạng một số nguyên theo một mẫu nhất định
28. Đâu là lợi ích chính của việc sử dụng Generics trong Java?
A. Giảm kích thước bytecode
B. Tăng tốc độ thực thi chương trình
C. Kiểm tra kiểu dữ liệu tại thời điểm biên dịch, giúp phát hiện lỗi sớm và tăng tính an toàn kiểu
D. Cho phép tạo ra các lớp và interface không thể thay đổi
29. Vòng lặp `for-each` (enhanced for loop) trong Java được sử dụng chủ yếu để làm gì?
A. Lặp qua các phần tử của một mảng hoặc collection
B. Lặp vô hạn
C. Lặp qua một khối lệnh với số lần cố định
D. Thay thế cho vòng lặp `while` trong mọi trường hợp
30. Phương thức `super()` trong Java được sử dụng để làm gì?
A. Tạo một đối tượng của lớp cha
B. Gọi constructor của lớp cha từ constructor của lớp con
C. Truy cập các biến static của lớp cha
D. Thay thế lớp cha bằng lớp con