Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Java - Đề 05 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 lập trình hướng đối tượng Java, khái niệm nào cho phép một lớp con (subclass) kế thừa các thuộc tính và phương thức từ lớp cha (superclass) đồng thời có thể định nghĩa lại các phương thức đó cho phù hợp với ngữ cảnh của lớp con?
- A. Tính đóng gói (Encapsulation)
- B. Tính trừu tượng (Abstraction)
- C. Tính đa hình (Polymorphism)
- D. Tính trừu tượng hóa dữ liệu (Data Abstraction)
Câu 2: Cho đoạn mã Java sau:
```java
public class Vehicle {
public void run() {
System.out.println(
- A. Vehicle is running
- B. Car is running faster
- C. Lỗi biên dịch do không thể gán Car cho Vehicle
- D. Lỗi runtime do phương thức run() bị ghi đè
Câu 3: Phát biểu nào sau đây mô tả đúng nhất về "interface" trong Java?
- A. Interface là một lớp trừu tượng đặc biệt chỉ chứa các thuộc tính tĩnh.
- B. Interface là một lớp chỉ chứa các phương thức có thân hàm (method body).
- C. Interface có thể chứa cả thuộc tính và phương thức có thân hàm.
- D. Interface là một bản thiết kế (blueprint) cho các lớp, định nghĩa các phương thức mà lớp thực thi interface phải cung cấp.
Câu 4: Trong Java, từ khóa "static" được sử dụng để khai báo thành viên tĩnh (static members) của lớp. Điều gì KHÔNG đúng về thành viên tĩnh?
- A. Thành viên tĩnh được chia sẻ bởi tất cả các đối tượng của lớp.
- B. Thành viên tĩnh có thể được truy cập trực tiếp thông qua tên lớp mà không cần tạo đối tượng.
- C. Mỗi đối tượng của lớp có một bản sao riêng của các biến tĩnh.
- D. Phương thức tĩnh không thể truy cập trực tiếp các biến instance (không tĩnh) của lớp.
Câu 5: 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. Index out of bounds
Finally block
- B. 5
Finally block
- C. Index out of bounds
- D. 5
Câu 6: Trong Java Collections Framework, interface nào định nghĩa một tập hợp các phần tử không có thứ tự và không chứa phần tử trùng lặp?
- A. List
- B. Set
- C. Map
- D. Queue
Câu 7: Phương thức nào sau đây của lớp String được sử dụng để so sánh hai chuỗi mà bỏ qua sự khác biệt về chữ hoa chữ thường?
- A. compareTo()
- B. equals()
- C. equalsIgnoreCase()
- D. contains()
Câu 8: Cho đoạn mã Java sau:
```java
String str1 =
- A. References are equal
Values are equal
- B. References are not equal
Values are not equal
- C. References are equal
Values are not equal
- D. References are not equal
Values are equal
Câu 9: Trong Java, cơ chế nào cho phép một lớp có thể được tạo ra từ một lớp đã tồn tại, thừa hưởng các thuộc tính và phương thức của lớp đó?
- A. Kế thừa (Inheritance)
- B. Đóng gói (Encapsulation)
- C. Đa hình (Polymorphism)
- D. Trừu tượng (Abstraction)
Câu 10: Kiểu dữ liệu nào trong Java được sử dụng để lưu trữ một ký tự Unicode duy nhất?
- A. byte
- B. char
- C. int
- D. String
Câu 11: Cho đoạn mã Java sau:
```java
int x = 5;
int y = 10;
// Toán tử điều kiện (ternary operator)
int max = (x > y) ? x : y;
System.out.println(max);
```
Đoạn mã trên sẽ in ra giá trị nào?
- A. 5
- B. true
- C. false
- D. 10
Câu 12: Trong Java, từ khóa nào được sử dụng để gọi constructor của lớp cha từ constructor của lớp con?
- A. this
- B. parent
- C. super
- D. base
Câu 13: Phương thức `parseInt()` thuộc lớp nào trong Java và chức năng của nó là gì?
- A. Lớp String, chuyển đổi một chuỗi thành số thực.
- B. Lớp Integer, chuyển đổi một chuỗi thành số nguyên.
- C. Lớp System, in ra một số nguyên trên console.
- D. Lớp Scanner, đọc một số nguyên từ đầu vào.
Câu 14: Cho đoạn mã Java sau:
```java
public class LoopExample {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
if (i == 3) {
continue;
}
System.out.print(i +
- A. 0 1 2 3 4
- B. 0 1 2
- C. 0 1 2 4
- D. 0 1 2 3
Câu 15: Trong Java, annotation `@Override` được sử dụng để làm gì?
- A. Chỉ ra rằng một phương thức trong lớp con đang ghi đè một phương thức cùng tên từ lớp cha.
- B. Đánh dấu một phương thức là tĩnh (static).
- C. Khai báo một biến là hằng số (constant).
- D. Cho phép thực thi đa luồng (multithreading) trên phương thức.
Câu 16: Cho đoạn mã Java sau:
```java
public class ScopeExample {
int instanceVar = 10;
static int staticVar = 20;
public void method() {
int localVar = 30;
System.out.println(instanceVar + staticVar + localVar);
}
public static void main(String[] args) {
ScopeExample obj = new ScopeExample();
obj.method();
}}
```
Đoạn mã trên sẽ in ra giá trị nào?
Câu 17: Trong Java, "garbage collection" là gì và nó hoạt động như thế nào?
- A. Một kỹ thuật quản lý bộ nhớ thủ công, trong đó lập trình viên phải tự giải phóng bộ nhớ khi không còn sử dụng.
- B. Một quá trình biên dịch mã nguồn Java thành mã máy.
- C. Một cơ chế tự động quản lý bộ nhớ của JVM, giải phóng bộ nhớ mà các đối tượng không còn được tham chiếu đến.
- D. Một loại lỗi runtime xảy ra khi chương trình cố gắng truy cập vào vùng nhớ không hợp lệ.
Câu 18: Cho đoạn mã Java sau:
```java
Integer num1 = 100;
Integer num2 = 100;
Integer num3 = 500;
Integer num4 = 500;
System.out.println(num1 == num2);
System.out.println(num3 == num4);
```
Đoạn mã trên sẽ in ra kết quả gì?
- A. true
true
- B. false
false
- C. true
false
- D. true
false
Câu 19: Trong lập trình đa luồng (multithreading) Java, từ khóa "synchronized" được sử dụng để làm gì?
- A. Tạo ra một luồng mới.
- B. Kiểm soát quyền truy cập đồng thời vào một khối mã hoặc phương thức, đảm bảo tính đồng bộ.
- C. Đình chỉ thực thi của một luồng hiện tại.
- D. Kết thúc một luồng đang chạy.
Câu 20: Interface `Comparable` trong Java được sử dụng để làm gì?
- A. Để tạo ra một bản sao của đối tượng.
- B. Để kiểm tra xem hai đối tượng có thuộc cùng một lớp hay không.
- C. Để định nghĩa cách các đối tượng của một lớp có thể được so sánh với nhau, phục vụ cho việc sắp xếp.
- D. Để chuyển đổi một đối tượng thành một kiểu dữ liệu khác.
Câu 21: Cho đoạn mã Java sau:
```java
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder(
- A. Java Programming
- B. Java Programming
- C. Programming Java
- D. Lỗi runtime
Câu 22: Trong Java, package nào chứa các lớp và interface liên quan đến nhập xuất dữ liệu (I/O)?
- A. java.net
- B. java.io
- C. java.util
- D. java.lang
Câu 23: Phương thức `equals()` và `hashCode()` có mối quan hệ như thế nào trong Java khi sử dụng với các Collections như HashMap và HashSet?
- A. Không có mối quan hệ nào, chúng là hai phương thức độc lập.
- B. `equals()` và `hashCode()` phải luôn trả về giá trị khác nhau.
- C. Nếu `hashCode()` trả về cùng giá trị, `equals()` cũng phải trả về true.
- D. Nếu hai đối tượng bằng nhau theo `equals()`, thì `hashCode()` của chúng phải trả về cùng một giá trị.
Câu 24: Cho đoạn mã Java sau:
```java
List names = new ArrayList<>();
names.add(
- A. 3
- B. 0
- C. 2
- D. Lỗi runtime
Câu 25: Trong Java, "autoboxing" là quá trình chuyển đổi tự động giữa kiểu dữ liệu nguyên thủy (primitive type) và lớp wrapper tương ứng. Phát biểu nào sau đây là đúng về autoboxing?
- A. Autoboxing là quá trình tự động chuyển đổi từ kiểu dữ liệu nguyên thủy sang đối tượng của lớp wrapper tương ứng.
- B. Autoboxing là quá trình tự động chuyển đổi từ đối tượng của lớp wrapper sang kiểu dữ liệu nguyên thủy.
- C. Autoboxing là cơ chế quản lý bộ nhớ tự động trong Java.
- D. Autoboxing là một loại ngoại lệ xảy ra khi chuyển đổi kiểu dữ liệu.
Câu 26: Cho đoạn mã Java sau:
```java
int a = 10;
int b = 20;
swap(a, b);
System.out.println(
- A. a = 20, b = 10
- B. a = 10, b = 20
- C. Lỗi biên dịch do phương thức swap không trả về giá trị.
- D. Lỗi runtime do truy cập biến cục bộ ngoài phạm vi.
Câu 27: Trong Java, "final" là một từ khóa đa năng. Khi được sử dụng với một biến instance, "final" có ý nghĩa gì?
- A. Biến final có thể được truy cập từ bất kỳ đâu trong chương trình.
- B. Giá trị của biến final có thể được thay đổi sau khi khởi tạo.
- C. Biến final phải được khởi tạo giá trị tại thời điểm khai báo hoặc trong constructor và giá trị đó không thể thay đổi sau đó.
- D. Biến final chỉ có thể được sử dụng trong các phương thức tĩnh.
Câu 28: Cho đoạn mã Java sau:
```java
public class ExceptionTest {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println(
- A. Result: Infinity
- B. Result: 0
- C. Lỗi runtime không được xử lý.
- D. Error: / by zero
Câu 29: Trong Java, Stream API được giới thiệu từ phiên bản nào và mục đích chính của nó là gì?
- A. Java 5, để quản lý bộ nhớ hiệu quả hơn.
- B. Java 8, để cung cấp một cách tiếp cận hàm (functional) để xử lý dữ liệu kiểu collection.
- C. Java 7, để cải thiện hiệu năng của máy ảo JVM.
- D. Java 9, để tăng cường tính bảo mật của ứng dụng.
Câu 30: Cho đoạn mã Java sử dụng lambda expression sau:
```java
interface StringOperation {
String operate(String str);
}
public class LambdaExample {
public static void main(String[] args) {
StringOperation toUpperCase = s -> s.toUpperCase();
System.out.println(toUpperCase.operate(
- A. hello
- B. Hello
- C. HELLO
- D. Lỗi biên dịch do sai cú pháp lambda