1. Đâu là phát biểu đúng về tính đa hình (polymorphism) trong lập trình hướng đối tượng Java?
A. Đa hình cho phép một lớp kế thừa từ nhiều lớp khác.
B. Đa hình cho phép các đối tượng thuộc các lớp khác nhau phản ứng với cùng một thông điệp theo những cách khác nhau.
C. Đa hình là khả năng ẩn giấu thông tin chi tiết bên trong đối tượng.
D. Đa hình đảm bảo tính toàn vẹn dữ liệu của đối tượng.
2. Đâu là từ khóa dùng để khai báo một lớp kế thừa từ lớp khác trong Java?
A. implements
B. extends
C. inherits
D. subclass
3. 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. Gán giá trị của một đối tượng cho đối tượng khác.
D. Kiểm tra xem một đối tượng có phải là null hay không.
4. Trong Java, từ khóa nào được sử dụng để khai báo một biến không thể thay đổi giá trị sau khi khởi tạo?
A. static
B. final
C. const
D. immutable
5. Đâu là cách khai báo một mảng các số nguyên trong Java?
A. int array[];
B. array int[];
C. int[] array;
D. array[] int;
6. Trong Java, 'abstract class' (lớp trừu tượng) là gì?
A. Một lớp không thể có đối tượng.
B. Một lớp có thể có các phương thức trừu tượng (không có phần thân) và/hoặc các phương thức cụ thể.
C. Một lớp được sử dụng để tạo ra các interface.
D. Cả đáp án 2 và 3.
7. Phương thức `main()` trong Java có vai trò gì?
A. Khởi tạo các đối tượng của lớp.
B. Điểm bắt đầu thực thi của một chương trình Java.
C. Định nghĩa các thuộc tính của lớp.
D. Thực hiện garbage collection.
8. Đâu là vòng lặp 'do-while' trong Java?
A. Lặp vô điều kiện.
B. Vòng lặp thực hiện khối lệnh ít nhất một lần, sau đó kiểm tra điều kiện.
C. Vòng lặp thực hiện khối lệnh khi điều kiện sai.
D. Vòng lặp chỉ thực hiện khối lệnh một lần.
9. Trong lập trình hướng đối tượng, 'encapsulation' (tính đóng gói) có nghĩa là gì?
A. Che giấu thông tin và hành vi bên trong đối tượng, chỉ cho phép truy cập thông qua giao diện công khai.
B. Khả năng một lớp kế thừa các thuộc tính và phương thức từ lớp khác.
C. Khả năng các đối tượng thuộc các lớp khác nhau phản ứng với cùng một thông điệp theo những cách khác nhau.
D. Quá trình chuyển đổi kiểu dữ liệu từ kiểu này sang kiểu khác.
10. Trong Java, 'package' (gói) được sử dụng để làm gì?
A. Tăng tốc độ thực thi chương trình.
B. Tổ chức các lớp và interface liên quan vào cùng một không gian tên, giúp quản lý mã nguồn tốt hơn.
C. Bảo mật mã nguồn khỏi bị truy cập trái phép.
D. Tối ưu hóa bộ nhớ sử dụng bởi chương trình.
11. Trong Java, 'inheritance' (tính kế thừa) cho phép điều gì?
A. Một lớp có thể chứa nhiều đối tượng.
B. Một lớp có thể kế thừa các thuộc tính và phương thức từ một lớp khác.
C. Một đối tượng có thể thay đổi kiểu dữ liệu của nó.
D. Một chương trình có thể thực thi đồng thời nhiều tác vụ.
12. 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ỉ chứa các biến final.
D. Một lớp chỉ có thể có một đối tượng duy nhất.
13. Trong Java, từ khóa `super` được sử dụng để làm gì?
A. Tham chiếu đến lớp con hiện tại.
B. Gọi constructor của lớp cha hoặc truy cập các thành viên của lớp cha.
C. Khai báo một lớp là lớp cha.
D. Ngăn chặn một lớp bị kế thừa.
14. Trong Java, 'casting' (ép kiểu) là gì?
A. Tạo ra một bản sao của đối tượng.
B. Chuyển đổi một giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác.
C. Kiểm tra kiểu dữ liệu của một biến.
D. Định nghĩa một kiểu dữ liệu mới.
15. 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. Chỉ định rằng 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ể nào của lớp đó.
C. Đảm bảo rằng một biến chỉ có thể được truy cập từ bên trong lớp.
D. Cho phép một lớp kế thừa từ nhiều lớp khác.
16. Trong Java, 'method overloading' (nạp chồng phương thức) là gì?
A. Viết lại một phương thức của lớp cha trong lớp con.
B. Định nghĩa nhiều phương thức trong cùng một lớp có cùng tên nhưng khác nhau về tham số.
C. Gộp nhiều phương thức thành một phương thức duy nhất.
D. Ẩn giấu chi tiết cài đặt của một phương thức.
17. Trong Java, kiểu dữ liệu nào sau đây không phải là kiểu dữ liệu nguyên thủy?
A. int
B. boolean
C. char
D. String
18. Đâu là một ví dụ về 'design pattern' (mẫu thiết kế) thường được sử dụng trong Java?
A. For loop
B. If-else statement
C. Singleton
D. Array
19. Đâu là một ví dụ về 'collection' trong Java?
A. int
B. String
C. ArrayList
D. char
20. Trong Java, 'constructor' là gì?
A. Một phương thức đặc biệt có cùng tên với lớp, được gọi tự động khi một đối tượng của lớp được tạo ra.
B. Một kiểu dữ liệu đặc biệt để tạo ra các đối tượng.
C. Một từ khóa để khai báo biến toàn cục.
D. Một giao diện để định nghĩa hành vi của lớp.
21. Trong Java, 'thread' (luồng) là gì?
A. Một biến đặc biệt để lưu trữ dữ liệu.
B. Một đường dẫn thực thi tuần tự trong một chương trình, cho phép thực hiện đa nhiệm.
C. Một loại lỗi xảy ra trong quá trình biên dịch.
D. Một kiểu dữ liệu để xử lý chuỗi.
22. Kiểu dữ liệu nào trong Java được sử dụng để lưu trữ giá trị logic (true hoặc false)?
A. int
B. char
C. boolean
D. String
23. Interface trong Java được sử dụng để làm gì?
A. Tạo ra các đối tượng cụ thể.
B. Định nghĩa một hợp đồng mà các lớp có thể thực hiện (implement).
C. Kế thừa trạng thái và hành vi từ lớp cha.
D. Quản lý bộ nhớ cho các đối tượng.
24. Phương thức `System.out.println()` trong Java được sử dụng để làm gì?
A. Đọc dữ liệu từ bàn phím.
B. In dữ liệu ra màn hình console.
C. Ghi dữ liệu vào file.
D. Kết nối với cơ sở dữ liệu.
25. Đâu là cách chú thích một dòng trong Java?
A. // This is a comment
B. /* This is a comment */
C. # This is a comment
D. -- This is a comment
26. Đâu là cách tạo một đối tượng của lớp 'Dog' trong Java?
A. Dog myDog = new Class(Dog);
B. Dog myDog = object Dog();
C. Dog myDog = new Dog();
D. Dog myDog = create Dog;
27. Khái niệm 'garbage collection' trong Java đề cập đến điều gì?
A. Cơ chế thu thập và tái sử dụng bộ nhớ không còn được chương trình sử dụng.
B. Quá trình kiểm tra và sửa lỗi cú pháp trong mã nguồn.
C. Phương pháp tối ưu hóa hiệu suất của chương trình Java.
D. Kỹ thuật bảo mật để ngăn chặn truy cập trái phép vào bộ nhớ.
28. Phương thức `toString()` trong Java có mục đích gì?
A. So sánh hai đối tượng.
B. Chuyển đổi một đối tượng thành một chuỗi ký tự để biểu diễn.
C. Tạo một bản sao của đối tượng.
D. Giải phóng bộ nhớ được cấp phát cho đối tượng.
29. Trong Java, 'Lambda expression' được giới thiệu từ phiên bản nào?
A. Java 1.0
B. Java 5
C. Java 8
D. Java 11
30. Trong Java, exception handling được thực hiện chủ yếu bằng cách sử dụng khối lệnh nào?
A. if-else
B. for loop
C. try-catch
D. switch-case