Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Java - Đề 06 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: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
public void startEngine() {
System.out.println(
- A. Tính đóng gói (Encapsulation)
- B. Tính đa hình (Polymorphism)
- C. Tính kế thừa (Inheritance)
- D. Tính trừu tượng (Abstraction)
Câu 2: Trong Java, từ khóa `static` được sử dụng để khai báo thành viên của lớp. Phát biểu nào sau đây không đúng về thành viên `static`?
- A. Các biến `static` được chia sẻ bởi tất cả các đối tượng của lớp.
- B. Các phương thức `static` có thể được gọi trực tiếp thông qua tên lớp.
- C. Các thành viên `static` chỉ có thể được truy cập từ bên trong lớp chứa chúng.
- D. Các khối `static` được thực thi một lần duy nhất khi lớp được tải.
Câu 3: Cho đoạn mã Java sau:
```java
int[] numbers = {1, 2, 3, 4, 5};
int result = 0;
for (int i = 0; i < numbers.length; i++) {
if (i % 2 == 0) {
result += numbers[i];
}
}
System.out.println(result);
```
Đoạn mã trên in ra giá trị nào?
Câu 4: Phương thức `equals()` và toán tử `==` trong Java dùng để so sánh các đối tượng. Sự khác biệt chính giữa chúng là gì?
- A. `==` so sánh tham chiếu đối tượng, `equals()` so sánh nội dung đối tượng (theo định nghĩa của lớp).
- B. `==` so sánh nội dung đối tượng, `equals()` so sánh tham chiếu đối tượng.
- C. Không có sự khác biệt, cả hai đều so sánh nội dung đối tượng.
- D. Không có sự khác biệt, cả hai đều so sánh tham chiếu đối tượng.
Câu 5: Cho đoạn mã Java sau:
```java
String str1 =
- A. true true
- B. false false
- C. false true
- D. true false
Câu 6: Trong Java, exception (ngoại lệ) được sử dụng để xử lý các tình huống lỗi trong quá trình thực thi chương trình. Loại exception nào sau đây không phải là checked exception?
- A. IOException
- B. NullPointerException
- C. SQLException
- D. FileNotFoundException
Câu 7: Cho đoạn mã Java sau:
```java
try {
int result = 10 / 0;
System.out.println(
- A. Result: Infinity
Finally block executed!
- B. Arithmetic Exception caught!
- C. Arithmetic Exception caught!
Finally block executed!
- D. Chương trình bị crash và không in ra gì.
Câu 8: Giao diện (interface) trong Java được sử dụng để định nghĩa một hợp đồng mà các lớp có thể thực hiện. Phát biểu nào sau đây không đúng về interface trong Java?
- A. Một lớp có thể implement nhiều interface.
- B. Interface chỉ chứa các phương thức trừu tượng (abstract methods).
- C. Interface giúp đạt được tính đa kế thừa (multiple inheritance) về kiểu.
- D. Interface có thể chứa các phương thức có cài đặt (method implementations) từ Java 7 trở về trước.
Câu 9: Cho đoạn mã Java sử dụng Collections Framework:
```java
List names = new ArrayList<>();
names.add(
- A. Bob
- B. Charlie
- C. Alice
- D. IndexOutOfBoundsException
Câu 10: Trong Java, garbage collection (thu gom rác) là một quá trình tự động quản lý bộ nhớ. Mục đích chính của garbage collection là gì?
- A. Tăng tốc độ thực thi chương trình bằng cách tối ưu hóa mã.
- B. Phát hiện và sửa lỗi logic trong chương trình.
- C. Giải phóng bộ nhớ không còn được sử dụng bởi chương trình để tái sử dụng.
- D. Quản lý việc phân bổ bộ nhớ cho các đối tượng mới.
Câu 11: Cho đoạn mã Java sau:
```java
int x = 5;
int y = 10;
// Sử dụng toán tử bitwise AND và OR
int resultAnd = x & y;
int resultOr = x | y;
System.out.println(
- A. AND: 0
OR: 15
- B. AND: 5
OR: 10
- C. AND: 15
OR: 0
- D. AND: 2
OR: 8
Câu 12: Phương thức `substring(int beginIndex, int endIndex)` của lớp `String` trong Java được sử dụng để làm gì?
- A. Thay thế một chuỗi con bằng một chuỗi khác.
- B. Trả về một chuỗi con của chuỗi gốc.
- C. Tìm vị trí xuất hiện đầu tiên của một chuỗi con trong chuỗi gốc.
- D. So sánh hai chuỗi để xác định xem chúng có bằng nhau hay không.
Câu 13: Cho đoạn mã Java sau:
```java
String message =
- A. !dlroW ,olleH
- B. Hello, World!
- C. dlroW, olleH
- D. !dlroW ,olleH
Câu 14: Trong Java, thread (luồng) được sử dụng để thực hiện đồng thời các tác vụ. Phát biểu nào sau đây đúng về thread trong Java?
- A. Mỗi thread có không gian bộ nhớ riêng biệt và không chia sẻ dữ liệu với các thread khác.
- B. Threads cho phép thực hiện đồng thời nhiều phần của một chương trình trong cùng một process.
- C. Threads chỉ có thể được tạo và quản lý bởi hệ điều hành, không phải bởi chương trình Java.
- D. Threads chỉ phù hợp cho các tác vụ đơn giản và không hiệu quả cho các ứng dụng phức tạp.
Câu 15: Cho đoạn mã Java sử dụng lambda expression:
```java
interface StringOperation {
String operate(String str);
}
public class Main {
public static void main(String[] args) {
StringOperation toUpperCase = str -> str.toUpperCase();
String result = toUpperCase.operate(
- A. Tạo lớp vô danh (anonymous class).
- B. Định nghĩa phương thức static.
- C. Biểu diễn functional interface một cách ngắn gọn.
- D. Thực hiện đa luồng (multithreading).
Câu 16: Trong Java, serialization (tuần tự hóa) là quá trình chuyển đổi một đối tượng thành một luồng byte. Mục đích chính của serialization là gì?
- A. Tăng tốc độ truy cập đối tượng trong bộ nhớ.
- B. Lưu trữ và truyền tải đối tượng qua mạng hoặc lưu vào file.
- C. Bảo vệ đối tượng khỏi bị truy cập trái phép.
- D. Tối ưu hóa việc sử dụng bộ nhớ cho đối tượng.
Câu 17: Cho đoạn mã Java sử dụng generics:
```java
public class GenericBox {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
public static void main(String[] args) {
GenericBox integerBox = new GenericBox<>();
integerBox.setContent(10);
int value = integerBox.getContent();
System.out.println(value);
}
}
```
Generics trong Java được sử dụng để cung cấp lợi ích chính nào?
- A. Tăng hiệu suất thực thi chương trình.
- B. Giảm kích thước mã nguồn.
- C. Đơn giản hóa việc quản lý bộ nhớ.
- D. Cung cấp type safety và tái sử dụng mã.
Câu 18: Annotations (chú thích) trong Java cung cấp metadata (dữ liệu về dữ liệu) cho mã nguồn. Mục đích sử dụng annotations phổ biến nhất là gì?
- A. Cung cấp metadata cho trình biên dịch, công cụ build và runtime environment.
- B. Thay thế cho comments để giải thích mã nguồn.
- C. Tăng cường tính bảo mật cho ứng dụng Java.
- D. Tối ưu hóa hiệu suất của mã nguồn.
Câu 19: Cho đoạn mã Java sử dụng try-with-resources:
```java
try (java.io.FileWriter writer = new java.io.FileWriter(
- A. Tăng tốc độ ghi file.
- B. Giảm dung lượng file output.
- C. Tự động đóng tài nguyên sau khi sử dụng, đảm bảo giải phóng tài nguyên.
- D. Đơn giản hóa việc xử lý ngoại lệ khi làm việc với file.
Câu 20: Trong Java, reflection (phản xạ) là một tính năng mạnh mẽ cho phép kiểm tra và sửa đổi hành vi của chương trình tại runtime. Một trong những ứng dụng quan trọng của reflection là gì?
- A. Tối ưu hóa mã bytecode để tăng hiệu suất.
- B. Kiểm tra lỗi cú pháp trong quá trình biên dịch.
- C. Mã hóa và giải mã dữ liệu một cách an toàn.
- D. Xây dựng các framework và thư viện linh hoạt, có khả năng cấu hình động.
Câu 21: Cho đoạn mã Java sử dụng Stream API:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
long evenCount = numbers.stream()
.filter(n -> n % 2 == 0)
.count();
System.out.println(evenCount);
```
Đoạn mã trên tính toán điều gì?
- A. Tổng của các số chẵn trong danh sách.
- B. Số lượng các số chẵn trong danh sách.
- C. Tổng của tất cả các số trong danh sách.
- D. Số lượng các số lẻ trong danh sách.
Câu 22: Trong Java, Design Patterns (mẫu thiết kế) là các giải pháp đã được chứng minh cho các vấn đề thiết kế phần mềm thường gặp. Mẫu thiết kế Singleton thuộc loại nào?
- A. Behavioral Pattern (Mẫu hành vi)
- B. Structural Pattern (Mẫu cấu trúc)
- C. Creational Pattern (Mẫu khởi tạo)
- D. Concurrency Pattern (Mẫu đồng thời)
Câu 23: Cho đoạn mã Java sử dụng inner class (lớp bên trong):
```java
public class OuterClass {
private int outerData = 10;
class InnerClass {
public void displayOuterData() {
System.out.println(
- A. Tăng hiệu suất thực thi chương trình.
- B. Cho phép lớp bên trong truy cập trực tiếp các thành viên private của lớp bên ngoài.
- C. Giảm sự phụ thuộc giữa các lớp.
- D. Đơn giản hóa việc kế thừa giữa các lớp.
Câu 24: Trong Java, JDBC (Java Database Connectivity) API được sử dụng để làm gì?
- A. Xây dựng giao diện người dùng đồ họa (GUI) cho ứng dụng Java.
- B. Quản lý bộ nhớ và garbage collection trong Java.
- C. Kết nối và tương tác với các cơ sở dữ liệu từ chương trình Java.
- D. Thực hiện các phép tính toán học phức tạp trong Java.
Câu 25: Cho đoạn mã Java sử dụng enum (kiểu liệt kê):
```java
public enum DayOfWeek {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class Main {
public static void main(String[] args) {
DayOfWeek today = DayOfWeek.WEDNESDAY;
System.out.println(
- A. Định nghĩa một tập hợp các hằng số được đặt tên.
- B. Tạo lớp con (subclass) từ một lớp cha.
- C. Thực hiện đa luồng (multithreading).
- D. Xử lý ngoại lệ (exception handling).
Câu 26: Trong Java, Javadoc là một công cụ để tạo tài liệu API tự động từ mã nguồn. Javadoc tạo ra tài liệu ở định dạng nào?
- A. Plain text (.txt)
- B. PDF (.pdf)
- C. Markdown (.md)
- D. HTML (.html)
Câu 27: Cho đoạn mã Java sử dụng nested interface (interface lồng nhau):
```java
interface OuterInterface {
interface InnerInterface {
void innerMethod();
}
void outerMethod();
}
class Implementation implements OuterInterface.InnerInterface {
@Override
public void innerMethod() {
System.out.println(
- A. Tăng hiệu suất của interface.
- B. Nhóm các interface liên quan lại với nhau, tăng tính tổ chức.
- C. Cho phép interface implement một interface khác.
- D. Giảm sự phụ thuộc giữa các interface.
Câu 28: Trong Java, classpath là gì?
- A. Tên của lớp chính (main class) trong chương trình Java.
- B. Đường dẫn đến thư mục chứa mã nguồn Java (.java files).
- C. Đường dẫn đến các thư mục và file JAR chứa các lớp (.class files) và tài nguyên.
- D. Cấu hình cho trình biên dịch Java (javac).
Câu 29: Cho đoạn mã Java sử dụng anonymous class (lớp vô danh):
```java
interface Greeting {
void sayHello(String name);
}
public class Main {
public static void main(String[] args) {
Greeting anonymousGreeting = new Greeting() {
@Override
public void sayHello(String name) {
System.out.println(
- A. Khi cần tạo nhiều thể hiện của một lớp.
- B. Khi cần tái sử dụng lớp ở nhiều nơi trong chương trình.
- C. Khi cần tạo một lớp static.
- D. Khi cần implement một interface hoặc lớp trừu tượng một cách ngắn gọn, một lần dùng.
Câu 30: Trong Java, Dependency Injection (DI - tiêm phụ thuộc) là một mẫu thiết kế giúp giảm sự phụ thuộc giữa các thành phần phần mềm. Lợi ích chính của Dependency Injection là gì?
- A. Tăng hiệu suất thực thi của ứng dụng.
- B. Giảm sự phụ thuộc giữa các thành phần, tăng tính module hóa và khả năng kiểm thử.
- C. Đơn giản hóa việc quản lý bộ nhớ và garbage collection.
- D. Tăng cường tính bảo mật cho ứng dụng Java.