1. Trong lập trình Java, từ khóa nào được sử dụng để khai báo một biến hằng số?
A. static
B. final
C. const
D. immutable
2. 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. Kiểm tra xem hai đối tượng có cùng kiểu dữ liệu không
D. Gán giá trị của đối tượng này cho đối tượng khác
3. Đâu là cách khai báo một mảng các số nguyên trong Java?
A. int array[];
B. int[] array;
C. array int[];
D. array[] int;
4. Lớp nào sau đây là lớp cha của tất cả các lớp trong Java?
A. SuperClass
B. MainClass
C. ObjectClass
D. Object
5. 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)
6. Interface trong Java khác với Abstract class ở điểm 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ể implements nhiều Interface nhưng chỉ có thể extends một Abstract class
C. Interface sử dụng từ khóa `extends`, Abstract class sử dụng từ khóa `implements`
D. Interface không thể chứa biến thành viên, Abstract class thì có thể
7. Exception `NullPointerException` thường xảy ra khi nào trong Java?
A. Truy cập một biến cục bộ chưa được khởi tạo
B. Truy cập một đối tượng thông qua một biến tham chiếu null
C. Chia một số cho 0
D. Chuyển đổi kiểu dữ liệu không hợp lệ
8. Vòng lặp `for-each` trong Java thường được sử dụng để 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 cho đến khi có điều kiện dừng
C. Lặp với số lần lặp xác định trước dựa trên điều kiện phức tạp
D. Thay thế cho vòng lặp `while` trong mọi trường hợp
9. Phương thức `main()` trong Java có vai trò gì?
A. Phương thức khởi tạo của lớp
B. Điểm bắt đầu thực thi của chương trình Java
C. Phương thức hủy đối tượng khi không còn sử dụng
D. Phương thức định nghĩa các thuộc tính chung của lớp
10. Trong Java, từ khóa `static` có ý nghĩa gì khi được sử dụng cho một biến thành viên?
A. Biến chỉ có thể được truy cập từ bên trong lớp
B. Biến thuộc về lớp chứ không phải là đối tượng cụ thể của lớp
C. Biến có giá trị không đổi trong suốt quá trình thực thi
D. Biến chỉ được khởi tạo một lần duy nhất
11. Đâu là ví dụ về tính đóng gói (Encapsulation) trong Java?
A. Sử dụng interface để định nghĩa hành vi
B. Kế thừa thuộc tính từ lớp cha
C. Sử dụng private để ẩn dữ liệu và public methods để truy cập
D. Ghi đè phương thức của lớp cha
12. Trong Java, `constructor` là gì?
A. Một kiểu dữ liệu đặc biệt
B. Một phương thức đặc biệt được gọi khi một đối tượng của lớp được tạo
C. Một từ khóa dùng để khai báo lớp abstract
D. Một loại vòng lặp đặc biệt
13. Phương thức `toString()` trong Java thường được dùng để làm gì?
A. So sánh hai đối tượng
B. Chuyển đổi một đối tượng thành chuỗi ký tự để hiển thị
C. Sao chép một đối tượng
D. Kiểm tra kiểu dữ liệu của đối tượng
14. Trong Java, `garbage collection` là gì?
A. Quá trình biên dịch mã nguồn Java thành bytecode
B. Quá trình quản lý bộ nhớ tự động, giải phóng bộ nhớ không còn được sử dụng
C. Quá trình kiểm tra và xử lý lỗi trong chương trình
D. Quá trình tối ưu hóa hiệu suất chương trình
15. Đoạn code sau in ra kết quả gì: `System.out.println(5 + 2 + `3` + 4 + 5);`
A. 19
B. 7345
C. 739
D. 52345
16. Trong Java, `polymorphism` (đa hình) được thể hiện qua cơ chế nào?
A. Đóng gói (Encapsulation)
B. Kế thừa (Inheritance) và Interface
C. Trừu tượng (Abstraction)
D. Composition
17. Annotation `@Override` trong Java được sử dụng để làm gì?
A. Khai báo một biến hằng số
B. Chỉ ra rằng một phương thức ghi đè phương thức của lớp cha
C. Đánh dấu một phương thức là tĩnh
D. Tạo ra một constructor cho lớp
18. Trong Java Collections Framework, `List`, `Set`, và `Map` là gì?
A. Các kiểu dữ liệu nguyên thủy
B. Các interface định nghĩa các cấu trúc dữ liệu khác nhau
C. Các lớp cơ sở cho xử lý ngoại lệ
D. Các từ khóa để quản lý bộ nhớ
19. Phương thức `parseInt()` thuộc lớp nào trong Java và dùng để làm gì?
A. Lớp `String`, dùng để chuyển đổi chuỗi thành số nguyên
B. Lớp `Integer`, dùng để chuyển đổi chuỗi thành số nguyên
C. Lớp `Math`, dùng để tính toán số nguyên
D. Lớp `System`, dùng để đọc số nguyên từ đầu vào
20. Đâu là cách tạo một luồng (Thread) trong Java?
A. Kế thừa từ lớp `Runnable`
B. Hiện thực interface `Thread`
C. Kế thừa từ lớp `Thread` hoặc hiện thực interface `Runnable`
D. Sử dụng từ khóa `thread` trước khai báo lớp
21. Trong Java, `serialization` là gì?
A. Quá trình mã hóa dữ liệu để bảo mật
B. Quá trình chuyển đổi đối tượng thành một chuỗi byte để lưu trữ hoặc truyền tải
C. Quá trình kiểm tra và xác thực dữ liệu đầu vào
D. Quá trình tối ưu hóa hiệu suất truy vấn dữ liệu
22. Lệnh `try-catch-finally` trong Java được sử dụng để làm gì?
A. Khai báo biến cục bộ
B. Xử lý ngoại lệ (exception handling)
C. Định nghĩa vòng lặp
D. Tạo ra một interface
23. Giả sử bạn có một lớp `Dog` kế thừa từ lớp `Animal`. Khi bạn tạo một đối tượng `Dog` và gán cho biến tham chiếu kiểu `Animal`, bạn có thể gọi được phương thức nào?
A. Chỉ các phương thức được định nghĩa trong lớp `Dog`
B. Chỉ các phương thức được định nghĩa trong lớp `Animal`
C. Các phương thức được định nghĩa trong cả `Animal` và `Dog`, nhưng ưu tiên phương thức của `Dog` nếu ghi đè
D. Không thể gọi phương thức nào vì kiểu tham chiếu và kiểu đối tượng khác nhau
24. Trong Java, `Generic` được giới thiệu để giải quyết vấn đề gì?
A. Tăng tốc độ thực thi chương trình
B. Cung cấp kiểu an toàn (type safety) tại thời điểm biên dịch cho Collections
C. Giảm dung lượng bộ nhớ sử dụng
D. Đơn giản hóa cú pháp khai báo biến
25. JDBC (Java Database Connectivity) được sử dụng để làm gì?
A. Xây dựng giao diện người dùng đồ họa
B. Kết nối và tương tác với cơ sở dữ liệu từ ứng dụng Java
C. Quản lý bộ nhớ trong Java
D. Tạo ra các luồng thực thi song song
26. Trong Java, `lambda expression` là gì?
A. Một loại vòng lặp mới
B. Một cách viết ngắn gọn cho anonymous inner class, đặc biệt là functional interface
C. Một cách khai báo biến hằng số
D. Một cơ chế xử lý ngoại lệ mới
27. Framework Spring Boot trong Java được sử dụng chủ yếu để làm gì?
A. Phát triển ứng dụng desktop
B. Đơn giản hóa việc xây dựng ứng dụng web và microservices dựa trên Spring Framework
C. Xây dựng giao diện người dùng di động
D. Quản lý bộ nhớ cho ứng dụng Java
28. Maven hoặc Gradle là công cụ gì trong phát triển Java?
A. IDE (Integrated Development Environment)
B. Build tool và dependency management tool
C. Công cụ debug code
D. Công cụ quản lý cơ sở dữ liệu
29. Trong lập trình hướng đối tượng (OOP), nguyên tắc `SOLID` là viết tắt của những nguyên tắc nào?
A. Simple, Organized, Logical, Iterative, Detailed
B. Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion
C. Secure, Optimized, Lightweight, Independent, Durable
D. Scalable, Observable, Understandable, Reliable, Deployable
30. Giả sử bạn có một danh sách các đối tượng `Student` và bạn muốn sắp xếp danh sách này theo tên sinh viên. Bạn sẽ sử dụng interface nào trong Java để thực hiện việc này?
A. Iterable
B. Comparable hoặc Comparator
C. Collection
D. Serializable