Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Java - Đề 04 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Trong Java, phát biểu nào sau đây là đúng về tính đóng gói (encapsulation)?
- A. Tính đóng gói chỉ áp dụng cho các biến instance, không áp dụng cho phương thức.
- B. Tính đóng gói là cơ chế ẩn giấu thông tin và bảo vệ dữ liệu của đối tượng, chỉ cho phép truy cập thông qua các phương thức công khai.
- C. Tính đóng gói giúp tăng hiệu suất chương trình bằng cách giảm thiểu việc truy cập trực tiếp vào dữ liệu.
- D. Tính đóng gói chỉ cần thiết khi làm việc với các lớp kế thừa.
Câu 2: Cho đoạn mã Java sau:
```java
public class Example {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
try {
System.out.println(numbers[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(
- A. 5
Hoàn tất
- B. Lỗi truy cập mảng
- C. Lỗi truy cập mảng
Hoàn tất
- D. Chương trình sẽ không biên dịch được
Câu 3: Phương thức `equals()` và toán tử `==` khác nhau như thế nào khi so sánh các đối tượng String trong Java?
- A. Không có sự khác biệt, cả hai đều so sánh giá trị của chuỗi.
- B. Không có sự khác biệt, cả hai đều so sánh tham chiếu của đối tượng.
- C. `equals()` so sánh tham chiếu, còn `==` so sánh giá trị.
- D. `equals()` so sánh giá trị nội dung của chuỗi, còn `==` so sánh tham chiếu (vị trí bộ nhớ) của đối tượng String.
Câu 4: Trong Java, interface và abstract class có điểm chung nào sau đây?
- A. Cả hai đều có thể chứa các phương thức đã được triển khai (có phần thân).
- B. Cả hai đều không thể được khởi tạo trực tiếp (không thể tạo đối tượng trực tiếp từ chúng).
- C. Cả hai đều hỗ trợ đa kế thừa.
- D. Cả hai đều sử dụng từ khóa `extends` để kế thừa.
Câu 5: Cho đoạn mã Java sau:
```java
public class Calculation {
public int calculate(int a, int b) {
return a + b;
}
public double calculate(double a, double b) {
return a * b;
}
}
```
Đoạn mã trên thể hiện khái niệm nào trong lập trình hướng đối tượng?
- A. Nạp chồng phương thức (Method Overloading)
- B. Ghi đè phương thức (Method Overriding)
- C. Tính kế thừa (Inheritance)
- D. Tính đóng gói (Encapsulation)
Câu 6: Từ khóa `static` trong Java được sử dụng để làm gì?
- A. Khai báo một biến là hằng số, giá trị không thể thay đổi sau khi khởi tạo.
- B. Chỉ định rằng một lớp không thể được kế thừa.
- C. Tạo ra các thành viên (biến, phương thức, khối) thuộc về lớp chứ không phải đối tượng cụ thể của lớp đó.
- D. Cho phép một phương thức có thể được gọi từ bất kỳ đâu trong chương trình.
Câu 7: Cho đoạn mã Java sau:
```java
List names = new ArrayList<>();
names.add(
Câu 8: Vòng lặp `for-each` trong Java được sử dụng chủ yếu để làm gì?
- A. Thực hiện lặp vô hạn cho đến khi có điều kiện dừng.
- B. Lặp qua một khối mã với số lần lặp xác định trước dựa trên một điều kiện.
- C. Tạo ra một vòng lặp dựa trên chỉ số của phần tử trong mảng.
- D. Duyệt qua tất cả các phần tử của một mảng hoặc Collection một cách tuần tự.
Câu 9: Cho biết kết quả của biểu thức `5 > 3 && 2 < 4 || !(1 == 1)` trong Java.
- A. true
- B. false
- C. 1
- D. 0
Câu 10: Trong Java, kiểu dữ liệu nào sau đây được sử dụng để lưu trữ một ký tự Unicode?
- A. byte
- B. int
- C. char
- D. String
Câu 11: Sự khác biệt chính giữa `StringBuilder` và `StringBuffer` trong Java là gì?
- A. `StringBuilder` là bất biến (immutable), còn `StringBuffer` là khả biến (mutable).
- B. `StringBuffer` là thread-safe (an toàn luồng), còn `StringBuilder` thì không.
- C. `StringBuilder` có thể lưu trữ chuỗi dài hơn `StringBuffer`.
- D. `StringBuffer` được giới thiệu trong các phiên bản Java mới hơn `StringBuilder`.
Câu 12: Cho đoạn mã Java sau:
```java
public class ScopeExample {
int x = 10; // Biến instance
public void methodA() {
int y = 20; // Biến local
System.out.println(
- A. Tính kế thừa (Inheritance)
- B. Tính đóng gói (Encapsulation)
- C. Phạm vi biến (Variable Scope)
- D. Đa hình (Polymorphism)
Câu 13: Trong lập trình hướng đối tượng, "tính kế thừa" (inheritance) mang lại lợi ích chính nào?
- A. Tăng tốc độ thực thi chương trình.
- B. Tái sử dụng mã nguồn và giảm sự trùng lặp.
- C. Cải thiện tính bảo mật của dữ liệu.
- D. Giảm kích thước bộ nhớ sử dụng của chương trình.
Câu 14: Phương thức `finalize()` trong Java được sử dụng để làm gì?
- A. Khởi tạo giá trị ban đầu cho các biến instance của đối tượng.
- B. Thực hiện các thao tác dọn dẹp ngay khi đối tượng không còn được tham chiếu đến nữa một cách chắc chắn.
- C. Giải phóng bộ nhớ mà đối tượng đang chiếm giữ ngay lập tức.
- D. Thực hiện các hoạt động dọn dẹp tài nguyên (ví dụ: đóng file, giải phóng kết nối) trước khi đối tượng bị thu gom bởi garbage collector (mặc dù việc thực thi không đảm bảo).
Câu 15: Cho đoạn mã Java sau:
```java
int x = 10;
int y = x++;
int z = ++x;
System.out.println(
- A. x=11, y=11, z=12
- B. x=12, y=10, z=12
- C. x=12, y=11, z=11
- D. x=10, y=10, z=10
Câu 16: Trong Java, annotation (chú thích) được sử dụng để làm gì?
- A. Thay thế hoàn toàn cho comment (chú thích thông thường) trong code.
- B. Thay đổi cách biên dịch và thực thi của chương trình một cách trực tiếp.
- C. Cung cấp metadata (dữ liệu về dữ liệu) cho compiler, JVM hoặc các framework/library khác để xử lý.
- D. Tăng hiệu suất của chương trình bằng cách tối ưu hóa mã nguồn.
Câu 17: Cho đoạn mã Java sau:
```java
public class TernaryOperator {
public static void main(String[] args) {
int age = 20;
String message = (age >= 18) ?
- A. Toán tử gán (=)
- B. Toán tử logic AND (&&)
- C. Toán tử so sánh lớn hơn hoặc bằng (>=)
- D. Toán tử ternary (điều kiện) (? 🙂
Câu 18: Trong Java, "garbage collection" (thu gom rác) là quá trình gì?
- A. Quá trình JVM tự động giải phóng bộ nhớ không còn được chương trình sử dụng.
- B. Quá trình lập trình viên chủ động giải phóng bộ nhớ bằng từ khóa `delete`.
- C. Quá trình hệ điều hành quản lý bộ nhớ cho các ứng dụng Java.
- D. Quá trình tối ưu hóa bộ nhớ để chương trình chạy nhanh hơn.
Câu 19: Cho đoạn mã Java sau:
```java
public class IncrementExample {
public static void main(String[] args) {
int count = 5;
increaseCount(count);
System.out.println(count);
}
public static void increaseCount(int value) {
value++;
}
}
```
Kết quả in ra của đoạn mã trên là gì?
- A. 6
- B. Lỗi biên dịch
- C. 5
- D. Chương trình không in ra gì
Câu 20: Trong Java, package (gói) được sử dụng để làm gì?
- A. Tăng tốc độ biên dịch chương trình.
- B. Tổ chức và quản lý các lớp, interface liên quan, tránh xung đột tên và phân loại chức năng.
- C. Nén code để giảm kích thước file .class.
- D. Tăng cường tính bảo mật bằng cách ẩn code nguồn.
Câu 21: Cho đoạn mã Java sau:
```java
public class ModuloExample {
public static void main(String[] args) {
int result = 17 % 5;
System.out.println(result);
}
}
```
Kết quả in ra của đoạn mã trên là gì?
Câu 22: Trong Java, "constructor" (hàm tạo) có vai trò chính là gì?
- A. Giải phóng bộ nhớ khi đối tượng không còn được sử dụng.
- B. Thay đổi trạng thái của đối tượng sau khi đã được tạo.
- C. Khởi tạo đối tượng và thiết lập giá trị ban đầu cho các thuộc tính (biến instance).
- D. Gọi các phương thức khác của lớp.
Câu 23: Cho đoạn mã Java sau:
```java
String str1 =
- A. true
true
- B. false
true
- C. true
false
- D. false
false
Câu 24: Trong Java, từ khóa `final` có thể được sử dụng với biến, class và method. Ý nghĩa của `final` khi sử dụng với class là gì?
- A. Class đó phải được khởi tạo cuối cùng trong chương trình.
- B. Class đó không thể chứa bất kỳ phương thức nào.
- C. Class đó không thể được kế thừa bởi bất kỳ class nào khác.
- D. Các biến instance của class đó phải là final.
Câu 25: Cho đoạn mã Java sau:
```java
public class LoopExample {
public static void main(String[] args) {
for (int i = 0; i < 5; ) {
System.out.println(i);
i++;
}
}
}
```
Đoạn mã trên sẽ in ra các số nào?
- A. 0
1
2
3
4
- B. 1
2
3
4
5
- C. 0
2
4
- D. Vòng lặp vô hạn
Câu 26: Trong Java, "checked exception" và "unchecked exception" khác nhau như thế nào?
- A. Checked exception xảy ra khi có lỗi cú pháp, unchecked exception xảy ra khi có lỗi logic.
- B. Checked exception phải được xử lý (bằng try-catch hoặc throws) tại thời điểm biên dịch, unchecked exception thì không.
- C. Checked exception là các lỗi nghiêm trọng, unchecked exception là các lỗi nhẹ.
- D. Checked exception chỉ xảy ra trong quá trình runtime, unchecked exception chỉ xảy ra trong quá trình biên dịch.
Câu 27: Cho đoạn mã Java sau:
```java
public class ArrayExample {
public static void main(String[] args) {
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
System.out.println(matrix[1][2]);
}
}
```
Kết quả in ra của đoạn mã trên là gì?
Câu 28: Trong Java, "đa luồng" (multithreading) được sử dụng để làm gì?
- A. Tăng tính bảo mật cho ứng dụng Java.
- B. Giảm kích thước bộ nhớ sử dụng của ứng dụng.
- C. Đơn giản hóa việc viết code.
- D. Thực hiện nhiều tác vụ đồng thời trong một chương trình, tận dụng khả năng xử lý song song của CPU và cải thiện hiệu suất.
Câu 29: Cho đoạn mã Java sau:
```java
public class StringExample {
public static void main(String[] args) {
String text =
- A. Hello,
- B. Hello
- C. World
- D. Hello, World!
Câu 30: Trong Java, Adapter Pattern thuộc nhóm Design Pattern nào?
- A. Creational Patterns
- B. Behavioral Patterns
- C. Structural Patterns
- D. Concurrency Patterns