15+ Đề Thi Thử Trắc Nghiệm – Môn Java

Đề 01

Đề 02

Đề 03

Đề 04

Đề 05

Đề 06

Đề 07

Đề 08

Đề 09

Đề 10

Đề 11

Đề 12

Đề 13

Đề 14

Đề 15

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 01

Trắc nghiệm Java - Đề 01 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 mô tả đúng nhất về tính đóng gói (encapsulation) trong lập trình hướng đối tượng?

  • A. Khả năng 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.
  • B. Cơ chế ẩn giấu thông tin và dữ liệu bên trong đối tượng, chỉ cho phép truy cập thông qua các phương thức công khai.
  • C. Cách thức một đối tượng có thể có nhiều hình thức khác nhau, cho phép gọi cùng một phương thức trên các đối tượng 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 một cách tự động.

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName;
public Vehicle(String model) {
this.modelName = model;
}
}

public class Car extends Vehicle {
private int numberOfDoors;
public Car(String model, int doors) {
super(model);
this.numberOfDoors = doors;
}
public String getDetails() {
return

  • A. Đóng gói (Encapsulation)
  • B. Trừu tượng hóa (Abstraction)
  • C. Kế thừa (Inheritance)
  • D. Đa hình (Polymorphism)

Câu 3: 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 là đúng về thành viên `static`?

  • A. Thành viên `static` chỉ có thể được truy cập từ bên trong lớp chứa nó.
  • B. Giá trị của biến `static` là duy nhất cho mỗi đối tượng của lớp.
  • C. Phương thức `static` luôn cần một đối tượng cụ thể của lớp để được gọi.
  • D. Thành viên `static` thuộc về lớp chứ không phải bất kỳ đối tượng cụ thể nào của lớp đó.

Câu 4: Cho đoạn code Java sau:
```java
int[] numbers = {5, 2, 8, 1, 9};
int result = 0;
for (int number : numbers) {
if (number % 2 == 0) {
result += number;
}
}
System.out.println(result);
```
Đoạn code trên sẽ in ra giá trị nào?

  • A. 15
  • B. 10
  • C. 25
  • D. 0

Câu 5: Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu dữ liệu nguyên thủy (primitive data type) trong Java?

  • A. int
  • B. boolean
  • C. String
  • D. char

Câu 6: Trong Java, interface và abstract class có điểm gì khác biệt chính?

  • A. Một lớp có thể implements nhiều interface, nhưng chỉ có thể extends một abstract class.
  • B. Abstract class chỉ có thể chứa các phương thức trừu tượng, còn interface thì không.
  • C. Interface có thể có thuộc tính (instance variables), còn abstract class thì không.
  • D. Abstract class không thể được khởi tạo đối tượng, còn interface thì có thể.

Câu 7: 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. `equals()` so sánh tham chiếu đối tượng, còn `==` so sánh giá trị thuộc tính của đối tượng.
  • B. Không có sự khác biệt, `equals()` và `==` có thể dùng thay thế cho nhau trong mọi trường hợp.
  • C. `==` chỉ dùng được cho kiểu dữ liệu nguyên thủy, còn `equals()` dùng cho đối tượng.
  • D. `==` so sánh tham chiếu đối tượng (reference equality), còn `equals()` so sánh nội dung đối tượng (content equality).

Câu 8: Cho đoạn code Java sau:
```java
String str1 =

  • A. true true
  • B. false false
  • C. false true
  • D. true false

Câu 9: Trong Java, exception handling được thực hiện bằng khối lệnh `try-catch-finally`. Mục đích của khối `finally` là gì?

  • A. Để bắt và xử lý các ngoại lệ (exceptions) có thể xảy ra trong khối `try`.
  • B. Để đảm bảo một đoạn code luôn được thực thi, bất kể có xảy ra ngoại lệ hay không.
  • C. Để khai báo các loại ngoại lệ mà phương thức có thể ném ra.
  • D. Để tạo ra một ngoại lệ mới và ném nó đi.

Câu 10: Cho đoạn code Java sau:
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
```
Đoạn code trên thể hiện khái niệm nào trong OOP?

  • A. Kế thừa (Inheritance)
  • B. Đóng gói (Encapsulation)
  • C. Trừu tượng hóa (Abstraction)
  • D. Đa hình (Polymorphism) - cụ thể là Overloading

Câu 11: Phát biểu nào sau đây mô tả đúng nhất về garbage collection trong Java?

  • A. Một cơ chế quản lý bộ nhớ thủ công, yêu cầu 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 phần của trình biên dịch Java, tối ưu hóa việc sử dụng bộ nhớ trước khi chương trình chạy.
  • C. Một tiến trình tự động giải phóng bộ nhớ đã cấp phát cho các đối tượng không còn được tham chiếu đến.
  • D. Một kỹ thuật để ngăn chặn rò rỉ bộ nhớ bằng cách kiểm tra và sửa lỗi trong code.

Câu 12: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Khi được sử dụng với một lớp, ý nghĩa của `final` là gì?

  • A. Lớp đó trở thành lớp trừu tượng (abstract class).
  • B. Lớp đó không thể được kế thừa (subclassed).
  • C. Các phương thức trong lớp đó không thể bị ghi đè (overridden).
  • D. Các đối tượng của lớp đó không thể thay đổi trạng thái sau khi khởi tạo.

Câu 13: Cho đoạn code Java sau:
```java
List names = new ArrayList<>();
names.add(

  • A. 3
  • B. 1
  • C. 2
  • D. 0

Câu 14: Trong Java, vòng lặp `do-while` khác với vòng lặp `while` ở điểm nào?

  • A. Vòng lặp `do-while` luôn thực hiện ít nhất một lần, trong khi `while` có thể không thực hiện lần nào.
  • B. Vòng lặp `while` kiểm tra điều kiện lặp sau mỗi lần thực hiện, còn `do-while` kiểm tra trước khi thực hiện.
  • C. Không có sự khác biệt, `do-while` và `while` có thể dùng thay thế cho nhau trong mọi trường hợp.
  • D. Vòng lặp `do-while` đảm bảo khối lệnh bên trong được thực thi ít nhất một lần, ngay cả khi điều kiện lặp ban đầu là sai.

Câu 15: Toán tử `%` trong Java được gọi là toán tử modulo. Chức năng của toán tử này là gì?

  • A. Tính thương của phép chia hai số.
  • B. Tính phần dư của phép chia hai số nguyên.
  • C. Tính lũy thừa của một số.
  • D. Kiểm tra xem một số có phải là số chẵn hay không.

Câu 16: Cho đoạn code Java sau:
```java
int x = 10;
int y = 5;
String result = (x > y) ?

  • A. Toán tử ternary, in ra: x lớn hơn y
  • B. Toán tử gán, in ra: x lớn hơn y
  • C. Toán tử logic AND, in ra: y lớn hơn hoặc bằng x
  • D. Toán tử bitwise OR, in ra: y lớn hơn hoặc bằng x

Câu 17: Trong Java, package được sử dụng để tổ chức các lớp và interface. Mục đích chính của việc sử dụng package là gì?

  • A. Tăng tốc độ biên dịch chương trình Java.
  • B. Giảm kích thước file bytecode (.class).
  • C. Ngăn ngừa xung đột tên giữa các lớp và tổ chức code một cách logic.
  • D. Cải thiện hiệu suất runtime của chương trình Java.

Câu 18: Phương thức `main()` trong Java có signature là `public static void main(String[] args)`. Giải thích ý nghĩa của từ khóa `static` trong signature này.

  • A. Phương thức `main()` có thể được ghi đè (overridden) trong lớp con.
  • B. Phương thức `main()` chỉ có thể truy cập các biến static khác trong cùng lớp.
  • C. Phương thức `main()` được gọi tự động khi một đối tượng của lớp được tạo ra.
  • D. Phương thức `main()` có thể được gọi mà không cần tạo ra đối tượng nào của lớp chứa nó.

Câu 19: Trong Java, autoboxing và unboxing là gì?

  • A. Kỹ thuật tối ưu hóa hiệu suất bộ nhớ bằng cách tái sử dụng các đối tượng.
  • B. Cơ chế tự động chuyển đổi giữa kiểu dữ liệu nguyên thủy (primitive) và lớp wrapper tương ứng.
  • C. Quá trình đóng gói và giải nén dữ liệu để truyền qua mạng.
  • D. Phương pháp để tạo ra các đối tượng immutable (bất biến).

Câu 20: Cho đoạn code Java sau:
```java
Integer num1 = 100;
Integer num2 = 100;
Integer num3 = 500;
Integer num4 = 500;
System.out.println((num1 == num2) +

  • A. true true
  • B. false false
  • C. true false
  • D. false true

Câu 21: Trong Java, Serialization là quá trình chuyển đổi một đối tượng thành một chuỗi byte. Mục đích chính của Serialization là gì?

  • A. Để lưu trữ trạng thái của đối tượng xuống file hoặc truyền qua mạng.
  • B. Để tăng tốc độ truy cập vào thuộc tính của đối tượng.
  • C. Để bảo vệ dữ liệu của đối tượng khỏi bị truy cập trái phép.
  • D. Để tạo ra bản sao sâu (deep copy) của đối tượng.

Câu 22: Phát biểu nào sau đây mô tả đúng nhất về Lambda Expression trong Java?

  • A. Một cách khai báo biến hằng số trong Java.
  • B. Một cách biểu diễn ngắn gọn cho anonymous inner class, đặc biệt là functional interface.
  • C. Một loại vòng lặp mới được giới thiệu trong Java 8.
  • D. Một cơ chế để xử lý ngoại lệ (exceptions) một cách hiệu quả hơn.

Câu 23: Cho đoạn code Java sử dụng Stream API:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5);
int sumOfSquares = numbers.stream()
.filter(n -> n % 2 != 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println(sumOfSquares);
```
Đoạn code trên tính toán giá trị nào?

  • A. 15
  • B. 30
  • C. 55
  • D. 35

Câu 24: Trong Java, Concurrent programming (lập trình song song) thường sử dụng Threads và Executors. Executor framework giúp giải quyết vấn đề gì so với việc trực tiếp quản lý Threads?

  • A. Executor framework giúp tăng tốc độ thực thi chương trình bằng cách sử dụng nhiều CPU cores hơn.
  • B. Executor framework cung cấp cơ chế đồng bộ hóa tốt hơn giữa các threads.
  • C. Executor framework giúp quản lý thread pool hiệu quả hơn, giảm overhead tạo và hủy threads.
  • D. Executor framework cho phép tạo ra các threads bất tử (immortal threads) không bao giờ kết thúc.

Câu 25: Annotation trong Java được sử dụng để cung cấp metadata về code. Loại annotation nào được giữ lại ở runtime và có thể được truy cập thông qua Reflection?

  • A. @Deprecated
  • B. @Retention(RetentionPolicy.RUNTIME)
  • C. @Override
  • D. @SuppressWarnings

Câu 26: Giả sử bạn có một lớp `Person` với thuộc tính `name` và `age`. Bạn muốn sắp xếp một danh sách các đối tượng `Person` theo tuổi tăng dần. Cách nào sau đây là tốt nhất để thực hiện việc này trong Java?

  • A. Sử dụng vòng lặp for và thuật toán sắp xếp bubble sort tự viết.
  • B. Chuyển danh sách `Person` thành mảng và sử dụng `Arrays.sort()` mà không cung cấp Comparator.
  • C. Implement interface `Comparable` trong lớp `Person` hoặc sử dụng `Comparator` với `Collections.sort()`.
  • D. Sử dụng `HashSet` để lưu trữ các đối tượng `Person` và sau đó chuyển thành `ArrayList` để sắp xếp.

Câu 27: Dependency Injection (DI) là một design pattern quan trọng trong Java và các ngôn ngữ OOP khác. Lợi ích chính của việc sử dụng DI là gì?

  • A. Tăng hiệu suất runtime của ứng dụng Java.
  • B. Giảm kích thước code và số lượng lớp cần thiết.
  • C. Cải thiện khả năng bảo mật của ứng dụng.
  • D. Tăng tính module hóa, khả năng tái sử dụng và dễ dàng kiểm thử (testability) của code.

Câu 28: Trong Java Web application, Servlet container (ví dụ: Tomcat) có vai trò gì?

  • A. Cung cấp môi trường runtime cho Servlets, quản lý lifecycle của Servlets và xử lý request/response.
  • B. Biên dịch code Java thành bytecode để chạy trên server.
  • C. Quản lý database connection và thực hiện truy vấn dữ liệu.
  • D. Cung cấp giao diện người dùng (UI) cho web application.

Câu 29: JDBC (Java Database Connectivity) được sử dụng để làm gì trong Java?

  • A. Để tạo giao diện người dùng đồ họa (GUI) cho ứng dụng Java.
  • B. Để kết nối và tương tác với các hệ quản trị cơ sở dữ liệu (DBMS) khác nhau từ ứng dụng Java.
  • C. Để quản lý bộ nhớ và garbage collection trong Java.
  • D. Để phát triển các ứng dụng web server bằng Java.

Câu 30: Cho đoạn code Java sau:
```java
import java.util.Optional;

public class Example {
public static void main(String[] args) {
Optional name = Optional.ofNullable(null);
String result = name.orElse(

  • A. null
  • B. Rỗng
  • C. Unknown
  • D. NoSuchElementException

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 1: Trong Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation) trong lập trình hướng đối tượng?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName;
public Vehicle(String model) {
this.modelName = model;
}
}

public class Car extends Vehicle {
private int numberOfDoors;
public Car(String model, int doors) {
super(model);
this.numberOfDoors = doors;
}
public String getDetails() {
return "Model: " + modelName + ", Doors: " + numberOfDoors;
}
}

public class Main {
public static void main(String[] args) {
Car myCar = new Car("Sedan", 4);
System.out.println(myCar.getDetails());
}
}
```
Đoạn mã trên minh họa khái niệm OOP nào?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 3: 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 là đúng về thành viên `static`?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 4: Cho đoạn code Java sau:
```java
int[] numbers = {5, 2, 8, 1, 9};
int result = 0;
for (int number : numbers) {
if (number % 2 == 0) {
result += number;
}
}
System.out.println(result);
```
Đoạn code trên sẽ in ra giá trị nào?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 5: Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu dữ liệu nguyên thủy (primitive data type) trong Java?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 6: Trong Java, interface và abstract class có điểm gì khác biệt chính?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 7: 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ì?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 8: Cho đoạn code Java sau:
```java
String str1 = "Hello";
String str2 = new String("Hello");
boolean result1 = (str1 == str2);
boolean result2 = str1.equals(str2);
System.out.println(result1 + " " + result2);
```
Kết quả in ra của đoạn code trên là gì?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 9: Trong Java, exception handling được thực hiện bằng khối lệnh `try-catch-finally`. Mục đích của khối `finally` là gì?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 10: Cho đoạn code Java sau:
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
```
Đoạn code trên thể hiện khái niệm nào trong OOP?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 11: Phát biểu nào sau đây mô tả đúng nhất về garbage collection trong Java?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 12: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Khi được sử dụng với một lớp, ý nghĩa của `final` là gì?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 13: Cho đoạn code Java sau:
```java
List names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
names.remove(1);
System.out.println(names.size());
```
Đoạn code trên sẽ in ra giá trị nào?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 14: Trong Java, vòng lặp `do-while` khác với vòng lặp `while` ở điểm nào?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 15: Toán tử `%` trong Java được gọi là toán tử modulo. Chức năng của toán tử này là gì?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 16: Cho đoạn code Java sau:
```java
int x = 10;
int y = 5;
String result = (x > y) ? "x lớn hơn y" : "y lớn hơn hoặc bằng x";
System.out.println(result);
```
Đoạn code trên sử dụng toán tử gì và sẽ in ra kết quả nào?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 17: Trong Java, package được sử dụng để tổ chức các lớp và interface. Mục đích chính của việc sử dụng package là gì?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 18: Phương thức `main()` trong Java có signature là `public static void main(String[] args)`. Giải thích ý nghĩa của từ khóa `static` trong signature này.

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 19: Trong Java, autoboxing và unboxing là gì?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 20: Cho đoạn code Java sau:
```java
Integer num1 = 100;
Integer num2 = 100;
Integer num3 = 500;
Integer num4 = 500;
System.out.println((num1 == num2) + " " + (num3 == num4));
```
Kết quả in ra của đoạn code trên là gì?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 21: Trong Java, Serialization là quá trình chuyển đổi một đối tượng thành một chuỗi byte. Mục đích chính của Serialization là gì?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 22: Phát biểu nào sau đây mô tả đúng nhất về Lambda Expression trong Java?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 23: Cho đoạn code Java sử dụng Stream API:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5);
int sumOfSquares = numbers.stream()
.filter(n -> n % 2 != 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println(sumOfSquares);
```
Đoạn code trên tính toán giá trị nào?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 24: Trong Java, Concurrent programming (lập trình song song) thường sử dụng Threads và Executors. Executor framework giúp giải quyết vấn đề gì so với việc trực tiếp quản lý Threads?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 25: Annotation trong Java được sử dụng để cung cấp metadata về code. Loại annotation nào được giữ lại ở runtime và có thể được truy cập thông qua Reflection?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 26: Giả sử bạn có một lớp `Person` với thuộc tính `name` và `age`. Bạn muốn sắp xếp một danh sách các đối tượng `Person` theo tuổi tăng dần. Cách nào sau đây là tốt nhất để thực hiện việc này trong Java?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 27: Dependency Injection (DI) là một design pattern quan trọng trong Java và các ngôn ngữ OOP khác. Lợi ích chính của việc sử dụng DI là gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 28: Trong Java Web application, Servlet container (ví dụ: Tomcat) có vai trò gì?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 29: JDBC (Java Database Connectivity) được sử dụng để làm gì trong Java?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 01

Câu 30: Cho đoạn code Java sau:
```java
import java.util.Optional;

public class Example {
public static void main(String[] args) {
Optional name = Optional.ofNullable(null);
String result = name.orElse("Unknown");
System.out.println(result);
}
}
```
Đoạn code trên sử dụng `Optional` class từ Java 8. Kết quả in ra sẽ là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 02

Trắc nghiệm Java - Đề 02 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 mô tả đúng nhất về tính đóng gói (encapsulation) trong lập trình hướng đối tượng?

  • A. Tính đóng gói là cơ chế 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.
  • B. Tính đóng gói là việc gói dữ liệu (thuộc tính) và phương thức thao tác trên dữ liệu đó vào trong một đơn vị duy nhất (lớp), đồng thời che giấu thông tin chi tiết bên trong đối tượng và 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 là khả năng một đối tượng thuộc lớp con có thể thay thế hành vi của đối tượng thuộc lớp cha.
  • D. Tính đóng gói là cách thức Java quản lý bộ nhớ tự động, giải phóng bộ nhớ không còn được sử dụng.

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName =

  • A. Tính kế thừa (Inheritance)
  • B. Tính trừu tượng (Abstraction)
  • C. Tính đa hình (Polymorphism)
  • D. Tính đóng gói (Encapsulation)

Câu 3: Trong Java, từ khóa `static` được sử dụng để khai báo thành viên tĩnh của lớp. Phát biểu nào sau đây là đúng về biến tĩnh?

  • A. Biến tĩnh được khởi tạo lại mỗi khi một đối tượng của lớp được tạo ra.
  • B. Biến tĩnh chỉ có thể được truy cập từ bên trong cùng một lớp.
  • C. Biến tĩnh không thể được thay đổi giá trị sau khi đã được khởi tạo.
  • D. Biến tĩnh được chia sẻ bởi tất cả các đối tượng của lớp, và chỉ có một bản sao duy nhất tồn tại trong bộ nhớ.

Câu 4: Cho đoạn mã Java sau:
```java
String str1 =

  • A. true
    true
  • B. false
    true
  • C. true
    false
  • D. false
    false

Câu 5: Trong Java, exception handling (xử lý ngoại lệ) được thực hiện bằng cách sử dụng các khối `try`, `catch` và `finally`. Mục đích chính của khối `finally` là gì?

  • A. Để bắt và xử lý các ngoại lệ cụ thể có thể xảy ra trong khối `try`.
  • B. Để khai báo các ngoại lệ mà một phương thức có thể ném ra.
  • C. Để đảm bảo một đoạn mã luôn được thực thi, bất kể có ngoại lệ xảy ra hay không, thường dùng để giải phóng tài nguyên.
  • D. Để tạo ra các ngoại lệ tùy chỉnh trong Java.

Câu 6: Phát biểu nào sau đây mô tả đúng nhất về interface (giao diện) trong Java?

  • A. Interface là một blueprint (bản thiết kế) cho một lớp, định nghĩa một tập hợp các phương thức trừu tượng mà các lớp thực thi interface phải cung cấp triển khai.
  • B. Interface là một lớp đặc biệt chỉ chứa các biến tĩnh và phương thức tĩnh.
  • C. Interface là một lớp trừu tượng mà từ đó không thể tạo ra đối tượng.
  • D. Interface là một cơ chế để đạt được đa kế thừa trong Java.

Câu 7: Cho đoạn mã Java sau:
```java
List names = new ArrayList<>();
names.add(

  • A. Lỗi biên dịch do không thể sử dụng `startsWith()` với kiểu String.
  • B. Đoạn mã sẽ chạy thành công và in ra `[Alice, Charlie]`.
  • C. Đoạn mã sẽ chạy thành công và in ra `[Alice, Bob, Charlie]`.
  • D. Lỗi `ConcurrentModificationException` vì collection bị thay đổi trong khi đang lặp qua nó bằng for-each.

Câu 8: Trong Java, garbage collection (thu gom rác) là một tiến trình tự động quản lý bộ nhớ. Phát biểu nào sau đây mô tả đúng nhất về garbage collection?

  • A. Garbage collection là quá trình giải phóng bộ nhớ được thực hiện bởi lập trình viên một cách thủ công.
  • B. Garbage collection là quá trình tự động xác định và giải phóng bộ nhớ không còn được tham chiếu bởi bất kỳ phần nào của chương trình.
  • C. Garbage collection chỉ hoạt động khi bộ nhớ của hệ thống gần đầy.
  • D. Garbage collection là một tính năng chỉ có trong các phiên bản Java mới nhất.

Câu 9: Cho đoạn mã Java sau:
```java
int x = 5;
int y = 10;

// Toán tử bitwise
int result = x & y;
System.out.println(result);
```
Kết quả in ra của đoạn mã trên là gì?

  • A. 15
  • B. 50
  • C. 0
  • D. 1

Câu 10: Trong Java, thread (luồng) là một đơn vị thực thi song song. Mục đích chính của việc sử dụng đa luồng (multithreading) là gì?

  • A. Để giảm độ phức tạp của mã nguồn.
  • B. Để cải thiện hiệu suất chương trình bằng cách thực hiện song song các tác vụ, đặc biệt trong các ứng dụng I/O-bound và CPU-bound.
  • C. Để đảm bảo tính bảo mật của ứng dụng.
  • D. Để đơn giản hóa việc quản lý bộ nhớ.

Câu 11: Phát biểu nào sau đây là đúng về anonymous inner class (lớp nội tại vô danh) trong Java?

  • A. Anonymous inner class là một lớp nội tại không có tên, thường được sử dụng để tạo ra một thể hiện của một interface hoặc lớp trừu tượng một cách ngắn gọn.
  • B. Anonymous inner class là một lớp nội tại có thể được truy cập từ bất kỳ lớp nào khác.
  • C. Anonymous inner class là một lớp nội tại chỉ chứa các phương thức tĩnh.
  • D. Anonymous inner class là một lớp nội tại được sử dụng để tạo ra các đối tượng singleton.

Câu 12: Cho đoạn mã Java sau:
```java
Integer num1 = 1000;
Integer num2 = 1000;

System.out.println(num1 == num2);

Integer num3 = 100;
Integer num4 = 100;

System.out.println(num3 == num4);
```
Kết quả in ra của đoạn mã trên là gì?

  • A. true
    true
  • B. false
    true
  • C. true
    false
  • D. false
    false

Câu 13: Trong Java, Serializable interface được sử dụng để đánh dấu một lớp có thể được tuần tự hóa (serialized). Mục đích chính của serialization là gì?

  • A. Để tăng tốc độ truy cập dữ liệu của đối tượng.
  • B. Để mã hóa dữ liệu của đối tượng nhằm bảo mật thông tin.
  • C. Để tạo ra bản sao sâu (deep copy) của đối tượng.
  • D. Để chuyển đổi trạng thái của một đối tượng thành một chuỗi byte để có thể lưu trữ xuống đĩa hoặc truyền qua mạng, sau đó có thể khôi phục lại đối tượng từ chuỗi byte này.

Câu 14: Cho đoạn mã Java sử dụng lambda expression sau:
```java
interface StringOperation {
String operate(String str);
}

public class Main {
public static void main(String[] args) {
StringOperation toUpperCase = s -> s.toUpperCase();
String result = toUpperCase.operate(

  • A. HELLO
  • B. hello
  • C. Error
  • D. Null

Câu 15: Trong Java, Stream API cung cấp một cách thức để xử lý dữ liệu tuần tự hoặc song song. Hoạt động nào sau đây là một intermediate operation (hoạt động trung gian) trong Stream API?

  • A. `forEach()`
  • B. `collect()`
  • C. `map()`
  • D. `count()`

Câu 16: Phát biểu nào sau đây mô tả đúng nhất về dependency injection (DI - tiêm phụ thuộc) trong lập trình Java?

  • A. Dependency Injection là một kỹ thuật để tạo ra các đối tượng singleton.
  • B. Dependency Injection là một design pattern cho phép loại bỏ sự phụ thuộc cứng nhắc giữa các thành phần bằng cách cung cấp các phụ thuộc (dependencies) của một đối tượng từ bên ngoài thay vì để đối tượng tự tạo hoặc tìm kiếm chúng.
  • C. Dependency Injection là một phương pháp để kiểm thử đơn vị (unit testing) các thành phần Java.
  • D. Dependency Injection là một kỹ thuật để tối ưu hóa hiệu suất của ứng dụng Java.

Câu 17: Cho đoạn mã Java sau:
```java
public class MyClass {
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 executed
  • B. Some other exception
    Finally block executed
  • C. Index out of bounds!
  • D. Finally block executed

Câu 18: Trong Java, access modifier (cấp độ truy cập) `protected` có ý nghĩa gì?

  • A. Thành viên `protected` chỉ có thể được truy cập từ bên trong cùng một lớp.
  • B. Thành viên `protected` có thể được truy cập từ bất kỳ đâu.
  • C. Thành viên `protected` chỉ có thể được truy cập từ các lớp trong cùng package.
  • D. Thành viên `protected` có thể được truy cập từ các lớp trong cùng package và các lớp con (subclasses) ngay cả khi chúng ở khác package.

Câu 19: Cho đoạn mã Java sử dụng generics sau:
```java
public class GenericBox {
private T content;

public GenericBox(T content) {
this.content = content;
}

public T getContent() {
return content;
}

public static void main(String[] args) {
GenericBox intBox = new GenericBox<>(10);
GenericBox stringBox = new GenericBox<>(

  • A. Tăng hiệu suất thực thi của chương trình.
  • B. Cung cấp type safety (an toàn kiểu dữ liệu) tại thời điểm biên dịch, giúp phát hiện lỗi kiểu dữ liệu sớm hơn và giảm nhu cầu ép kiểu (casting).
  • C. Giảm kích thước mã nguồn.
  • D. Cho phép đa kế thừa trong Java.

Câu 20: Trong Java, annotation (chú thích) được sử dụng để cung cấp metadata (siêu dữ liệu) về chương trình. Annotation `@Override` được sử dụng để làm gì?

  • A. Để đánh dấu một phương thức là tĩnh (static).
  • B. Để đánh dấu một lớp là abstract (trừu tượng).
  • C. Để chỉ ra rằng một phương thức trong lớp con đang ghi đè (override) một phương thức từ lớp cha, giúp trình biên dịch kiểm tra tính đúng đắn của việc ghi đè.
  • D. Để khai báo một biến là hằng số (constant).

Câu 21: Cho đoạn mã Java sử dụng `Optional` class:
```java
Optional optionalName = Optional.ofNullable(

  • A. John
    null
  • B. John
    Guest
  • C. Guest
    Guest
  • D. NullPointerException

Câu 22: Trong Java, cơ chế reflection (phản xạ) cho phép chương trình kiểm tra và sửa đổi cấu trúc và hành vi của các lớp, interface, phương thức và trường tại thời điểm runtime. Ứng dụng chính của reflection là gì?

  • A. Để tăng cường tính bảo mật của ứng dụng.
  • B. Để cải thiện hiệu suất thực thi của chương trình.
  • C. Để cho phép chương trình tương tác với các lớp và đối tượng một cách linh hoạt, ngay cả khi thông tin về chúng không được biết tại thời điểm biên dịch, thường được sử dụng trong các framework, IDE và công cụ gỡ lỗi.
  • D. Để quản lý bộ nhớ hiệu quả hơn.

Câu 23: Cho đoạn mã Java sử dụng `StringBuilder`:
```java
StringBuilder sb = new StringBuilder(

  • A. Java Programming
  • B. Javais Programming
  • C. Programming Java
  • D. Java is Programming

Câu 24: Trong Java, functional interface (giao diện hàm) là một interface chỉ chứa một phương thức trừu tượng duy nhất. Mục đích chính của functional interface là gì?

  • A. Để tạo ra các lớp trừu tượng.
  • B. Để có thể sử dụng lambda expressions và method references, giúp viết mã ngắn gọn và biểu cảm hơn, đặc biệt trong lập trình hàm.
  • C. Để định nghĩa các hằng số (constants) chung cho nhiều lớp.
  • D. Để hỗ trợ đa kế thừa trong Java.

Câu 25: Cho đoạn mã Java sử dụng try-with-resources:
```java
try (FileReader fr = new FileReader(

  • A. Đảm bảo rằng các tài nguyên (ví dụ: `FileReader`, `BufferedReader`) sẽ được tự động đóng (closed) sau khi khối `try` kết thúc, ngay cả khi có ngoại lệ xảy ra, giúp tránh rò rỉ tài nguyên.
  • B. Giúp tăng tốc độ đọc file.
  • C. Cho phép đọc file từ nhiều nguồn khác nhau cùng một lúc.
  • D. Giảm thiểu khả năng xảy ra lỗi `FileNotFoundException`.

Câu 26: Trong Java, thuật ngữ

  • A. Single Responsibility Principle
  • B. Open/Closed Principle
  • C. Liskov Substitution Principle
  • D. Interface Segregation Principle

Câu 27: Cho đoạn mã Java sử dụng Collection Framework:
```java
Set uniqueNames = new HashSet<>();
uniqueNames.add(

  • A. 3
  • B. 2
  • C. 1
  • D. 0

Câu 28: Trong Java, Design Pattern Singleton được sử dụng để đảm bảo rằng một lớp chỉ có duy nhất một thể hiện (instance) và cung cấp một điểm truy cập toàn cục đến thể hiện đó. Ứng dụng phổ biến của Singleton pattern là gì?

  • A. Để tạo ra các đối tượng có khả năng mở rộng (extensible).
  • B. Để quản lý vòng đời của đối tượng một cách tự động.
  • C. Để giảm độ phức tạp của mã nguồn.
  • D. Để quản lý các tài nguyên dùng chung (shared resources) như connection pool, logger, hoặc configuration manager, nơi chỉ cần một thể hiện duy nhất là đủ.

Câu 29: Cho đoạn mã Java sử dụng Date và Time API (Java 8):
```java
LocalDate today = LocalDate.now();
LocalDate tomorrow = today.plusDays(1);

System.out.println(tomorrow.getDayOfWeek());
```
Đoạn mã trên in ra thông tin gì?

  • A. Ngày mai ở định dạng YYYY-MM-DD.
  • B. Số ngày còn lại trong tháng.
  • C. Tên ngày trong tuần của ngày mai (ví dụ: MONDAY, TUESDAY,...).
  • D. Thời gian hiện tại của ngày mai.

Câu 30: Trong Java, thuật ngữ

  • A. JVM là một môi trường runtime thực thi bytecode Java, cung cấp khả năng biên dịch mã nguồn Java thành bytecode và thông dịch/biên dịch bytecode này thành mã máy, đảm bảo tính
  • B. JVM là một trình biên dịch mã nguồn Java thành mã máy.
  • C. JVM là một IDE (Integrated Development Environment) để phát triển ứng dụng Java.
  • D. JVM là một thư viện chuẩn của Java cung cấp các lớp và interface cốt lõi.

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 1: Trong Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation) trong lập trình hướng đối tượng?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName = "Generic Vehicle";
public void startEngine() {
System.out.println("Engine started for " + modelName);
}
}

public class Car extends Vehicle {
public Car() {
modelName = "Car Model X";
}
@Override
public void startEngine() {
System.out.println("Car engine started: " + modelName);
}
}

public class Main {
public static void main(String[] args) {
Vehicle v = new Car();
v.startEngine();
}
}
```
Đoạn mã trên minh họa khái niệm OOP nào?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 3: Trong Java, từ khóa `static` được sử dụng để khai báo thành viên tĩnh của lớp. Phát biểu nào sau đây là đúng về biến tĩnh?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 4: Cho đoạn mã Java sau:
```java
String str1 = "Hello";
String str2 = new String("Hello");

System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
```
Kết quả in ra màn hình sẽ là gì?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 5: Trong Java, exception handling (xử lý ngoại lệ) được thực hiện bằng cách sử dụng các khối `try`, `catch` và `finally`. Mục đích chính của khối `finally` là gì?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 6: Phát biểu nào sau đây mô tả đúng nhất về interface (giao diện) trong Java?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 7: Cho đoạn mã Java sau:
```java
List names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");

for (String name : names) {
if (name.startsWith("B")) {
names.remove(name); // Dòng này có thể gây ra vấn đề
}
}
System.out.println(names);
```
Đoạn mã trên có thể gây ra lỗi gì khi chạy?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 8: Trong Java, garbage collection (thu gom rác) là một tiến trình tự động quản lý bộ nhớ. Phát biểu nào sau đây mô tả đúng nhất về garbage collection?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 9: Cho đoạn mã Java sau:
```java
int x = 5;
int y = 10;

// Toán tử bitwise
int result = x & y;
System.out.println(result);
```
Kết quả in ra của đoạn mã trên là gì?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 10: Trong Java, thread (luồng) là một đơn vị thực thi song song. Mục đích chính của việc sử dụng đa luồng (multithreading) là gì?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 11: Phát biểu nào sau đây là đúng về anonymous inner class (lớp nội tại vô danh) trong Java?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 12: Cho đoạn mã Java sau:
```java
Integer num1 = 1000;
Integer num2 = 1000;

System.out.println(num1 == num2);

Integer num3 = 100;
Integer num4 = 100;

System.out.println(num3 == num4);
```
Kết quả in ra của đoạn mã trên là gì?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 13: Trong Java, Serializable interface được sử dụng để đánh dấu một lớp có thể được tuần tự hóa (serialized). Mục đích chính của serialization là gì?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 14: Cho đoạn mã Java sử dụng lambda expression sau:
```java
interface StringOperation {
String operate(String str);
}

public class Main {
public static void main(String[] args) {
StringOperation toUpperCase = s -> s.toUpperCase();
String result = toUpperCase.operate("hello");
System.out.println(result);
}
}
```
Đoạn mã trên in ra kết quả gì?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 15: Trong Java, Stream API cung cấp một cách thức để xử lý dữ liệu tuần tự hoặc song song. Hoạt động nào sau đây là một intermediate operation (hoạt động trung gian) trong Stream API?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 16: Phát biểu nào sau đây mô tả đúng nhất về dependency injection (DI - tiêm phụ thuộc) trong lập trình Java?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 17: Cho đoạn mã Java sau:
```java
public class MyClass {
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("Index out of bounds!");
} catch (Exception e) {
System.out.println("Some other exception");
} finally {
System.out.println("Finally block executed");
}
}
}
```
Kết quả in ra của đoạn mã trên là gì?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 18: Trong Java, access modifier (cấp độ truy cập) `protected` có ý nghĩa gì?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 19: Cho đoạn mã Java sử dụng generics sau:
```java
public class GenericBox {
private T content;

public GenericBox(T content) {
this.content = content;
}

public T getContent() {
return content;
}

public static void main(String[] args) {
GenericBox intBox = new GenericBox<>(10);
GenericBox stringBox = new GenericBox<>("Hello");

System.out.println(intBox.getContent());
System.out.println(stringBox.getContent());
}
}
```
Generics trong đoạn mã trên giúp đạt được lợi ích chính nào?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 20: Trong Java, annotation (chú thích) được sử dụng để cung cấp metadata (siêu dữ liệu) về chương trình. Annotation `@Override` được sử dụng để làm gì?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 21: Cho đoạn mã Java sử dụng `Optional` class:
```java
Optional optionalName = Optional.ofNullable("John");
String name = optionalName.orElse("Guest");
System.out.println(name);

Optional emptyOptional = Optional.ofNullable(null);
String emptyName = emptyOptional.orElse("Guest");
System.out.println(emptyName);
```
Kết quả in ra của đoạn mã trên là gì?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 22: Trong Java, cơ chế reflection (phản xạ) cho phép chương trình kiểm tra và sửa đổi cấu trúc và hành vi của các lớp, interface, phương thức và trường tại thời điểm runtime. Ứng dụng chính của reflection là gì?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 23: Cho đoạn mã Java sử dụng `StringBuilder`:
```java
StringBuilder sb = new StringBuilder("Java");
sb.append(" Programming");
sb.insert(5, " is");
String result = sb.toString();
System.out.println(result);
```
Kết quả in ra của đoạn mã trên là gì?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 24: Trong Java, functional interface (giao diện hàm) là một interface chỉ chứa một phương thức trừu tượng duy nhất. Mục đích chính của functional interface là gì?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 25: Cho đoạn mã Java sử dụng try-with-resources:
```java
try (FileReader fr = new FileReader("example.txt");
BufferedReader br = new BufferedReader(fr)) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
```
Lợi ích chính của việc sử dụng try-with-resources trong đoạn mã trên là gì?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 26: Trong Java, thuật ngữ "SOLID principles" đề cập đến một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ "L" trong SOLID đại diện cho nguyên tắc nào?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 27: Cho đoạn mã Java sử dụng Collection Framework:
```java
Set uniqueNames = new HashSet<>();
uniqueNames.add("Alice");
uniqueNames.add("Bob");
uniqueNames.add("Alice"); // Thêm lại "Alice"

System.out.println(uniqueNames.size());
```
Kết quả in ra của đoạn mã trên là gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 28: Trong Java, Design Pattern Singleton được sử dụng để đảm bảo rằng một lớp chỉ có duy nhất một thể hiện (instance) và cung cấp một điểm truy cập toàn cục đến thể hiện đó. Ứng dụng phổ biến của Singleton pattern là gì?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 29: Cho đoạn mã Java sử dụng Date và Time API (Java 8):
```java
LocalDate today = LocalDate.now();
LocalDate tomorrow = today.plusDays(1);

System.out.println(tomorrow.getDayOfWeek());
```
Đoạn mã trên in ra thông tin gì?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 02

Câu 30: Trong Java, thuật ngữ "JVM" là viết tắt của Java Virtual Machine. Vai trò chính của JVM là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 03

Trắc nghiệm Java - Đề 03 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 mô tả đúng nhất về tính đóng gói (encapsulation)?

  • A. 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.
  • B. Cơ chế 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. Nguyên tắc che giấu thông tin và dữ liệu bên trong đối tượng, chỉ cho phép truy cập thông qua các phương thức công khai.
  • D. Cách thức Java quản lý bộ nhớ và giải phóng bộ nhớ không còn sử dụng.

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Test {
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
    Khối finally luôn được thực thi
  • B. Lỗi: Truy cập ngoài phạm vi mảng
    Khối finally luôn được thực thi
  • C. Lỗi: Truy cập ngoài phạm vi mảng
  • 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ử `==` trong Java khác nhau như thế nào khi so sánh các đối tượng?

  • A. `==` so sánh tham chiếu đối tượng (vị trí bộ nhớ), `equals()` so sánh nội dung đối tượng (giá trị).
  • B. `==` so sánh nội dung đối tượng, `equals()` so sánh tham chiếu đối tượng.
  • C. Cả `==` và `equals()` đều so sánh nội dung đối tượng.
  • D. Cả `==` và `equals()` đều so sánh tham chiếu đối tượng.

Câu 4: Lớp `String` trong Java là bất biến (immutable). Điều này có nghĩa là gì?

  • A. Chuỗi String không thể được khởi tạo giá trị rỗng.
  • B. Kích thước của chuỗi String là cố định và không thể thay đổi sau khi tạo.
  • C. Các phương thức của lớp String không được phép thay đổi nội dung chuỗi.
  • D. Một khi đối tượng String được tạo ra, giá trị của nó không thể thay đổi được nữa. Mọi thao tác chỉnh sửa chuỗi sẽ tạo ra một đối tượng String mới.

Câu 5: Chọn phát biểu đúng về từ khóa `static` trong Java.

  • A. Từ khóa `static` chỉ được sử dụng cho các biến instance của lớp.
  • B. Các phương thức `static` chỉ có thể được gọi từ bên trong cùng một lớp.
  • C. Biến `static` được chia sẻ bởi tất cả các đối tượng của lớp, và tồn tại duy nhất một bản sao.
  • D. Từ khóa `static` làm cho các phương thức trở thành đa hình.

Câu 6: Interface và abstract class trong Java có điểm gì khác biệt chính?

  • A. Interface có thể chứa các phương thức có thân hàm, 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. Abstract class được sử dụng để khai báo hành vi, interface được sử dụng để cài đặt hành vi.
  • D. Không có sự khác biệt đáng kể giữa interface và abstract class.

Câu 7: Trong lập trình hướng đối tượng, "tính đa hình" (polymorphism) mang lại lợi ích gì?

  • A. Tăng tốc độ thực thi chương trình.
  • B. Giảm dung lượng bộ nhớ sử dụng.
  • C. Cho phép đối tượng thuộc các lớp khác nhau được xử lý một cách thống nhất thông qua interface hoặc lớp cha, tăng tính linh hoạt và khả năng mở rộng.
  • D. Đảm bảo tính bảo mật của dữ liệu.

Câu 8: Cho đoạn code sau, biến `count` có phạm vi truy cập nào?
```java
public class Counter {
private int count;

public void increment() {
count++;
}

public int getCount() {
return count;
}
}
```

  • A. Public
  • B. Private
  • C. Protected
  • D. Default (package-private)

Câu 9: Phương thức `finalize()` trong Java được sử dụng để làm gì?

  • A. Khởi tạo giá trị ban đầu cho đối tượng.
  • B. Sao chép một đối tượng.
  • C. So sánh hai đối tượng.
  • D. Thực hiện các công việc dọn dẹp trước khi đối tượng bị thu gom bởi garbage collector (mặc dù việc sử dụng không được khuyến khích).

Câu 10: 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 (primitive data type)?

  • A. int
  • B. boolean
  • C. String
  • D. char

Câu 11: Toán tử `%` trong Java dùng để làm gì?

  • A. Phép chia lấy thương.
  • B. Phép chia lấy phần dư.
  • C. Phép nhân.
  • D. Phép lũy thừa.

Câu 12: Vòng lặp `for-each` (enhanced for loop) trong Java thường được sử dụng để làm gì?

  • A. Duyệt qua các phần tử của một mảng hoặc collection.
  • B. Thực hiện lặp vô hạn.
  • C. Lặp với số lần biết trước và có thể thay đổi bước nhảy linh hoạt.
  • D. Thay thế hoàn toàn cho vòng lặp `while`.

Câu 13: Giải thích ý nghĩa của từ khóa `super` trong Java.

  • A. Tham chiếu đến đối tượng hiện tại.
  • B. Khai báo một lớp con.
  • C. Tham chiếu đến lớp cha trực tiếp của lớp hiện tại, dùng để gọi constructor hoặc phương thức của lớp cha.
  • D. Khai báo một interface.

Câu 14: Cho đoạn code sau:
```java
int x = 5;
int y = 10;
System.out.println(x++ + --y);
System.out.println(x + y);
```
Kết quả in ra màn hình là gì?

  • A. 14
    15
  • B. 15
    15
  • C. 14
    16
  • D. 15
    16

Câu 15: Java Virtual Machine (JVM) có vai trò gì trong việc thực thi chương trình Java?

  • A. Biên dịch mã nguồn Java thành bytecode.
  • B. Thông dịch bytecode Java và thực thi trên hệ điều hành cụ thể, đảm bảo tính độc lập nền tảng.
  • C. Quản lý bộ nhớ và thu gom rác.
  • D. Cung cấp các thư viện và API chuẩn cho Java.

Câu 16: Khi nào thì sử dụng `ArrayList` và khi nào thì sử dụng `LinkedList` trong Java Collections Framework?

  • A. `ArrayList` tốt hơn cho việc thêm/xóa phần tử ở đầu danh sách, `LinkedList` tốt hơn cho truy cập ngẫu nhiên.
  • B. Luôn luôn sử dụng `ArrayList` vì nó hiệu quả hơn `LinkedList`.
  • C. `ArrayList` tốt hơn cho truy cập ngẫu nhiên (get), `LinkedList` tốt hơn cho thêm/xóa phần tử ở đầu hoặc giữa danh sách.
  • D. `LinkedList` tốt hơn cho truy cập ngẫu nhiên, `ArrayList` tốt hơn cho thêm/xóa phần tử.

Câu 17: Phương thức `toString()` trong Java có mục đích gì và thường được sử dụng như thế nào?

  • A. So sánh hai đối tượng.
  • B. Chuyển đổi một chuỗi thành đối tượng.
  • C. Tạo một bản sao của đối tượng.
  • D. Trả về một chuỗi đại diện cho đối tượng, thường được sử dụng để in thông tin đối tượng hoặc debug.

Câu 18: Để tạo một luồng (thread) trong Java, bạn có thể sử dụng những cách nào?

  • A. Chỉ có thể kế thừa từ lớp `Thread`.
  • B. Kế thừa lớp `Thread` hoặc implements interface `Runnable`.
  • C. Sử dụng từ khóa `async`.
  • D. Chỉ có thể implements interface `Callable`.

Câu 19: Trong Java, exception `NullPointerException` thường xảy ra khi nào?

  • A. Khi chia một số cho 0.
  • B. Khi truy cập một phần tử mảng vượt quá giới hạn.
  • C. Khi cố gắng truy cập hoặc thao tác trên một biến tham chiếu đối tượng có giá trị `null`.
  • D. Khi chuyển đổi một chuỗi không hợp lệ sang số.

Câu 20: Thế nào là autoboxing và unboxing trong Java?

  • A. Autoboxing là tự động chuyển đổi kiểu nguyên thủy sang wrapper class, unboxing là ngược lại.
  • B. Autoboxing là tự động tạo đối tượng, unboxing là tự động hủy đối tượng.
  • C. Autoboxing là tự động kiểm tra kiểu, unboxing là tự động ép kiểu.
  • D. Không có khái niệm autoboxing và unboxing trong Java.

Câu 21: Đâu là cách khai báo hằng số (constant) trong Java?

  • A. const int MAX_VALUE = 100;
  • B. static final int MAX_VALUE = 100;
  • C. readonly int MAX_VALUE = 100;
  • D. immutable int MAX_VALUE = 100;

Câu 22: Trong Java, Serialization được sử dụng để làm gì?

  • A. Kiểm soát truy cập đồng thời vào đối tượng.
  • B. Tối ưu hóa hiệu suất thực thi của đối tượng.
  • C. Chuyển đổi đối tượng thành một chuỗi byte để lưu trữ hoặc truyền qua mạng, và ngược lại (Deserialization).
  • D. Mã hóa đối tượng để bảo mật thông tin.

Câu 23: Cho đoạn code sau:
```java
String str1 =

  • A. true
    true
  • B. true
    false
  • C. false
    false
  • D. false
    true

Câu 24: Phương thức `compareTo()` trong interface `Comparable` được sử dụng để làm gì?

  • A. Kiểm tra xem hai đối tượng có bằng nhau không.
  • B. So sánh thứ tự của hai đối tượng để sắp xếp.
  • C. Tìm kiếm một đối tượng trong collection.
  • D. Chuyển đổi đối tượng sang kiểu String.

Câu 25: Giải thích khái niệm "garbage collection" trong Java.

  • A. Cơ chế biên dịch mã nguồn Java.
  • B. Phương pháp quản lý bộ nhớ thủ công, yêu cầu lập trình viên tự giải phóng bộ nhớ.
  • C. Quá trình tự động giải phóng bộ nhớ không còn được sử dụng bởi chương trình Java, giúp ngăn ngừa rò rỉ bộ nhớ.
  • D. Một loại exception xảy ra khi bộ nhớ đầy.

Câu 26: Trong Java, anonymous inner class là gì và được sử dụng khi nào?

  • A. Một lớp nội tại có tên được khai báo bên trong một phương thức.
  • B. Một lớp được khai báo bên ngoài bất kỳ lớp nào khác.
  • C. Một lớp trừu tượng không có phương thức trừu tượng.
  • D. Một lớp nội tại không có tên, thường được sử dụng để tạo nhanh các implementation đơn giản của interface hoặc lớp trừu tượng.

Câu 27: Đâu là cách sử dụng đúng cú pháp của try-with-resources trong Java?

  • A. try (ResourceType resource = ...) { ... } catch (Exception e) { ... }
  • B. try { ResourceType resource = ...; ... } with (resource) { ... } catch (Exception e) { ... }
  • C. try { ResourceType resource = ...; ... } finally (resource) { resource.close(); }
  • D. using (ResourceType resource = ...) { ... } catch (Exception e) { ... }

Câu 28: Phát biểu nào sau đây đúng về lambda expression trong Java?

  • A. Lambda expression là một loại exception mới trong Java.
  • B. Lambda expression là một cách viết ngắn gọn cho anonymous inner class để implement functional interface.
  • C. Lambda expression chỉ được sử dụng cho xử lý đa luồng.
  • D. Lambda expression thay thế hoàn toàn cho vòng lặp for-each.

Câu 29: Stream API trong Java 8+ được sử dụng chủ yếu để làm gì?

  • A. Quản lý bộ nhớ và garbage collection.
  • B. Xử lý input/output và file operations.
  • C. Xử lý collections dữ liệu (như List, Set, Map) theo kiểu functional, cho phép thực hiện các phép biến đổi, lọc, tổng hợp dữ liệu một cách hiệu quả.
  • D. Tạo giao diện người dùng đồ họa (GUI).

Câu 30: Đâu là một ví dụ về Design Pattern thuộc nhóm Creational Patterns?

  • A. Observer
  • B. Strategy
  • C. Decorator
  • D. Singleton

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 1: Trong Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation)?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Test {
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("Lỗi: Truy cập ngoài phạm vi mảng");
} finally {
System.out.println("Khối finally luôn được thực thi");
}
}
}
```
Đoạn mã trên sẽ in ra màn hình những gì?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 3: Phương thức `equals()` và toán tử `==` trong Java khác nhau như thế nào khi so sánh các đối tượng?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 4: Lớp `String` trong Java là bất biến (immutable). Điều này có nghĩa là gì?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 5: Chọn phát biểu đúng về từ khóa `static` trong Java.

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 6: Interface và abstract class trong Java có điểm gì khác biệt chính?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 7: Trong lập trình hướng đối tượng, 'tính đa hình' (polymorphism) mang lại lợi ích gì?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 8: Cho đoạn code sau, biến `count` có phạm vi truy cập nào?
```java
public class Counter {
private int count;

public void increment() {
count++;
}

public int getCount() {
return count;
}
}
```

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 9: Phương thức `finalize()` trong Java được sử dụng để làm gì?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 10: 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 (primitive data type)?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 11: Toán tử `%` trong Java dùng để làm gì?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 12: Vòng lặp `for-each` (enhanced for loop) trong Java thường được sử dụng để làm gì?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 13: Giải thích ý nghĩa của từ khóa `super` trong Java.

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 14: Cho đoạn code sau:
```java
int x = 5;
int y = 10;
System.out.println(x++ + --y);
System.out.println(x + y);
```
Kết quả in ra màn hình là gì?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 15: Java Virtual Machine (JVM) có vai trò gì trong việc thực thi chương trình Java?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 16: Khi nào thì sử dụng `ArrayList` và khi nào thì sử dụng `LinkedList` trong Java Collections Framework?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 17: Phương thức `toString()` trong Java có mục đích gì và thường được sử dụng như thế nào?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 18: Để tạo một luồng (thread) trong Java, bạn có thể sử dụng những cách nào?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 19: Trong Java, exception `NullPointerException` thường xảy ra khi nào?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 20: Thế nào là autoboxing và unboxing trong Java?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 21: Đâu là cách khai báo hằng số (constant) trong Java?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 22: Trong Java, Serialization được sử dụng để làm gì?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 23: Cho đoạn code sau:
```java
String str1 = "Java";
String str2 = new String("Java");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
```
Kết quả in ra màn hình là gì?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 24: Phương thức `compareTo()` trong interface `Comparable` được sử dụng để làm gì?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 25: Giải thích khái niệm 'garbage collection' trong Java.

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 26: Trong Java, anonymous inner class là gì và được sử dụng khi nào?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 27: Đâu là cách sử dụng đúng cú pháp của try-with-resources trong Java?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 28: Phát biểu nào sau đây đúng về lambda expression trong Java?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 29: Stream API trong Java 8+ được sử dụng chủ yếu để làm gì?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 03

Câu 30: Đâu là một ví dụ về Design Pattern thuộc nhóm Creational Patterns?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 04

Trắc nghiệm 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 lập trình hướng đối tượng Java, khái niệm nào cho phép một lớp con kế thừa các thuộc tính và phương thức của lớp cha, đồng thời có thể mở rộng hoặc sửa đổi chúng?

  • A. Đóng gói (Encapsulation)
  • B. Kế thừa (Inheritance)
  • C. Đa hình (Polymorphism)
  • D. Trừu tượng hóa (Abstraction)

Câu 2: Cho đoạn code Java sau:
```java
int a = 10;
int b = 5;
System.out.println(a > b ? a : b);
```
Đoạn code trên sẽ in ra giá trị nào? Giải thích tại sao.

  • A. 10, vì điều kiện `a > b` là đúng nên biểu thức trả về giá trị của `a`.
  • B. 5, vì điều kiện `a > b` là sai nên biểu thức trả về giá trị của `b`.
  • C. 15, vì biểu thức tính tổng của `a` và `b`.
  • D. 50, vì biểu thức tính tích của `a` và `b`.

Câu 3: 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. `equals()` so sánh tham chiếu đối tượng, `==` so sánh giá trị của đối tượng.
  • B. Cả hai đều so sánh tham chiếu đối tượng.
  • C. `equals()` so sánh giá trị nội dung của đối tượng (nếu được ghi đè), `==` so sánh tham chiếu đối tượng (địa chỉ bộ nhớ).
  • D. Cả hai đều so sánh giá trị nội dung của đối tượng.

Câu 4: 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 cần phải được xử lý (checked exception) hoặc khai báo?

  • A. IOException
  • B. SQLException
  • C. ClassNotFoundException
  • D. NullPointerException

Câu 5: Đâu là phát biểu đúng về interface (giao diện) trong Java?

  • A. Interface có thể chứa các phương thức đã được cài đặt hoàn chỉnh.
  • B. Interface định nghĩa một tập hợp các phương thức trừu tượng mà các lớp implement interface phải cung cấp cài đặt.
  • C. Một lớp chỉ có thể implement tối đa một interface.
  • D. Interface không thể chứa các hằng số (constant).

Câu 6: Cho đoạn code Java sau:
```java
String str1 =

  • A. `true`, `true` vì cả hai đều so sánh giá trị chuỗi.
  • B. `false`, `false` vì tham chiếu đến các đối tượng khác nhau.
  • C. `false`, `true` vì `==` so sánh tham chiếu, `equals()` so sánh nội dung chuỗi.
  • D. `true`, `false` vì thứ tự so sánh khác nhau.

Câu 7: Trong Java Collections Framework, cấu trúc dữ liệu nào sau đây hoạt động theo nguyên tắc LIFO (Last-In, First-Out)?

  • A. Queue
  • B. Stack
  • C. ArrayList
  • D. HashSet

Câu 8: Phương thức `toString()` trong Java có vai trò gì?

  • A. Chuyển đổi một đối tượng thành kiểu dữ liệu String nguyên thủy.
  • B. So sánh hai đối tượng String.
  • C. Trả về một chuỗi đại diện cho đối tượng, thường được sử dụng để in ra hoặc hiển thị thông tin về đối tượng.
  • D. Mã hóa một đối tượng thành chuỗi byte.

Câu 9: Cho đoạn code Java sau:
```java
public class MyClass {
static int count = 0;
public MyClass() {
count++;
}
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
System.out.println(MyClass.count);
}
}
```
Giá trị của `MyClass.count` được in ra là bao nhiêu? Giải thích.

  • A. 0, vì `count` được khởi tạo là 0 và không thay đổi.
  • B. 2, vì constructor được gọi hai lần khi tạo `obj1` và `obj2`, mỗi lần tăng `count` lên 1.
  • C. 1, vì chỉ có một biến `static` `count` được tạo ra.
  • D. Lỗi biên dịch, vì `count` không được khởi tạo trong constructor.

Câu 10: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Ý nghĩa của `final` khi sử dụng với một lớp là gì?

  • A. Lớp `final` không thể tạo ra đối tượng.
  • B. Các phương thức trong lớp `final` không thể được ghi đè.
  • C. Biến thành viên của lớp `final` phải là hằng số.
  • D. Lớp `final` không thể được kế thừa bởi bất kỳ lớp nào khác.

Câu 11: Đâu là cách khai báo và khởi tạo một mảng số nguyên có tên `numbers` chứa 5 phần tử trong Java?

  • A. `int[] numbers = new int[5];`
  • B. `int numbers = array[5];`
  • C. `array int numbers[5];`
  • D. `int numbers[] = {5};`

Câu 12: Cho đoạn code Java sau:
```java
int x = 5;
void modify(int val) {
val = val * 2;
}
modify(x);
System.out.println(x);
```
Giá trị của `x` được in ra là bao nhiêu? Giải thích cơ chế truyền tham số trong Java.

  • A. 10, vì giá trị của `x` đã bị thay đổi trong phương thức `modify`.
  • B. Lỗi biên dịch, vì phương thức `modify` không trả về giá trị.
  • C. 5, vì Java truyền tham trị cho kiểu nguyên thủy, `val` trong phương thức `modify` là bản sao của `x`, thay đổi `val` không ảnh hưởng đến `x`.
  • D. 0, vì `x` không được khởi tạo lại sau khi gọi phương thức.

Câu 13: Trong lập trình đa luồng Java, synchronized keyword (từ khóa `synchronized`) được sử dụng để làm gì?

  • A. Tăng tốc độ thực thi của chương trình đa luồng.
  • B. Đảm bảo tính đồng bộ và ngăn chặn race condition (điều kiện tranh chấp) khi nhiều luồng truy cập vào cùng một tài nguyên.
  • C. Tạo ra một luồng mới.
  • D. Xử lý ngoại lệ trong môi trường đa luồng.

Câu 14: Đâu là cách tạo một anonymous inner class (lớp nội tại vô danh) từ một interface `Drawable` có phương thức `draw()`?

  • A. `Drawable d = new Drawable();`
  • B. `class AnonymousDrawable implements Drawable { ... } Drawable d = new AnonymousDrawable();`
  • C. `Drawable d = interface Drawable { ... };`
  • D. `Drawable d = new Drawable() { public void draw() { ... } };`

Câu 15: Trong Java, garbage collection (thu gom rác) là một tiến trình tự động. Mục đích chính của garbage collection là gì?

  • A. Giải phóng bộ nhớ đã cấp phát cho các đối tượng không còn được tham chiếu đến nữa, ngăn ngừa memory leak (rò rỉ bộ nhớ).
  • B. Tối ưu hóa hiệu suất CPU.
  • C. Kiểm tra và sửa lỗi trong code.
  • D. Tăng tốc độ biên dịch chương trình.

Câu 16: Cho đoạn code Java sử dụng Streams API:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println(sum);
```
Giá trị của `sum` được in ra là bao nhiêu? Phân tích các bước xử lý của stream.

  • A. 15, vì stream tính tổng tất cả các số từ 1 đến 5.
  • B. 20, vì stream lọc số chẵn (2, 4), bình phương chúng (4, 16), rồi tính tổng.
  • C. 30, vì stream lọc số lẻ (1, 3, 5), bình phương chúng (1, 9, 25), rồi tính tổng.
  • D. 25, vì stream chỉ lấy số cuối cùng (5) và bình phương nó.

Câu 17: Trong Java, annotation (chú thích) được sử dụng để làm gì?

  • A. Thay thế cho comment (chú thích) thông thường trong code.
  • B. Tăng hiệu suất thực thi của chương trình.
  • C. Cung cấp metadata (dữ liệu về dữ liệu) cho compiler, runtime environment hoặc các công cụ khác, giúp mô tả hoặc cấu hình code.
  • D. Bảo mật code bằng cách ẩn thông tin nhạy cảm.

Câu 18: Đâu là phạm vi truy cập (access modifier) có mức độ bảo vệ thấp nhất trong Java?

  • A. `public`
  • B. `protected`
  • C. default (package-private)
  • D. `private`

Câu 19: Cho đoạn code Java:
```java
List names = new ArrayList<>();
names.add(

  • A. `names.remove(1); // Xóa phần tử ở index 1` (Có thể không xóa đúng
  • B. `names.remove(
  • C. `names.clear(); // Xóa tất cả phần tử rồi thêm lại trừ
  • D. `names = null; // Gán null cho biến tham chiếu` (Không xóa phần tử khỏi danh sách, chỉ làm mất tham chiếu)

Câu 20: Trong Java, serialization (tuần tự hóa) là quá trình chuyển đổi một đối tượng thành một chuỗi byte. Mục đích chính của serialization là gì?

  • A. Tăng tốc độ truy cập vào thuộc tính của đối tượng.
  • B. Bảo vệ đối tượng khỏi bị truy cập trái phép.
  • C. Cho phép lưu trữ trạng thái của đối tượng xuống file hoặc truyền tải đối tượng qua mạng, sau đó có thể khôi phục lại đối tượng từ chuỗi byte (deserialization).
  • D. Tối ưu hóa bộ nhớ sử dụng bởi đối tượng.

Câu 21: Cho đoạn code Java sử dụng Generics:
```java
public class Box {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
public static void main(String[] args) {
Box stringBox = new Box<>();
stringBox.setContent(

  • A. Tăng hiệu suất thực thi của chương trình.
  • B. Giảm kích thước code.
  • C. Cho phép tạo ra các lớp và phương thức có thể làm việc với nhiều kiểu dữ liệu khác nhau mà không cần viết code trùng lặp, nhưng vẫn đảm bảo type safety (an toàn kiểu dữ liệu) tại thời điểm biên dịch.
  • D. Cho phép đa kế thừa trong Java.

Câu 22: Trong Java, lambda expression (biểu thức lambda) thường được sử dụng cùng với functional interface (interface hàm). Functional interface là gì?

  • A. Interface có thể chứa nhiều phương thức trừu tượng.
  • B. Interface chỉ có đúng một phương thức trừu tượng duy nhất (Single Abstract Method - SAM).
  • C. Interface không chứa bất kỳ phương thức nào.
  • D. Interface chỉ chứa các phương thức static.

Câu 23: Cho đoạn code Java sử dụng try-catch block:
```java
try {
int result = 10 / 0; // Gây ra ArithmeticException
System.out.println(

  • A. `Result: Infinity
    Khối finally luôn được thực thi.
    Chương trình tiếp tục thực thi sau khối try-catch-finally.` (Sai vì chia cho 0 gây ra Exception)
  • B. `Không có output, vì chương trình bị crash.` (Sai vì có try-catch)
  • C. `Lỗi chia cho 0 đã xảy ra.
    Khối finally luôn được thực thi.
    Chương trình tiếp tục thực thi sau khối try-catch-finally.` (Đúng, exception được catch, finally luôn chạy)
  • D. `Lỗi chia cho 0 đã xảy ra.` (Sai vì thiếu output của finally và phần tiếp theo)

Câu 24: Đâu là cách tạo một luồng (thread) trong Java bằng cách implement interface?

  • A. Implement interface `Runnable` và override phương thức `run()`. Tạo đối tượng `Thread` từ `Runnable` object.
  • B. Kế thừa lớp `Thread` và override phương thức `start()`.
  • C. Sử dụng từ khóa `async` trước phương thức cần chạy trên luồng mới.
  • D. Không cần interface hay kế thừa, chỉ cần gọi phương thức `startThread()`.

Câu 25: Trong Java, reflection (phản xạ) là một tính năng mạnh mẽ. Ứng dụng chính của reflection là gì?

  • A. Tăng tốc độ biên dịch chương trình.
  • B. Cho phép chương trình kiểm tra và thao tác với lớp, interface, constructor, phương thức và trường (field) của một lớp một cách động tại runtime, ví dụ để kiểm tra metadata, tạo đối tượng động, gọi phương thức động.
  • C. Bảo mật code bằng cách ẩn thông tin chi tiết về lớp.
  • D. Tối ưu hóa bộ nhớ sử dụng bởi đối tượng.

Câu 26: Cho đoạn code Java sử dụng Date và Calendar API:
```java
Calendar calendar = Calendar.getInstance();
calendar.set(2024, Calendar.JANUARY, 15); // Set ngày 15/01/2024
Date date = calendar.getTime();
SimpleDateFormat formatter = new SimpleDateFormat(

  • A. 15/02/2024 (Sai tháng)
  • B. 15-01-2024 (Sai định dạng)
  • C. 01/15/2024 (Sai thứ tự ngày tháng)
  • D. 15/01/2024 (Đúng định dạng và ngày tháng)

Câu 27: Trong Java, Dependency Injection (DI - Tiêm phụ thuộc) là một design pattern quan trọng. Mục đích chính của DI là gì?

  • A. Tăng hiệu suất thực thi của chương trình.
  • B. Giảm số lượng dòng code cần viết.
  • C. Giảm sự phụ thuộc (coupling) giữa các thành phần của phần mềm bằng cách chuyển giao trách nhiệm tạo và quản lý các dependency (phụ thuộc) cho một container hoặc framework bên ngoài, giúp code dễ test và bảo trì hơn.
  • D. Tăng cường bảo mật cho ứng dụng.

Câu 28: Đâu là kiểu dữ liệu phù hợp nhất để lưu trữ một số nguyên lớn có thể vượt quá phạm vi của kiểu `long` trong Java?

  • A. `int`
  • B. `BigInteger`
  • C. `double`
  • D. `short`

Câu 29: Cho đoạn code Java sử dụng Collections:
```java
Set uniqueNames = new HashSet<>();
uniqueNames.add(

  • A. 3, vì có 3 lần add vào set.
  • B. 0, vì set không cho phép trùng lặp nên không có phần tử nào được thêm vào.
  • C. 2, vì `HashSet` chỉ chứa các phần tử duy nhất,
  • D. Lỗi runtime, vì cố gắng thêm phần tử trùng lặp vào Set.

Câu 30: Trong Java, SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ "L" trong SOLID đại diện cho nguyên tắc nào?

  • A. Single Responsibility Principle
  • B. Open/Closed Principle
  • C. Interface Segregation Principle
  • D. Liskov Substitution Principle

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

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 kế thừa các thuộc tính và phương thức của lớp cha, đồng thời có thể mở rộng hoặc sửa đổi chúng?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 2: Cho đoạn code Java sau:
```java
int a = 10;
int b = 5;
System.out.println(a > b ? a : b);
```
Đoạn code trên sẽ in ra giá trị nào? Giải thích tại sao.

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 3: 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ì?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 4: 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 cần phải được xử lý (checked exception) hoặc khai báo?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 5: Đâu là phát biểu đúng về interface (giao diện) trong Java?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 6: Cho đoạn code Java sau:
```java
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
```
Kết quả in ra của đoạn code trên là gì? Giải thích.

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 7: Trong Java Collections Framework, cấu trúc dữ liệu nào sau đây hoạt động theo nguyên tắc LIFO (Last-In, First-Out)?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 8: Phương thức `toString()` trong Java có vai trò gì?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 9: Cho đoạn code Java sau:
```java
public class MyClass {
static int count = 0;
public MyClass() {
count++;
}
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
System.out.println(MyClass.count);
}
}
```
Giá trị của `MyClass.count` được in ra là bao nhiêu? Giải thích.

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 10: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Ý nghĩa của `final` khi sử dụng với một lớp là gì?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 11: Đâu là cách khai báo và khởi tạo một mảng số nguyên có tên `numbers` chứa 5 phần tử trong Java?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 12: Cho đoạn code Java sau:
```java
int x = 5;
void modify(int val) {
val = val * 2;
}
modify(x);
System.out.println(x);
```
Giá trị của `x` được in ra là bao nhiêu? Giải thích cơ chế truyền tham số trong Java.

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 13: Trong lập trình đa luồng Java, synchronized keyword (từ khóa `synchronized`) được sử dụng để làm gì?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 14: Đâu là cách tạo một anonymous inner class (lớp nội tại vô danh) từ một interface `Drawable` có phương thức `draw()`?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 15: Trong Java, garbage collection (thu gom rác) là một tiến trình tự động. Mục đích chính của garbage collection là gì?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 16: Cho đoạn code Java sử dụng Streams API:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println(sum);
```
Giá trị của `sum` được in ra là bao nhiêu? Phân tích các bước xử lý của stream.

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 17: Trong Java, annotation (chú thích) được sử dụng để làm gì?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 18: Đâu là phạm vi truy cập (access modifier) có mức độ bảo vệ thấp nhất trong Java?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 19: Cho đoạn code Java:
```java
List names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
// ... code tiếp theo ...
```
Nếu muốn xóa phần tử "Bob" khỏi danh sách `names`, cách nào sau đây là đúng và hiệu quả nhất?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 20: Trong Java, serialization (tuần tự hóa) là quá trình chuyển đổi một đối tượng thành một chuỗi byte. Mục đích chính của serialization là gì?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 21: Cho đoạn code Java sử dụng Generics:
```java
public class Box {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
public static void main(String[] args) {
Box stringBox = new Box<>();
stringBox.setContent("Hello");
String message = stringBox.getContent();
System.out.println(message);
}
}
```
Generics (tham số hóa kiểu) trong Java được sử dụng để giải quyết vấn đề gì chính?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 22: Trong Java, lambda expression (biểu thức lambda) thường được sử dụng cùng với functional interface (interface hàm). Functional interface là gì?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 23: Cho đoạn code Java sử dụng try-catch block:
```java
try {
int result = 10 / 0; // Gây ra ArithmeticException
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Lỗi chia cho 0 đã xảy ra.");
} finally {
System.out.println("Khối finally luôn được thực thi.");
}
System.out.println("Chương trình tiếp tục thực thi sau khối try-catch-finally.");
```
Kết quả in ra của đoạn code trên là gì? Giải thích vai trò của khối `finally`.

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 24: Đâu là cách tạo một luồng (thread) trong Java bằng cách implement interface?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 25: Trong Java, reflection (phản xạ) là một tính năng mạnh mẽ. Ứng dụng chính của reflection là gì?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 26: Cho đoạn code Java sử dụng Date và Calendar API:
```java
Calendar calendar = Calendar.getInstance();
calendar.set(2024, Calendar.JANUARY, 15); // Set ngày 15/01/2024
Date date = calendar.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String formattedDate = formatter.format(date);
System.out.println(formattedDate);
```
Kết quả in ra của đoạn code trên là gì?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 27: Trong Java, Dependency Injection (DI - Tiêm phụ thuộc) là một design pattern quan trọng. Mục đích chính của DI là gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 28: Đâu là kiểu dữ liệu phù hợp nhất để lưu trữ một số nguyên lớn có thể vượt quá phạm vi của kiểu `long` trong Java?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 29: Cho đoạn code Java sử dụng Collections:
```java
Set uniqueNames = new HashSet<>();
uniqueNames.add("Alice");
uniqueNames.add("Bob");
uniqueNames.add("Alice"); // Thêm lại "Alice"
System.out.println(uniqueNames.size());
```
Giá trị của `uniqueNames.size()` được in ra là bao nhiêu? Giải thích đặc tính của `HashSet`.

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 04

Câu 30: Trong Java, SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ 'L' trong SOLID đại diện cho nguyên tắc nào?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 05

Trắc nghiệm 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: Xem xét đoạn mã Java sau:
```java
public class OperatorTest {
public static void main(String[] args) {
int x = 5;
int y = 2;
int result = x++ + ++y;
System.out.println(

  • A. Result: 7, x: 6, y: 3
  • B. Result: 8, x: 6, y: 3
  • C. Result: 8, x: 5, y: 3
  • D. Result: 7, x: 5, y: 2

Câu 2: Trong Java, đâu là sự khác biệt cốt lõi giữa kiểu dữ liệu nguyên thủy (primitive types) và kiểu dữ liệu tham chiếu (reference types)?

  • A. Kiểu nguyên thủy được lưu trữ trên heap, kiểu tham chiếu được lưu trữ trên stack.
  • B. Kiểu nguyên thủy có thể là null, kiểu tham chiếu thì không.
  • C. Biến kiểu nguyên thủy lưu trữ giá trị, biến kiểu tham chiếu lưu trữ địa chỉ bộ nhớ của đối tượng.
  • D. Kiểu nguyên thủy chỉ dùng cho số, kiểu tham chiếu chỉ dùng cho chuỗi và mảng.

Câu 3: Xem xét đoạn mã sau:
```java
String s1 = new String(

  • A. false
    true
    true
    true
  • B. true
    true
    false
    true
  • C. false
    false
    true
    true
  • D. true
    false
    false
    false

Câu 4: Đâu là mục đích chính của việc sử dụng từ khóa `final` trong Java?

  • A. Để chỉ ra rằng một phương thức phải được triển khai bởi lớp con.
  • B. Để cho phép một biến được truy cập từ bất kỳ đâu trong chương trình.
  • C. Để đảm bảo rằng một lớp chỉ có thể được tạo một thể hiện duy nhất (singleton).
  • D. Để ngăn chặn sự thay đổi: biến không thể gán lại, phương thức không thể ghi đè, lớp không thể kế thừa.

Câu 5: Xem xét đoạn mã sau:
```java
class Animal {
void makeSound() {
System.out.println(

  • A. Generic animal sound
  • B. Lỗi biên dịch
  • C. Woof
  • D. Chương trình chạy nhưng không in ra gì.

Câu 6: Đâu là mục đích chính của việc sử dụng từ khóa `super` trong một lớp con (subclass)?

  • A. Để tham chiếu đến thể hiện hiện tại của lớp con.
  • B. Để truy cập các thành viên của lớp cha hoặc gọi constructor của lớp cha.
  • C. Để khai báo một phương thức trừu tượng (abstract method).
  • D. Để chỉ ra rằng một biến là biến tĩnh (static variable).

Câu 7: Xem xét đoạn mã xử lý ngoại lệ (exception handling) sau:
```java
public class ExceptionTest {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(

  • A. Array index error
    Finally block executed
  • B. General error
    Finally block executed
  • C. Finally block executed
    Array index error
  • D. Lỗi biên dịch

Câu 8: Đâu là mô tả chính xác nhất về vai trò của JVM (Java Virtual Machine) trong hệ sinh thái Java?

  • A. JVM là trình biên dịch chuyển mã nguồn Java (.java) thành mã bytecode (.class).
  • B. JVM là tập hợp các thư viện chuẩn cung cấp các chức năng có sẵn cho lập trình viên.
  • C. JVM là môi trường runtime thực thi mã bytecode Java, cho phép chương trình chạy trên các nền tảng khác nhau.
  • D. JVM là công cụ dùng để quản lý các gói (packages) và lớp (classes) trong dự án Java.

Câu 9: Xem xét đoạn mã sau:
```java
public class LoopTest {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 5; i++) { if (i == 2) { continue; } if (i == 4) { break; } count++; } System.out.println(

  • A. Count: 5
  • B. Count: 3
  • C. Count: 4
  • D. Count: 2

Câu 10: Giả sử bạn cần lưu trữ một danh sách các đối tượng mà thứ tự các phần tử là quan trọng và cho phép các phần tử trùng lặp. Kiểu Collection nào trong Java Standard Library phù hợp nhất?

  • A. List (ví dụ: ArrayList)
  • B. Set (ví dụ: HashSet)
  • C. Map (ví dụ: HashMap)
  • D. Queue (ví dụ: ArrayDeque)

Câu 11: Xem xét hai khai báo phương thức sau trong cùng một lớp:
1. `public int process(int a, String b)`
2. `public String process(int a, String b)`
Đây là ví dụ về khái niệm nào trong OOP Java?

  • A. Ghi đè phương thức (Method Overriding)
  • B. Kế thừa (Inheritance)
  • C. Đóng gói (Encapsulation)
  • D. Nạp chồng phương thức (Method Overloading)

Câu 12: Đâu là nhược điểm chính của việc sử dụng `ArrayList` so với `LinkedList` khi thực hiện nhiều thao tác chèn hoặc xóa phần tử ở giữa danh sách?

  • A. Thao tác chèn/xóa ở giữa danh sách có hiệu suất kém hơn.
  • B. Chiếm nhiều bộ nhớ hơn cho cùng số lượng phần tử.
  • C. Không thể lưu trữ các phần tử null.
  • D. Không hỗ trợ truy cập ngẫu nhiên theo chỉ số.

Câu 13: Xem xét đoạn mã sau:
```java
public class StaticTest {
static int count = 0;
public StaticTest() {
count++;
}
public static void main(String[] args) {
StaticTest obj1 = new StaticTest();
StaticTest obj2 = new StaticTest();
System.out.println(StaticTest.count);
}
}
```
Kết quả đầu ra là gì?

  • A. 0
  • B. 1
  • C. 2
  • D. Lỗi biên dịch

Câu 14: Đâu là cách đúng để khai báo một mảng các số nguyên có kích thước 10 trong Java?

  • A. int arr[10];
  • B. int[] arr = new int[10];
  • C. int arr = new int[10];
  • D. int[10] arr;

Câu 15: Giả sử bạn có một lớp `Shape` trừu tượng (abstract class) với một phương thức trừu tượng `calculateArea()`. Lớp con `Circle` kế thừa từ `Shape`. Điều gì sẽ xảy ra nếu lớp `Circle` không triển khai phương thức `calculateArea()`?

  • A. Lớp `Circle` phải được khai báo là lớp trừu tượng (abstract class).
  • B. Lỗi runtime sẽ xảy ra khi cố gắng tạo đối tượng `Circle`.
  • C. Chương trình sẽ biên dịch thành công nhưng phương thức `calculateArea()` trong `Circle` sẽ không làm gì cả.
  • D. Lớp `Circle` sẽ tự động kế thừa triển khai mặc định của `calculateArea()` từ lớp `Shape`.

Câu 16: Đâu là cách tốt nhất để so sánh nội dung của hai chuỗi `String` trong Java?

  • A. Sử dụng toán tử `==`.
  • B. Sử dụng phương thức `.equals()`.
  • C. Sử dụng phương thức `.compareTo()`.
  • D. Sử dụng toán tử `!=`.

Câu 17: Xem xét đoạn mã sau:
```java
public class TypeCastingTest {
public static void main(String[] args) {
double d = 10.99;
int i = (int) d;
System.out.println(i);
}
}
```
Kết quả đầu ra là gì?

  • A. 10
  • B. 11
  • C. 10.99
  • D. Lỗi biên dịch

Câu 18: Đâu là lợi ích chính của việc sử dụng giao diện (interface) trong Java?

  • A. Cung cấp cài đặt mặc định cho các phương thức.
  • B. Cho phép tạo đối tượng trực tiếp từ interface.
  • C. Đảm bảo rằng tất cả các phương thức đều có thân (body).
  • D. Định nghĩa một hợp đồng về hành vi mà các lớp triển khai nó phải tuân theo, hỗ trợ đa kế thừa hành vi.

Câu 19: Xem xét đoạn mã sau:
```java
public class ConstructorTest {
String name;
int id;

public ConstructorTest(String name) {
this.name = name;
}

public ConstructorTest(String name, int id) {
this(name);
this.id = id;
}

public static void main(String[] args) {
ConstructorTest obj = new ConstructorTest(

  • A. null - 0
  • B. Test - 101
  • C. Test - 0
  • D. Lỗi biên dịch

Câu 20: Trong Java, đâu là phương thức chính để khởi tạo một đối tượng mới từ một lớp?

  • A. Gọi phương thức `init()` của lớp.
  • B. Sử dụng từ khóa `create`.
  • C. Sử dụng từ khóa `new` theo sau là tên lớp và dấu ngoặc đơn (gọi constructor).
  • D. Sử dụng phương thức `start()` của lớp.

Câu 21: Xem xét đoạn mã sau:
```java
public class ScopeTest {
int instanceVar = 10;
static int staticVar = 20;

public void methodA() {
int localVar = 30;
System.out.println(instanceVar);
System.out.println(staticVar);
System.out.println(localVar);
}

public static void main(String[] args) {
// Dòng code nào sau đây sẽ gây ra lỗi biên dịch?
// System.out.println(instanceVar);
// System.out.println(staticVar);
// System.out.println(localVar);
}
}
```
Trong phương thức `main` (static), dòng code nào sẽ gây ra lỗi biên dịch?

  • A. System.out.println(instanceVar);
  • B. System.out.println(staticVar);
  • C. System.out.println(localVar);
  • D. Cả hai dòng 1 và 3.

Câu 22: Khi nào thì cơ chế

  • A. Ngay sau khi biến tham chiếu đến đối tượng bị gán giá trị null.
  • B. Khi đối tượng không còn được tham chiếu bởi bất kỳ biến nào đang hoạt động.
  • C. Khi chương trình gọi phương thức `System.gc();`.
  • D. Khi đối tượng hoàn thành việc thực thi tất cả các phương thức của nó.

Câu 23: Xem xét đoạn mã sau:
```java
public class ArrayTest {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
int sum = 0;
for (int i = 0; i < arr.length; i++) { if (i % 2 == 0) { sum += arr[i]; } } System.out.println(

  • A. Sum: 15
  • B. Sum: 6
  • C. Sum: 9
  • D. Sum: 4

Câu 24: Đâu là mục đích chính của việc sử dụng từ khóa `this` trong một lớp Java?

  • A. Để tham chiếu đến thể hiện (đối tượng) hiện tại của lớp.
  • B. Để tham chiếu đến lớp cha (superclass).
  • C. Để khai báo một biến tĩnh (static variable).
  • D. Để chỉ ra rằng một phương thức trả về giá trị null.

Câu 25: Xem xét đoạn mã sau:
```java
public class StringManipulation {
public static void main(String[] args) {
String str =

  • A. Progr
  • B. Prog
  • C. Progra
  • D. Prog

Câu 26: Đâu là phương thức được JVM gọi đầu tiên khi một chương trình Java độc lập bắt đầu thực thi?

  • A. public static void main(String[] args)
  • B. public void start()
  • C. public static void run()
  • D. public Main()

Câu 27: Xem xét đoạn mã sau:
```java
public class ValueTest {
public static void modify(int num) {
num = num + 10;
System.out.println(

  • A. Inside modify: 15
    Inside main: 15
  • B. Inside modify: 15
    Inside main: 5
  • C. Inside modify: 5
    Inside main: 15
  • D. Lỗi biên dịch

Câu 28: Đâu là sự khác biệt chính giữa Checked Exception và Unchecked Exception trong Java?

  • A. Checked Exceptions xảy ra ở runtime, Unchecked Exceptions xảy ra ở compile-time.
  • B. Checked Exceptions là các lỗi nghiêm trọng, Unchecked Exceptions là các cảnh báo nhẹ.
  • C. Checked Exceptions bắt buộc phải được xử lý hoặc khai báo, Unchecked Exceptions thì không.
  • D. Checked Exceptions chỉ liên quan đến I/O, Unchecked Exceptions liên quan đến logic chương trình.

Câu 29: Giả sử bạn cần định nghĩa một hằng số (constant) trong một lớp, mà giá trị của nó là duy nhất cho tất cả các thể hiện của lớp và không thể thay đổi. Cú pháp khai báo nào sau đây là phù hợp nhất?

  • A. final int MY_CONSTANT = 100;
  • B. static int MY_CONSTANT = 100;
  • C. public int MY_CONSTANT = 100;
  • D. public static final int MY_CONSTANT = 100;

Câu 30: Xem xét đoạn mã sau:
```java
public class SwitchTest {
public static void main(String[] args) {
int day = 3;
String dayName;
switch (day) {
case 1:
dayName =

  • A. Day: Unknown
  • B. Day: Wednesday
  • C. Day: Thursday
  • D. Lỗi biên dịch

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 1: Xem xét đoạn mã Java sau:
```java
public class OperatorTest {
public static void main(String[] args) {
int x = 5;
int y = 2;
int result = x++ + ++y;
System.out.println("Result: " + result + ", x: " + x + ", y: " + y);
}
}
```
Kết quả đầu ra khi chạy đoạn mã này là gì?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 2: Trong Java, đâu là sự khác biệt cốt lõi giữa kiểu dữ liệu nguyên thủy (primitive types) và kiểu dữ liệu tham chiếu (reference types)?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 3: Xem xét đoạn mã sau:
```java
String s1 = new String("Java");
String s2 = "Java";
String s3 = s1;
String s4 = "Java";

System.out.println(s1 == s2);
System.out.println(s2 == s4);
System.out.println(s1.equals(s2));
System.out.println(s3.equals(s1));
```
Kết quả đầu ra lần lượt của các lệnh `println` là gì?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 4: Đâu là mục đích chính của việc sử dụng từ khóa `final` trong Java?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 5: Xem xét đoạn mã sau:
```java
class Animal {
void makeSound() {
System.out.println("Generic animal sound");
}
}

class Dog extends Animal {
void makeSound() {
System.out.println("Woof");
}
}

public class Vet {
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.makeSound();
}
}
```
Kết quả đầu ra của chương trình này là gì?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 6: Đâu là mục đích chính của việc sử dụng từ khóa `super` trong một lớp con (subclass)?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 7: Xem xét đoạn mã xử lý ngoại lệ (exception handling) sau:
```java
public class ExceptionTest {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array index error");
} catch (Exception e) {
System.out.println("General error");
} finally {
System.out.println("Finally block executed");
}
}
}
```
Kết quả đầu ra của chương trình này là gì?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 8: Đâu là mô tả chính xác nhất về vai trò của JVM (Java Virtual Machine) trong hệ sinh thái Java?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 9: Xem xét đoạn mã sau:
```java
public class LoopTest {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 5; i++) { if (i == 2) { continue; } if (i == 4) { break; } count++; } System.out.println("Count: " + count); } } ``` Kết quả đầu ra của chương trình này là gì?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 10: Giả sử bạn cần lưu trữ một danh sách các đối tượng mà thứ tự các phần tử là quan trọng và cho phép các phần tử trùng lặp. Kiểu Collection nào trong Java Standard Library phù hợp nhất?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 11: Xem xét hai khai báo phương thức sau trong cùng một lớp:
1. `public int process(int a, String b)`
2. `public String process(int a, String b)`
Đây là ví dụ về khái niệm nào trong OOP Java?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 12: Đâu là nhược điểm chính của việc sử dụng `ArrayList` so với `LinkedList` khi thực hiện nhiều thao tác chèn hoặc xóa phần tử ở giữa danh sách?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 13: Xem xét đoạn mã sau:
```java
public class StaticTest {
static int count = 0;
public StaticTest() {
count++;
}
public static void main(String[] args) {
StaticTest obj1 = new StaticTest();
StaticTest obj2 = new StaticTest();
System.out.println(StaticTest.count);
}
}
```
Kết quả đầu ra là gì?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 14: Đâu là cách đúng để khai báo một mảng các số nguyên có kích thước 10 trong Java?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 15: Giả sử bạn có một lớp `Shape` trừu tượng (abstract class) với một phương thức trừu tượng `calculateArea()`. Lớp con `Circle` kế thừa từ `Shape`. Điều gì sẽ xảy ra nếu lớp `Circle` không triển khai phương thức `calculateArea()`?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 16: Đâu là cách tốt nhất để so sánh nội dung của hai chuỗi `String` trong Java?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 17: Xem xét đoạn mã sau:
```java
public class TypeCastingTest {
public static void main(String[] args) {
double d = 10.99;
int i = (int) d;
System.out.println(i);
}
}
```
Kết quả đầu ra là gì?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 18: Đâu là lợi ích chính của việc sử dụng giao diện (interface) trong Java?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 19: Xem xét đoạn mã sau:
```java
public class ConstructorTest {
String name;
int id;

public ConstructorTest(String name) {
this.name = name;
}

public ConstructorTest(String name, int id) {
this(name);
this.id = id;
}

public static void main(String[] args) {
ConstructorTest obj = new ConstructorTest("Test", 101);
System.out.println(obj.name + " - " + obj.id);
}
}
```
Kết quả đầu ra là gì?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 20: Trong Java, đâu là phương thức chính để khởi tạo một đối tượng mới từ một lớp?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 21: Xem xét đoạn mã sau:
```java
public class ScopeTest {
int instanceVar = 10;
static int staticVar = 20;

public void methodA() {
int localVar = 30;
System.out.println(instanceVar);
System.out.println(staticVar);
System.out.println(localVar);
}

public static void main(String[] args) {
// Dòng code nào sau đây sẽ gây ra lỗi biên dịch?
// System.out.println(instanceVar);
// System.out.println(staticVar);
// System.out.println(localVar);
}
}
```
Trong phương thức `main` (static), dòng code nào sẽ gây ra lỗi biên dịch?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 22: Khi nào thì cơ chế "Garbage Collection" của Java có khả năng giải phóng bộ nhớ cho một đối tượng?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 23: Xem xét đoạn mã sau:
```java
public class ArrayTest {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
int sum = 0;
for (int i = 0; i < arr.length; i++) { if (i % 2 == 0) { sum += arr[i]; } } System.out.println("Sum: " + sum); } } ``` Kết quả đầu ra là gì?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 24: Đâu là mục đích chính của việc sử dụng từ khóa `this` trong một lớp Java?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 25: Xem xét đoạn mã sau:
```java
public class StringManipulation {
public static void main(String[] args) {
String str = "Java Programming";
System.out.println(str.substring(5, 9));
}
}
```
Kết quả đầu ra là gì?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 26: Đâu là phương thức được JVM gọi đầu tiên khi một chương trình Java độc lập bắt đầu thực thi?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 27: Xem xét đoạn mã sau:
```java
public class ValueTest {
public static void modify(int num) {
num = num + 10;
System.out.println("Inside modify: " + num);
}

public static void main(String[] args) {
int x = 5;
modify(x);
System.out.println("Inside main: " + x);
}
}
```
Kết quả đầu ra là gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 28: Đâu là sự khác biệt chính giữa Checked Exception và Unchecked Exception trong Java?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 29: Giả sử bạn cần định nghĩa một hằng số (constant) trong một lớp, mà giá trị của nó là duy nhất cho tất cả các thể hiện của lớp và không thể thay đổi. Cú pháp khai báo nào sau đây là phù hợp nhất?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 05

Câu 30: Xem xét đoạn mã sau:
```java
public class SwitchTest {
public static void main(String[] args) {
int day = 3;
String dayName;
switch (day) {
case 1:
dayName = "Monday";
case 2:
dayName = "Tuesday";
case 3:
dayName = "Wednesday";
case 4:
dayName = "Thursday";
default:
dayName = "Unknown";
}
System.out.println("Day: " + dayName);
}
}
```
Kết quả đầu ra là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 06

Trắc nghiệm 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: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về mối quan hệ giữa lớp (class) và đối tượng (object)?

  • A. Lớp và đối tượng là hoàn toàn giống nhau và có thể sử dụng thay thế cho nhau.
  • B. Lớp là một bản thiết kế hoặc khuôn mẫu, còn đối tượng là một thể hiện cụ thể của lớp đó.
  • C. Đối tượng chứa định nghĩa của lớp, lớp được tạo ra từ các đối tượng.
  • D. Lớp chỉ tồn tại trong quá trình biên dịch, đối tượng chỉ tồn tại khi chương trình thực thi.

Câu 2: Cho đoạn mã Java sau:
```java
public class Test {
public static void main(String[] args) {
String str1 =

  • A. true
    true
  • B. false
    false
  • C. false
    true
  • D. true
    false

Câu 3: Phương thức `parseInt()` thuộc lớp nào trong Java và mục đích sử dụng của nó là gì?

  • A. Lớp `Integer`, dùng để chuyển đổi một chuỗi ký tự thành số nguyên.
  • B. Lớp `String`, dùng để chuyển đổi một số nguyên thành chuỗi ký tự.
  • C. Lớp `Scanner`, dùng để đọc số nguyên từ đầu vào.
  • D. Lớp `System`, dùng để in ra số nguyên.

Câu 4: Trong Java, từ khóa `static` được sử dụng để khai báo thành viên tĩnh (static member) của một lớp. Lợi ích chính của việc sử dụng thành viên tĩnh là gì?

  • A. Tạo ra các biến và phương thức có thể truy cập từ bất kỳ đâu trong chương trình mà không cần quan tâm đến phạm vi.
  • B. Cho phép tạo ra các lớp không thể khởi tạo đối tượng.
  • C. Giúp tăng tốc độ thực thi của chương trình do các thành viên tĩnh được tối ưu hóa bởi JVM.
  • D. Các thành viên tĩnh thuộc về lớp chứ không phải đối tượng cụ thể, giúp chia sẻ dữ liệu và phương thức chung giữa tất cả các đối tượng của lớp.

Câu 5: Xét đoạn mã Java sau:
```java
interface Drawable {
void draw();
}

class Circle implements Drawable {
public void draw() {
System.out.println(

  • A. Tính đóng gói (Encapsulation)
  • B. Tính kế thừa (Inheritance)
  • C. Tính đa hình (Polymorphism)
  • D. Tính trừu tượng (Abstraction)

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. Phát biểu nào sau đây mô tả đúng nhất về mục đích của việc xử lý ngoại lệ?

  • A. Ngăn chặn hoàn toàn các lỗi xảy ra trong chương trình.
  • B. Cho phép chương trình tiếp tục thực thi một cách kiểm soát ngay cả khi có lỗi xảy ra.
  • C. Tự động sửa lỗi và đảm bảo chương trình luôn chạy đúng kết quả mong muốn.
  • D. Báo cáo lỗi cho người dùng cuối để họ tự sửa lỗi.

Câu 7: Cho biết kết quả đầu ra của đoạn mã Java sau:
```java
public class LoopTest {
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 5
  • D. 0 1 2 4

Câu 8: Trong Java, bộ nhớ được quản lý tự động bởi Garbage Collector. Cơ chế hoạt động chính của Garbage Collector là gì?

  • A. Giải phóng bộ nhớ ngay khi một đối tượng không còn được sử dụng đến nữa.
  • B. Định kỳ quét toàn bộ bộ nhớ để tìm và giải phóng các đối tượng không còn tham chiếu đến.
  • C. Theo dõi các đối tượng và giải phóng bộ nhớ của những đối tượng không còn đường dẫn tham chiếu từ các biến gốc (root variables).
  • D. Chỉ giải phóng bộ nhớ khi chương trình kết thúc hoặc khi bộ nhớ vật lý sắp đầy.

Câu 9: Phương thức `substring(int beginIndex, int endIndex)` của lớp `String` trong Java trả về giá trị gì?

  • A. Trả về một chuỗi mới chứa các ký tự từ `beginIndex` đến `endIndex` (bao gồm cả hai chỉ số).
  • B. Trả về một chuỗi mới chứa các ký tự từ `beginIndex` đến `endIndex - 1` (không bao gồm `endIndex`).
  • C. Trả về một chuỗi mới chứa các ký tự từ đầu chuỗi đến `endIndex - beginIndex` ký tự.
  • D. Trả về một chuỗi rỗng nếu `beginIndex` lớn hơn hoặc bằng `endIndex`, ngược lại trả về chuỗi gốc.

Câu 10: 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 (primitive data type)?

  • A. int
  • B. boolean
  • C. char
  • D. String

Câu 11: Cho đoạn code 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 code 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 12: Từ khóa `final` trong Java có thể được sử dụng với biến, phương thức và lớp. Khi `final` được sử dụng với một lớp, điều đó có nghĩa là gì?

  • A. Lớp đó không thể được sửa đổi sau khi đã biên dịch.
  • B. Lớp đó không thể tạo ra bất kỳ đối tượng nào.
  • C. Lớp đó không thể được kế thừa bởi bất kỳ lớp nào khác.
  • D. Lớp đó chỉ có thể chứa các phương thức và biến tĩnh.

Câu 13: Cho đoạn mã Java:
```java
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.print(number +

  • A. Vòng lặp `for` truyền thống, lặp qua các phần tử của mảng dựa trên chỉ số.
  • B. Vòng lặp for-each (enhanced for loop), lặp qua từng phần tử của mảng hoặc collection một cách tuần tự.
  • C. Vòng lặp `while`, lặp cho đến khi một điều kiện sai.
  • D. Vòng lặp `do-while`, lặp ít nhất một lần và tiếp tục lặp cho đến khi một điều kiện sai.

Câu 14: Trong Java, interface (giao diện) và abstract class (lớp trừu tượng) đều được sử dụng để đạt được tính trừu tượng. Sự khác biệt chính giữa interface và abstract class là gì?

  • A. Một lớp có thể kế thừa nhiều interface nhưng chỉ có thể kế thừa một abstract class.
  • B. Interface có thể chứa các phương thức có thân hàm, abstract class thì không.
  • C. Abstract class được sử dụng để định nghĩa hành vi, interface được sử dụng để định nghĩa trạng thái.
  • D. Interface có thể chứa các biến thành viên, abstract class thì không.

Câu 15: Cho đoạn mã Java sau:
```java
public class ScopeTest {
int x = 10; // Biến instance
static int y = 20; // Biến static

public void methodA() {
int z = 30; // Biến local
System.out.println(x + y + z);
}

public static void methodB() {
// System.out.println(x); // Lỗi biên dịch
System.out.println(y);
}

public static void main(String[] args) {
ScopeTest st = new ScopeTest();
st.methodA();
methodB();
}
}
```
Giải thích tại sao dòng `System.out.println(x);` trong `methodB()` lại gây ra lỗi biên dịch?

  • A. Vì biến `x` được khai báo là `int` trong khi `methodB()` mong đợi một biến kiểu `String`.
  • B. Vì biến `x` chỉ có thể được truy cập từ phương thức `methodA()`.
  • C. Vì `methodB()` là phương thức `static`, nó chỉ có thể truy cập các thành viên `static` của lớp, và `x` là biến instance (không static).
  • D. Vì biến `x` được khai báo sau khi `methodB()` được định nghĩa.

Câu 16: Trong Java, constructor (hàm tạo) có vai trò quan trọng trong việc khởi tạo đối tượng. Phát biểu nào sau đây mô tả đúng nhất về mục đích của constructor?

  • A. Giải phóng bộ nhớ đã cấp phát cho đối tượng khi đối tượng không còn được sử dụng.
  • B. Khởi tạo trạng thái ban đầu cho đối tượng khi nó được tạo ra, thường là gán giá trị cho các biến instance.
  • C. Định nghĩa các phương thức mà đối tượng có thể thực hiện.
  • D. Kiểm tra tính hợp lệ của đối tượng trước khi nó được sử dụng.

Câu 17: Cho đoạn mã Java sau:
```java
String message =

  • A. 2
  • B. 3
  • C. 4
  • D. 5

Câu 18: Trong Java, từ khóa `this` được sử dụng bên trong một phương thức hoặc constructor. `this` tham chiếu đến đối tượng nào?

  • A. Tham chiếu đến lớp hiện tại.
  • B. Tham chiếu đến lớp cha của lớp hiện tại.
  • C. Tham chiếu đến một đối tượng khác trong cùng lớp.
  • D. Tham chiếu đến đối tượng hiện tại mà phương thức hoặc constructor đang được gọi.

Câu 19: Khi nào thì một biến instance (biến không static) được khởi tạo trong Java?

  • A. Khi một đối tượng của lớp chứa biến instance đó được tạo ra.
  • B. Khi lớp chứa biến instance được biên dịch.
  • C. Khi chương trình Java bắt đầu thực thi.
  • D. Khi phương thức main() của lớp được gọi.

Câu 20: Cho đoạn mã Java sau:
```java
public class ArrayTest {
public static void main(String[] args) {
int[] arr = new int[5];
System.out.println(arr[5]);
}
}
```
Đoạn mã trên sẽ gây ra lỗi gì khi thực thi?

  • A. Lỗi biên dịch (Compilation error)
  • B. Lỗi thời gian chạy (Runtime error) - ArrayIndexOutOfBoundsException
  • C. Không có lỗi, chương trình chạy và in ra giá trị mặc định của phần tử thứ 6.
  • D. Lỗi logic (Logical error) - chương trình chạy nhưng kết quả không đúng mong đợi.

Câu 21: Trong Java, package (gói) được sử dụng để tổ chức và quản lý các lớp và interface. Lợi ích chính của việc sử dụng package là gì?

  • A. Tăng tốc độ biên dịch và thực thi chương trình.
  • B. Giảm kích thước file .class sau khi biên dịch.
  • C. Cải thiện hiệu suất sử dụng bộ nhớ của chương trình.
  • D. Tránh xung đột tên lớp, tổ chức code một cách logic và quản lý quyền truy cập.

Câu 22: Phương thức `equals()` được định nghĩa trong lớp `Object` và thường được ghi đè (override) trong các lớp con. Mục đích của việc ghi đè phương thức `equals()` là gì?

  • A. Để so sánh tham chiếu của hai đối tượng (xem chúng có phải là cùng một đối tượng trong bộ nhớ hay không).
  • B. Để kiểm tra xem một đối tượng có phải là thể hiện của một lớp cụ thể hay không.
  • C. Để so sánh nội dung (giá trị các thuộc tính) của hai đối tượng để xác định xem chúng có "bằng nhau" theo nghĩa logic của ứng dụng hay không.
  • D. Để chuyển đổi một đối tượng sang kiểu dữ liệu khác.

Câu 23: Cho đoạn mã Java sau:
```java
int x = 5;
int y = 2;
double result = (double) x / y;
System.out.println(result);
```
Kết quả in ra của đoạn mã trên là gì?

  • A. 2.5
  • B. 2
  • C. 2.0
  • D. 3

Câu 24: Trong Java, annotation (chú thích) được sử dụng để cung cấp metadata (dữ liệu về dữ liệu) cho chương trình. Mục đích chính của việc sử dụng annotation là gì?

  • A. Thay thế cho comment (chú thích) thông thường trong code để giải thích code rõ ràng hơn.
  • B. Cung cấp thông tin bổ sung cho trình biên dịch, JVM hoặc các công cụ khác để xử lý code theo một cách đặc biệt.
  • C. Cải thiện hiệu suất thực thi của chương trình bằng cách tối ưu hóa code.
  • D. Bảo vệ code khỏi bị sao chép hoặc sửa đổi trái phép.

Câu 25: Phương thức `toString()` được định nghĩa trong lớp `Object` và thường được ghi đè trong các lớp con. Mục đích của việc ghi đè phương thức `toString()` là gì?

  • A. Để so sánh hai đối tượng xem chúng có bằng nhau hay không.
  • B. Để chuyển đổi một đối tượng sang kiểu dữ liệu nguyên thủy.
  • C. Để trả về một chuỗi ký tự đại diện cho đối tượng, thường được sử dụng để in thông tin đối tượng hoặc debug.
  • D. Để kiểm tra kiểu dữ liệu của đối tượng.

Câu 26: Trong Java, luồng (thread) được sử dụng để thực hiện đa nhiệm (multitasking). Lợi ích chính của việc sử dụng đa luồng là gì?

  • A. Giảm dung lượng bộ nhớ chương trình sử dụng.
  • B. Đơn giản hóa cấu trúc code và logic chương trình.
  • C. Tăng tính bảo mật cho ứng dụng.
  • D. Cải thiện hiệu suất và khả năng phản hồi của ứng dụng bằng cách cho phép thực hiện đồng thời nhiều công việc.

Câu 27: Cho đoạn mã Java sau:
```java
int a = 10;
int b = 5;
boolean condition1 = (a > 8) && (b < 6); boolean condition2 = (a < 8) || (b > 6);
System.out.println(condition1);
System.out.println(condition2);
```
Kết quả in ra của đoạn mã trên là gì?

  • A. true
    true
  • B. true
    false
  • C. false
    true
  • D. false
    false

Câu 28: Trong Java, access modifier (bộ điều khiển truy cập) quy định phạm vi truy cập của các thành viên lớp (biến và phương thức). Access modifier nào có phạm vi truy cập rộng nhất?

  • A. `public`
  • B. `protected`
  • C. `default` (không có modifier)
  • D. `private`

Câu 29: Sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java Collections Framework là gì?

  • A. `ArrayList` cho phép truy cập ngẫu nhiên các phần tử nhanh hơn, trong khi `LinkedList` cho phép thêm/xóa phần tử ở đầu/cuối nhanh hơn.
  • B. `ArrayList` sử dụng bộ nhớ hiệu quả hơn `LinkedList`.
  • C. `ArrayList` dựa trên mảng động, truy cập phần tử theo chỉ số nhanh, thêm/xóa ở giữa chậm. `LinkedList` dựa trên danh sách liên kết đôi, thêm/xóa nhanh ở mọi vị trí, truy cập theo chỉ số chậm.
  • D. `LinkedList` chỉ có thể chứa các đối tượng, `ArrayList` có thể chứa cả kiểu dữ liệu nguyên thủy và đối tượng.

Câu 30: 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, in ra
  • B. Toán tử so sánh, in ra
  • C. Toán tử logic AND, in ra
  • D. Toán tử ternary (điều kiện), in ra

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 1: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về mối quan hệ giữa lớp (class) và đối tượng (object)?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 2: Cho đoạn mã Java sau:
```java
public class Test {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}
}
```
Đoạn mã trên sẽ in ra kết quả gì?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 3: Phương thức `parseInt()` thuộc lớp nào trong Java và mục đích sử dụng của nó là gì?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 4: Trong Java, từ khóa `static` được sử dụng để khai báo thành viên tĩnh (static member) của một lớp. Lợi ích chính của việc sử dụng thành viên tĩnh là gì?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 5: Xét đoạn mã Java sau:
```java
interface Drawable {
void draw();
}

class Circle implements Drawable {
public void draw() {
System.out.println("Drawing circle");
}
}

class Rectangle implements Drawable {
public void draw() {
System.out.println("Drawing rectangle");
}
}

public class Main {
public static void main(String[] args) {
Drawable d = new Circle();
d.draw();
d = new Rectangle();
d.draw();
}
}
```
Đoạn mã trên minh họa khái niệm lập trình hướng đối tượng nào?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

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. Phát biểu nào sau đây mô tả đúng nhất về mục đích của việc xử lý ngoại lệ?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 7: Cho biết kết quả đầu ra của đoạn mã Java sau:
```java
public class LoopTest {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) { if (i == 3) { continue; } System.out.print(i + " "); } } } ```

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 8: Trong Java, bộ nhớ được quản lý tự động bởi Garbage Collector. Cơ chế hoạt động chính của Garbage Collector là gì?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 9: Phương thức `substring(int beginIndex, int endIndex)` của lớp `String` trong Java trả về giá trị gì?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 10: 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 (primitive data type)?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 11: Cho đoạn code 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 code trên thể hiện khái niệm nào trong lập trình hướng đối tượng?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 12: Từ khóa `final` trong Java có thể được sử dụng với biến, phương thức và lớp. Khi `final` được sử dụng với một lớp, điều đó có nghĩa là gì?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 13: Cho đoạn mã Java:
```java
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.print(number + " ");
}
```
Đây là loại vòng lặp nào và nó hoạt động như thế nào?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 14: Trong Java, interface (giao diện) và abstract class (lớp trừu tượng) đều được sử dụng để đạt được tính trừu tượng. Sự khác biệt chính giữa interface và abstract class là gì?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 15: Cho đoạn mã Java sau:
```java
public class ScopeTest {
int x = 10; // Biến instance
static int y = 20; // Biến static

public void methodA() {
int z = 30; // Biến local
System.out.println(x + y + z);
}

public static void methodB() {
// System.out.println(x); // Lỗi biên dịch
System.out.println(y);
}

public static void main(String[] args) {
ScopeTest st = new ScopeTest();
st.methodA();
methodB();
}
}
```
Giải thích tại sao dòng `System.out.println(x);` trong `methodB()` lại gây ra lỗi biên dịch?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 16: Trong Java, constructor (hàm tạo) có vai trò quan trọng trong việc khởi tạo đối tượng. Phát biểu nào sau đây mô tả đúng nhất về mục đích của constructor?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 17: Cho đoạn mã Java sau:
```java
String message = "Welcome to Java";
String[] words = message.split(" ");
System.out.println(words.length);
```
Kết quả in ra của đoạn mã trên là gì?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 18: Trong Java, từ khóa `this` được sử dụng bên trong một phương thức hoặc constructor. `this` tham chiếu đến đối tượng nào?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 19: Khi nào thì một biến instance (biến không static) được khởi tạo trong Java?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 20: Cho đoạn mã Java sau:
```java
public class ArrayTest {
public static void main(String[] args) {
int[] arr = new int[5];
System.out.println(arr[5]);
}
}
```
Đoạn mã trên sẽ gây ra lỗi gì khi thực thi?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 21: Trong Java, package (gói) được sử dụng để tổ chức và quản lý các lớp và interface. Lợi ích chính của việc sử dụng package là gì?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 22: Phương thức `equals()` được định nghĩa trong lớp `Object` và thường được ghi đè (override) trong các lớp con. Mục đích của việc ghi đè phương thức `equals()` là gì?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 23: Cho đoạn mã Java sau:
```java
int x = 5;
int y = 2;
double result = (double) x / y;
System.out.println(result);
```
Kết quả in ra của đoạn mã trên là gì?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 24: Trong Java, annotation (chú thích) được sử dụng để cung cấp metadata (dữ liệu về dữ liệu) cho chương trình. Mục đích chính của việc sử dụng annotation là gì?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 25: Phương thức `toString()` được định nghĩa trong lớp `Object` và thường được ghi đè trong các lớp con. Mục đích của việc ghi đè phương thức `toString()` là gì?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 26: Trong Java, luồng (thread) được sử dụng để thực hiện đa nhiệm (multitasking). Lợi ích chính của việc sử dụng đa luồng là gì?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 27: Cho đoạn mã Java sau:
```java
int a = 10;
int b = 5;
boolean condition1 = (a > 8) && (b < 6); boolean condition2 = (a < 8) || (b > 6);
System.out.println(condition1);
System.out.println(condition2);
```
Kết quả in ra của đoạn mã trên là gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 28: Trong Java, access modifier (bộ điều khiển truy cập) quy định phạm vi truy cập của các thành viên lớp (biến và phương thức). Access modifier nào có phạm vi truy cập rộng nhất?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 29: Sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java Collections Framework là gì?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 06

Câu 30: Cho đoạn mã Java sau:
```java
public class TernaryOperator {
public static void main(String[] args) {
int age = 20;
String message = (age >= 18) ? "Adult" : "Minor";
System.out.println(message);
}
}
```
Đoạn mã trên sử dụng toán tử nào và kết quả in ra là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 07

Trắc nghiệm Java - Đề 07 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 thêm hoặc sửa đổi các phương thức đã kế thừa?

  • A. Tính đóng gói (Encapsulation)
  • B. Tính kế thừa (Inheritance)
  • C. Tính đa hình (Polymorphism)
  • D. Tính trừu tượng (Abstraction)

Câu 2: Cho đoạn mã Java sau:
```java
int[] numbers = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
if (number % 2 == 0) {
sum += number;
}
}
System.out.println(sum);
```
Đoạn mã trên sẽ in ra giá trị nào?

  • A. 15
  • B. 9
  • C. 6
  • D. 5

Câu 3: Phương thức `equals()` và toán tử `==` trong Java khác nhau như thế nào khi so sánh các đối tượng (Objects)?

  • A. Cả hai đều so sánh giá trị của đối tượng.
  • B. 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 nội dung (giá trị) của đối tượng, còn `==` so sánh tham chiếu (vị trí bộ nhớ) của đối tượng.

Câu 4: Trong Java, exception (ngoại lệ) được sử dụng để xử lý tình huống nào?

  • A. Lỗi cú pháp trong quá trình biên dịch chương trình.
  • B. Lỗi xảy ra trong quá trình thực thi chương trình (runtime errors).
  • C. Các cảnh báo từ trình biên dịch về hiệu suất chương trình.
  • D. Để tối ưu hóa bộ nhớ và tốc độ thực thi chương trình.

Câu 5: Cho biết kết quả biên dịch và thực thi của đoạn mã Java sau:
```java
public class Test {
public static void main(String[] args) {
String str1 = new String(

  • A. In ra `true`
  • B. Gây ra lỗi biên dịch
  • C. In ra `false`
  • D. Gây ra lỗi runtime

Câu 6: Interface trong Java được sử dụng để làm gì?

  • A. Định nghĩa một contract (giao ước) mà các lớp (classes) có thể thực thi.
  • B. Tạo ra các đối tượng (objects) mà không cần lớp (class).
  • C. Thay thế cho việc sử dụng lớp trừu tượng (abstract class).
  • D. Quản lý bộ nhớ và thu gom rác (garbage collection).

Câu 7: Đâu là phát biểu đúng về từ khóa `static` trong Java?

  • A. Các biến `static` chỉ có thể được truy cập từ bên trong lớp chứa chúng.
  • B. Các thành viên `static` (biến và phương thức) thuộc về lớp, không phải là đối tượng cụ thể của lớp.
  • C. Phương thức `static` không thể truy cập các biến non-static của lớp.
  • D. Từ khóa `static` chỉ được sử dụng cho các biến, không dùng cho phương thức.

Câu 8: Trong Java Collections Framework, lớp `ArrayList` và `LinkedList` khác nhau chủ yếu ở điểm nào?

  • A. `ArrayList` cho phép lưu trữ các phần tử trùng lặp, còn `LinkedList` thì không.
  • B. `LinkedList` nhanh hơn `ArrayList` trong việc truy cập ngẫu nhiên các phần tử.
  • C. `ArrayList` sử dụng mảng động, truy cập phần tử theo chỉ số nhanh; `LinkedList` sử dụng danh sách liên kết, thêm/xóa phần tử ở đầu và cuối nhanh.
  • D. `ArrayList` chỉ có thể chứa các đối tượng kiểu String, còn `LinkedList` có thể chứa mọi kiểu đối tượng.

Câu 9: Cho đoạn mã Java sau:
```java
String message =

  • A. Hello
  • B. World
  • C. Hello World
  • D. Lỗi runtime: StringIndexOutOfBoundsException

Câu 10: Đâu là cách khai báo một biến hằng số (constant) trong Java?

  • A. const int MAX_VALUE = 100;
  • B. static final int MAX_VALUE = 100;
  • C. readonly int MAX_VALUE = 100;
  • D. final static int MAX_VALUE = 100;

Câu 11: Phương thức `parseInt()` thuộc lớp nào trong Java và dùng để làm gì?

  • A. Lớp `Integer`, dùng để chuyển đổi một chuỗi (String) thành số nguyên (int).
  • B. Lớp `String`, dùng để chuyển đổi một số nguyên (int) thành chuỗi (String).
  • C. Lớp `Scanner`, dùng để đọc số nguyên từ đầu vào.
  • D. Lớp `Math`, dùng để tính căn bậc hai của một số nguyên.

Câu 12: Cho đoạn mã Java sau:
```java
int x = 5;
int y = 10;
System.out.println(x++ + --y);
System.out.println(x + y);
```
Đoạn mã trên sẽ in ra kết quả gì?

  • A. 15
    16
  • B. 14
    16
  • C. 15
    17
  • D. 14
    17

Câu 13: Trong Java, garbage collection (thu gom rác) là gì và nó hoạt động như thế nào?

  • A. Một cơ chế để phát hiện và sửa lỗi logic trong chương trình.
  • B. Quá trình tối ưu hóa hiệu suất chương trình bằng cách giảm thiểu việc sử dụng bộ nhớ.
  • C. Một quá trình tự động quản lý bộ nhớ, giải phóng bộ nhớ không còn được tham chiếu bởi chương trình.
  • D. Một công cụ của lập trình viên để chủ động giải phóng bộ nhớ khi không còn cần thiết.

Câu 14: Đâu là mục đích chính của từ khóa `super` trong Java?

  • A. Để tạo ra một đối tượng (object) của lớp cha.
  • B. Để truy cập các biến `static` của lớp cha.
  • C. Để khai báo một lớp con (subclass) kế thừa từ lớp cha.
  • D. Để gọi constructor hoặc phương thức của lớp cha từ lớp con.

Câu 15: Phương thức `toString()` trong Java có vai trò gì?

  • A. So sánh hai đối tượng xem có bằng nhau hay không.
  • B. Trả về một chuỗi (String) đại diện cho đối tượng.
  • C. Chuyển đổi một đối tượng sang kiểu dữ liệu String.
  • D. Kiểm tra xem một đối tượng có phải là kiểu String hay không.

Câu 16: Cho đoạn mã Java sau:
```java
try {
int result = 10 / 0;
System.out.println(

  • A. Result: Infinity
    Khối finally luôn được thực thi.
  • B. Result: 0
    Khối finally luôn được thực thi.
  • C. Lỗi chia cho 0!
    Khối finally luôn được thực thi.
  • D. Chương trình bị dừng lại do lỗi.

Câu 17: Đâu là cách tạo một luồng (Thread) trong Java?

  • A. Bằng cách implement interface `Runnable` hoặc kế thừa lớp `Thread`.
  • B. Sử dụng từ khóa `async` trước một phương thức.
  • C. Khai báo một biến kiểu `Thread` và gán giá trị cho nó.
  • D. Sử dụng lớp `Timer` để lên lịch thực thi các tác vụ.

Câu 18: Trong Java, Serialization là gì và để làm gì?

  • A. Quá trình mã hóa dữ liệu để bảo mật thông tin.
  • B. Quá trình chuyển đổi một đối tượng thành một chuỗi byte để lưu trữ hoặc truyền tải qua mạng.
  • C. Cơ chế để kiểm tra kiểu dữ liệu của một đối tượng tại thời điểm runtime.
  • D. Phương pháp để tạo ra bản sao (clone) của một đối tượng.

Câu 19: Cho biết kết quả của biểu thức logic sau trong Java: `(5 > 3) && (10 < 5) || !(2 == 2)`

  • A. true
  • B. 1
  • C. Null
  • D. false

Câu 20: Đâu là cách sử dụng vòng lặp `for-each` (enhanced for loop) trong Java để duyệt qua một mảng số nguyên `numbers` và in ra từng phần tử?

  • A. for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); }
  • B. forEach (int number in numbers) { System.out.println(number); }
  • C. for (int number : numbers) { System.out.println(number); }
  • D. loop (int number : numbers) { System.out.println(number); }

Câu 21: Trong Java, Annotations (chú thích) được sử dụng để làm gì?

  • A. Để viết comment (chú thích) cho code dễ đọc hơn.
  • B. Để cung cấp metadata (dữ liệu về dữ liệu) cho trình biên dịch hoặc JVM, hoặc các framework/library khác.
  • C. Thay thế cho việc sử dụng comment để giải thích code.
  • D. Để tạo ra tài liệu API tự động từ code.

Câu 22: Cho đoạn mã Java sau:
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}

public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(5, 3));
}
}
```
Đoạn mã trên thể hiện khái niệm lập trình hướng đối tượng nào?

  • A. Đối tượng (Object) và Lớp (Class)
  • B. Kế thừa (Inheritance)
  • C. Đa hình (Polymorphism)
  • D. Đóng gói (Encapsulation)

Câu 23: Trong Java, Stream API được giới thiệu từ phiên bản nào và dùng để làm gì?

  • A. Java 5, để quản lý bộ nhớ hiệu quả hơn.
  • B. Java 6, để cải thiện hiệu suất đa luồng.
  • C. Java 7, để đơn giản hóa việc xử lý ngoại lệ.
  • D. Java 8, để xử lý dữ liệu kiểu functional và parallel trên collections.

Câu 24: Phương thức `finalize()` trong Java có vai trò gì và khi nào nó được gọi?

  • A. Để khởi tạo giá trị ban đầu cho các thuộc tính của đối tượng.
  • B. Được gọi ngay sau khi một đối tượng được tạo ra.
  • C. Được gọi bởi garbage collector trước khi thu hồi bộ nhớ của một đối tượng (nhưng không đảm bảo thời điểm gọi và không khuyến khích sử dụng).
  • D. Để giải phóng tài nguyên hệ thống (như file handle, network connection) khi đối tượng không còn được sử dụng.

Câu 25: Đâu là kiểu dữ liệu tham chiếu (reference data type) trong Java?

  • A. int
  • B. String
  • C. boolean
  • D. double

Câu 26: Cho đoạn mã Java sau:
```java
List names = new ArrayList<>();
names.add(

  • A. 3
  • B. 0
  • C. 2
  • D. 4

Câu 27: Trong Java, Lambda Expression là gì và lợi ích chính của nó là gì?

  • A. Một anonymous function (hàm vô danh) cho phép viết code ngắn gọn và biểu cảm hơn, đặc biệt khi làm việc với functional interfaces.
  • B. Một cách để tạo ra các lớp inner class một cách nhanh chóng.
  • C. Cơ chế để thực hiện đa luồng (multithreading) trong Java.
  • D. Một công cụ để debug (gỡ lỗi) chương trình Java hiệu quả hơn.

Câu 28: Đâu là cách đọc một dòng văn bản từ console (command line) trong Java?

  • A. System.in.readLine()
  • B. Console.readString()
  • C. BufferedReader.readLine()
  • D. Sử dụng lớp `Scanner` và phương thức `nextLine()`.

Câu 29: Trong Java, từ khóa `transient` được sử dụng để làm gì khi Serialization?

  • A. Để mã hóa dữ liệu của một thuộc tính trước khi Serialization.
  • B. Để đánh dấu một thuộc tính không nên được serialized.
  • C. Để nén dữ liệu của một thuộc tính khi Serialization.
  • D. Để đảm bảo rằng một thuộc tính luôn được serialized đầu tiên.

Câu 30: Cho đoạn mã Java sau:
```java
public interface Drawable {
void draw();
}

public class Circle implements Drawable {
@Override
public void draw() {
System.out.println(

  • A. Kế thừa (Inheritance)
  • B. Đóng gói (Encapsulation)
  • C. Đa hình (Polymorphism)
  • D. Trừu tượng (Abstraction)

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

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 thêm hoặc sửa đổi các phương thức đã kế thừa?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 2: Cho đoạn mã Java sau:
```java
int[] numbers = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
if (number % 2 == 0) {
sum += number;
}
}
System.out.println(sum);
```
Đoạn mã trên sẽ in ra giá trị nào?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 3: Phương thức `equals()` và toán tử `==` trong Java khác nhau như thế nào khi so sánh các đối tượng (Objects)?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 4: Trong Java, exception (ngoại lệ) được sử dụng để xử lý tình huống nào?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 5: Cho biết kết quả biên dịch và thực thi của đoạn mã Java sau:
```java
public class Test {
public static void main(String[] args) {
String str1 = new String("Hello");
String str2 = "Hello";
System.out.println(str1 == str2);
}
}
```

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 6: Interface trong Java được sử dụng để làm gì?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 7: Đâu là phát biểu đúng về từ khóa `static` trong Java?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 8: Trong Java Collections Framework, lớp `ArrayList` và `LinkedList` khác nhau chủ yếu ở điểm nào?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 9: Cho đoạn mã Java sau:
```java
String message = "Hello World";
String sub = message.substring(6);
System.out.println(sub);
```
Kết quả in ra màn hình sẽ là gì?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 10: Đâu là cách khai báo một biến hằng số (constant) trong Java?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 11: Phương thức `parseInt()` thuộc lớp nào trong Java và dùng để làm gì?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 12: Cho đoạn mã Java sau:
```java
int x = 5;
int y = 10;
System.out.println(x++ + --y);
System.out.println(x + y);
```
Đoạn mã trên sẽ in ra kết quả gì?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 13: Trong Java, garbage collection (thu gom rác) là gì và nó hoạt động như thế nào?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 14: Đâu là mục đích chính của từ khóa `super` trong Java?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 15: Phương thức `toString()` trong Java có vai trò gì?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 16: Cho đoạn mã Java sau:
```java
try {
int result = 10 / 0;
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Lỗi chia cho 0!");
} finally {
System.out.println("Khối finally luôn được thực thi.");
}
```
Đoạn mã trên sẽ in ra kết quả gì?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 17: Đâu là cách tạo một luồng (Thread) trong Java?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 18: Trong Java, Serialization là gì và để làm gì?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 19: Cho biết kết quả của biểu thức logic sau trong Java: `(5 > 3) && (10 < 5) || !(2 == 2)`

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 20: Đâu là cách sử dụng vòng lặp `for-each` (enhanced for loop) trong Java để duyệt qua một mảng số nguyên `numbers` và in ra từng phần tử?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 21: Trong Java, Annotations (chú thích) được sử dụng để làm gì?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 22: Cho đoạn mã Java sau:
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}

public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(5, 3));
}
}
```
Đoạn mã trên thể hiện khái niệm lập trình hướng đối tượng nào?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 23: Trong Java, Stream API được giới thiệu từ phiên bản nào và dùng để làm gì?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 24: Phương thức `finalize()` trong Java có vai trò gì và khi nào nó được gọi?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 25: Đâu là kiểu dữ liệu tham chiếu (reference data type) trong Java?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 26: Cho đoạn mã Java sau:
```java
List names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
names.remove(1);
System.out.println(names.size());
```
Giá trị in ra màn hình sẽ là bao nhiêu?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 27: Trong Java, Lambda Expression là gì và lợi ích chính của nó là gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 28: Đâu là cách đọc một dòng văn bản từ console (command line) trong Java?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 29: Trong Java, từ khóa `transient` được sử dụng để làm gì khi Serialization?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 07

Câu 30: Cho đoạn mã Java sau:
```java
public interface Drawable {
void draw();
}

public class Circle implements Drawable {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}

public class Main {
public static void main(String[] args) {
Drawable shape = new Circle();
shape.draw();
}
}
```
Đoạn mã trên thể hiện khái niệm lập trình hướng đối tượng nào?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 08

Trắc nghiệm Java - Đề 08 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

Câu 1: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation)?

  • A. Khả năng 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.
  • B. Cơ chế gói dữ liệu (thuộc tính) và phương thức hoạt động trên dữ liệu đó vào trong một đơn vị duy nhất, đồng thời kiểm soát quyền truy cập từ bên ngoài.
  • C. Khả năng một đối tượng thuộc lớp này có thể được xem như đối tượng thuộc lớp khác, miễn là chúng có chung interface.
  • D. Quá trình đơn giản hóa các đối tượng phức tạp bằng cách chỉ thể hiện những thông tin và hành vi cần thiết.

Câu 2: Cho đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName;
public Vehicle(String modelName) {
this.modelName = modelName;
}
}

public class Car extends Vehicle {
public Car(String modelName) {
super(modelName);
}
public void displayModel() {
System.out.println(

  • A. Model: Sedan; Thể hiện tính kế thừa.
  • B. Model: Car; Thể hiện tính đa hình.
  • C. Lỗi biên dịch do truy cập thuộc tính protected không đúng cách.
  • D. Chương trình không xuất ra gì cả.

Câu 3: Interface trong Java được sử dụng để định nghĩa một giao ước (contract) mà các lớp thực thi (implement) phải tuân theo. Phát biểu nào sau đây SAI về interface?

  • A. Interface chỉ chứa các phương thức trừu tượng (abstract methods) và các hằng số (constants).
  • B. Một lớp có thể thực thi nhiều interface.
  • C. Interface có thể chứa các biến instance (instance variables) để lưu trữ trạng thái.
  • D. Interface giúp đạt được tính đa hình (polymorphism) trong Java.

Câu 4: Xem xét đoạn mã sau:
```java
List names = new ArrayList<>();
names.add(

  • A. System.out.println(names.toString());
  • B. for (String name : names) { System.out.println(name); }
  • C. for (int i = 0; i < names.size(); i++) { System.out.println(names.get(i)); }
  • D. for (int i = names.size() - 1; i >= 0; i--) { System.out.println(names.get(i)); }

Câu 5: Phương thức `equals()` và `hashCode()` có vai trò quan trọng trong Java, đặc biệt khi làm việc với các cấu trúc dữ liệu như `HashMap` và `HashSet`. Điều gì sẽ xảy ra nếu bạn chỉ override phương thức `equals()` mà không override phương thức `hashCode()` trong một lớp tùy chỉnh?

  • A. `HashMap` và `HashSet` sẽ hoạt động bình thường, không có vấn đề gì xảy ra.
  • B. Các đối tượng bằng nhau theo `equals()` có thể không có cùng giá trị `hashCode()`, dẫn đến hành vi không đúng khi sử dụng trong `HashMap` hoặc `HashSet`.
  • C. Chương trình sẽ báo lỗi biên dịch.
  • D. Phương thức `equals()` sẽ không hoạt động đúng.

Câu 6: Trong Java Exception Handling, khối lệnh `finally` được sử dụng để đảm bảo một đoạn mã nào đó luôn được thực thi, bất kể điều gì xảy ra trong khối `try` và `catch`. Trong tình huống nào sau đây, khối `finally` sẽ KHÔNG được thực thi?

  • A. Khi không có exception nào xảy ra trong khối `try`.
  • B. Khi một exception xảy ra trong khối `try` và được xử lý bởi khối `catch` tương ứng.
  • C. Khi một exception xảy ra trong khối `try` nhưng không có khối `catch` phù hợp để xử lý.
  • D. Khi phương thức `System.exit(0)` được gọi trong khối `try` hoặc `catch`.

Câu 7: Cho đoạn mã sau:
```java
String str1 =

  • A. true
    true
    true; Vì tất cả các biến đều tham chiếu đến cùng một chuỗi
  • B. false
    false
    true; Vì `==` so sánh giá trị, còn `equals()` so sánh tham chiếu.
  • C. false
    true
    true; Vì `==` so sánh tham chiếu, `str1` và `str3` cùng tham chiếu đến String literal trong String pool, còn `str2` là đối tượng String mới.
  • D. true
    false
    false; Vì `str2` được tạo mới, nên khác với `str1` và `str3`.

Câu 8: Stream API trong Java 8+ cung cấp một cách mạnh mẽ để xử lý dữ liệu theo kiểu functional. Đoạn code sau sử dụng Stream API để lọc các số chẵn từ một danh sách:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers);
```
Nếu thay thế `filter(n -> n % 2 == 0)` bằng `map(n -> n * 2)`, kết quả đầu ra sẽ thay đổi như thế nào?

  • A. Kết quả vẫn là `[2, 4, 6]` vì `map` và `filter` có chức năng tương tự.
  • B. Kết quả sẽ là `[2, 4, 6, 8, 10, 12]` vì `map` biến đổi mỗi phần tử thành giá trị gấp đôi.
  • C. Chương trình sẽ báo lỗi biên dịch vì `map` không thể sử dụng trong trường hợp này.
  • D. Kết quả sẽ là một stream rỗng.

Câu 9: Trong Java, garbage collection (GC) là một tiến trình tự động quản lý bộ nhớ. Phát biểu nào sau đây mô tả chính xác nhất về vai trò của Garbage Collector?

  • A. Garbage Collector tự động giải phóng bộ nhớ không còn được tham chiếu bởi bất kỳ đối tượng nào trong chương trình, giúp ngăn ngừa rò rỉ bộ nhớ.
  • B. Garbage Collector chịu trách nhiệm biên dịch mã byte code Java thành mã máy thực thi.
  • C. Garbage Collector là một công cụ gỡ lỗi (debugger) giúp tìm ra lỗi trong chương trình Java.
  • D. Garbage Collector quản lý việc cấp phát bộ nhớ cho các đối tượng mới được tạo ra.

Câu 10: Cho đoạn mã sau:
```java
public class Calculator {
public static int add(int a, int b) {
return a + b;
}

public static double add(double a, double b) {
return a + b;
}
}

public class Main {
public static void main(String[] args) {
System.out.println(Calculator.add(5, 10));
System.out.println(Calculator.add(3.5, 2.5));
}
}
```
Đoạn mã trên thể hiện khái niệm nào trong lập trình hướng đối tượng Java?

  • A. Kế thừa (Inheritance)
  • B. Đóng gói (Encapsulation)
  • C. Trừu tượng hóa (Abstraction)
  • D. Đa hình (Polymorphism) - cụ thể là method overloading

Câu 11: Từ khóa `static` trong Java được sử dụng để khai báo các thành viên của lớp (biến và phương thức) thuộc về lớp chứ không phải là đối tượng cụ thể. Điều gì xảy ra khi bạn khai báo một biến instance là `static`?

  • A. Biến static trở thành biến cục bộ (local variable) bên trong phương thức static.
  • B. Biến static trở thành biến lớp (class variable), được chia sẻ bởi tất cả các đối tượng của lớp đó.
  • C. Biến static chỉ có thể được truy cập từ bên trong cùng một package.
  • D. Biến static không thể được khởi tạo giá trị.

Câu 12: Cho đoạn mã sau:
```java
public class MyThread extends Thread {
@Override
public void run() {
System.out.println(

  • A. Thread.sleep(1000);
  • B. thread.run();
  • C. thread.join();
  • D. synchronized(thread) {};

Câu 13: Annotations trong Java cung cấp metadata về chương trình và có thể được xử lý bởi compiler hoặc runtime environment. Annotation `@Override` được sử dụng với mục đích gì?

  • A. Để đánh dấu một phương thức là abstract.
  • B. Để 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.
  • C. Để ngăn compiler tối ưu hóa một phương thức.
  • D. Để tạo ra tài liệu API cho một phương thức.

Câu 14: Generics trong Java cho phép bạn tham số hóa kiểu dữ liệu của lớp, interface hoặc phương thức. Lợi ích chính của việc sử dụng generics là gì?

  • A. Tăng cường type safety bằng cách phát hiện lỗi kiểu dữ liệu tại thời điểm biên dịch thay vì runtime, và giảm việc ép kiểu (casting).
  • B. Tăng hiệu suất chương trình bằng cách giảm overhead của việc kiểm tra kiểu dữ liệu.
  • C. Cho phép tạo ra các lớp và interface hoàn toàn trừu tượng.
  • D. Giúp đơn giản hóa cú pháp Java.

Câu 15: Lambda expressions trong Java 8+ là một tính năng quan trọng của lập trình hàm. Biểu thức lambda nào sau đây tương đương với anonymous inner class sau:
```java
Comparator comparator = new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
};
```

  • A. () -> o1.compareTo(o2)
  • B. (Integer o1, Integer o2) -> { return o1.compareTo(o2); }
  • C. (o1, o2) -> o1.compareTo(o2)
  • D. Comparator::compare

Câu 16: Phương thức `parseInt()` của lớp `Integer` được sử dụng để làm gì?

  • A. Chuyển đổi một số nguyên kiểu int sang String.
  • B. Chuyển đổi một chuỗi (String) biểu diễn số nguyên sang kiểu int.
  • C. Kiểm tra xem một chuỗi có phải là biểu diễn của một số nguyên hay không.
  • D. Định dạng một số nguyên thành chuỗi theo một định dạng cụ thể.

Câu 17: Kiểu dữ liệu `char` trong Java được sử dụng để biểu diễn ký tự Unicode. Vùng giá trị của kiểu `char` là gì?

  • A. 0 đến 127 (tương ứng với bảng mã ASCII).
  • B. -128 đến 127 (signed byte).
  • C. 0 đến 65535 (signed 16-bit integer).
  • D. 0 đến 65535 (unsigned 16-bit integer), biểu diễn các ký tự Unicode.

Câu 18: Toán tử `%` trong Java được gọi là toán tử modulo. Nó thực hiện phép toán gì?

  • A. Phép chia lấy thương.
  • B. Phép nhân.
  • C. Phép chia lấy phần dư.
  • D. Phép lũy thừa.

Câu 19: Cho đoạn code sau:
```java
int x = 5;
int y = 10;
boolean result = (x++ > 5) && (++y < 11); System.out.println(

  • A. x = 6, y = 11, result = false; Vì cả hai điều kiện đều sai.
  • B. x = 5, y = 10, result = false; Vì điều kiện đầu tiên sai nên short-circuit evaluation xảy ra.
  • C. x = 6, y = 10, result = false; Vì điều kiện thứ hai sai.
  • D. x = 6, y = 10, result = false; Vì điều kiện đầu tiên `(x++ > 5)` sai (do post-increment, x so sánh với 5 trước khi tăng), nên short-circuit evaluation xảy ra, `++y < 11` không được thực hiện.

Câu 20: Vòng lặp `for-each` (enhanced for loop) trong Java được sử dụng chủ yếu để làm gì?

  • A. Duyệt qua các phần tử của một mảng (array) hoặc collection (ví dụ: List, Set).
  • B. Thực hiện một khối lệnh lặp đi lặp lại một số lần xác định trước.
  • C. Lặp vô hạn cho đến khi một điều kiện nào đó được đáp ứng.
  • D. Tạo ra một luồng (thread) mới cho mỗi lần lặp.

Câu 21: Phương thức `substring(int beginIndex, int endIndex)` của lớp `String` trả về một chuỗi con (substring). Vị trí kết thúc (endIndex) được xử lý như thế nào?

  • A. `endIndex` là vị trí cuối cùng của ký tự được bao gồm trong chuỗi con.
  • B. `endIndex` là vị trí cuối cùng của ký tự trong chuỗi gốc.
  • C. `endIndex` là vị trí sau ký tự cuối cùng của chuỗi con (exclusive).
  • D. `endIndex` không được sử dụng, chuỗi con được trả về đến hết chuỗi gốc.

Câu 22: Trong Java, phương thức `main()` có signature `public static void main(String[] args)`. Giải thích ý nghĩa của từ khóa `static` trong signature này.

  • A. `static` cho phép phương thức `main()` được ghi đè (override) trong các lớp con.
  • B. `static` cho phép phương thức `main()` được gọi trực tiếp từ lớp mà không cần tạo đối tượng của lớp đó.
  • C. `static` đảm bảo rằng phương thức `main()` chỉ được thực thi một lần duy nhất trong chương trình.
  • D. `static` làm cho phương thức `main()` trở thành một phương thức trừu tượng (abstract method).

Câu 23: Cho đoạn code sau:
```java
Integer num1 = 100;
Integer num2 = 100;
Integer num3 = 200;
Integer num4 = 200;

System.out.println(num1 == num2);
System.out.println(num3 == num4);
```
Kết quả in ra của đoạn code trên là gì và giải thích tại sao có sự khác biệt (nếu có) giữa hai dòng output?

  • A. true
    true; Vì `==` so sánh giá trị của đối tượng Integer.
  • B. false
    false; Vì `==` luôn so sánh tham chiếu đối với đối tượng.
  • C. true
    false; Vì Integer cache được sử dụng cho giá trị nhỏ (trong khoảng -128 đến 127), `num1` và `num2` tham chiếu cùng đối tượng trong cache, còn `num3` và `num4` thì không.
  • D. false
    true; Vì chỉ có các đối tượng Integer được tạo bằng literal mới được cache.

Câu 24: Phương thức `toString()` được định nghĩa trong lớp `Object` và được kế thừa bởi tất cả các lớp trong Java. Mục đích chính của việc override phương thức `toString()` trong một lớp tùy chỉnh là gì?

  • A. Để so sánh hai đối tượng có bằng nhau hay không.
  • B. Để trả về một chuỗi (String) biểu diễn thông tin về đối tượng một cách dễ đọc và có ý nghĩa.
  • C. Để chuyển đổi đối tượng sang một kiểu dữ liệu khác.
  • D. Để tạo ra một bản sao của đối tượng.

Câu 25: Khi nào bạn nên sử dụng `ArrayList` thay vì `LinkedList` trong Java Collections Framework?

  • A. Khi bạn cần truy cập ngẫu nhiên (random access) đến các phần tử thường xuyên, vì `ArrayList` có hiệu suất truy cập phần tử theo index tốt hơn.
  • B. Khi bạn cần thêm hoặc xóa phần tử ở đầu hoặc cuối danh sách thường xuyên.
  • C. Khi bạn cần thêm hoặc xóa phần tử ở vị trí bất kỳ trong danh sách thường xuyên, vì `LinkedList` có hiệu suất tốt hơn trong trường hợp này.
  • D. Khi bạn muốn đảm bảo các phần tử trong danh sách được sắp xếp theo thứ tự.

Câu 26: Access modifiers trong Java (public, private, protected, default) quy định mức độ truy cập của các thành viên lớp. Access modifier nào có phạm vi truy cập RỘNG NHẤT?

  • A. `public`
  • B. `protected`
  • C. `default` (package-private)
  • D. `private`

Câu 27: Phương thức `invokeLater()` của lớp `SwingUtilities` trong Java Swing được sử dụng để làm gì?

  • A. Để tạo ra một cửa sổ (window) mới trong ứng dụng Swing.
  • B. Để thực thi một đoạn mã trên Event Dispatch Thread (EDT), đảm bảo thread-safety khi cập nhật giao diện người dùng (UI).
  • C. Để tạm dừng luồng hiện tại trong một khoảng thời gian xác định.
  • D. Để đọc dữ liệu đầu vào từ người dùng trong ứng dụng Swing.

Câu 28: Trong lập trình JDBC, interface `PreparedStatement` có lợi thế gì so với `Statement`?

  • A. `PreparedStatement` đơn giản hơn và dễ sử dụng hơn `Statement`.
  • B. `PreparedStatement` cho phép thực thi các câu lệnh SQL phức tạp hơn.
  • C. `PreparedStatement` giúp ngăn chặn SQL injection và thường có hiệu suất tốt hơn cho các câu lệnh SQL được thực thi nhiều lần với các tham số khác nhau.
  • D. `PreparedStatement` có thể được sử dụng với nhiều loại cơ sở dữ liệu khác nhau hơn `Statement`.

Câu 29: Serialization trong Java là quá trình chuyển đổi một đối tượng thành một chuỗi byte để có thể lưu trữ hoặc truyền tải qua mạng. Để một lớp có thể được serialized, nó cần phải implement interface nào?

  • A. `Cloneable`
  • B. `Comparable`
  • C. `Serializable` (Không có "z")
  • D. `java.io.Serializable`

Câu 30: Cho đoạn mã 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. Exception caught: Program continues
  • B. Exception caught: ArrayIndexOutOfBoundsException
    Finally block executed
    Program continues
  • C. Exception caught: ArrayIndexOutOfBoundsException
    Program continues
    Finally block executed
  • D. Chương trình sẽ kết thúc ngay khi exception xảy ra và không in ra gì thêm.

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 1: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation)?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 2: Cho đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName;
public Vehicle(String modelName) {
this.modelName = modelName;
}
}

public class Car extends Vehicle {
public Car(String modelName) {
super(modelName);
}
public void displayModel() {
System.out.println("Model: " + modelName);
}
}

public class Main {
public static void main(String[] args) {
Car myCar = new Car("Sedan");
myCar.displayModel();
}
}
```
Kết quả xuất ra màn hình của chương trình trên là gì và nó thể hiện khái niệm OOP nào?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 3: Interface trong Java được sử dụng để định nghĩa một giao ước (contract) mà các lớp thực thi (implement) phải tuân theo. Phát biểu nào sau đây SAI về interface?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 4: Xem xét đoạn mã sau:
```java
List names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");

// Đoạn code cần điền vào
```
Đoạn code nào sau đây sẽ in ra các phần tử của danh sách `names` theo thứ tự ngược lại (Charlie, Bob, Alice)?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 5: Phương thức `equals()` và `hashCode()` có vai trò quan trọng trong Java, đặc biệt khi làm việc với các cấu trúc dữ liệu như `HashMap` và `HashSet`. Điều gì sẽ xảy ra nếu bạn chỉ override phương thức `equals()` mà không override phương thức `hashCode()` trong một lớp tùy chỉnh?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 6: Trong Java Exception Handling, khối lệnh `finally` được sử dụng để đảm bảo một đoạn mã nào đó luôn được thực thi, bất kể điều gì xảy ra trong khối `try` và `catch`. Trong tình huống nào sau đây, khối `finally` sẽ KHÔNG được thực thi?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 7: Cho đoạn mã sau:
```java
String str1 = "Java";
String str2 = new String("Java");
String str3 = "Java";

System.out.println(str1 == str2);
System.out.println(str1 == str3);
System.out.println(str1.equals(str2));
```
Kết quả in ra màn hình của đoạn mã trên là gì và giải thích tại sao lại có kết quả đó?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 8: Stream API trong Java 8+ cung cấp một cách mạnh mẽ để xử lý dữ liệu theo kiểu functional. Đoạn code sau sử dụng Stream API để lọc các số chẵn từ một danh sách:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers);
```
Nếu thay thế `filter(n -> n % 2 == 0)` bằng `map(n -> n * 2)`, kết quả đầu ra sẽ thay đổi như thế nào?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 9: Trong Java, garbage collection (GC) là một tiến trình tự động quản lý bộ nhớ. Phát biểu nào sau đây mô tả chính xác nhất về vai trò của Garbage Collector?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 10: Cho đoạn mã sau:
```java
public class Calculator {
public static int add(int a, int b) {
return a + b;
}

public static double add(double a, double b) {
return a + b;
}
}

public class Main {
public static void main(String[] args) {
System.out.println(Calculator.add(5, 10));
System.out.println(Calculator.add(3.5, 2.5));
}
}
```
Đoạn mã trên thể hiện khái niệm nào trong lập trình hướng đối tượng Java?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 11: Từ khóa `static` trong Java được sử dụng để khai báo các thành viên của lớp (biến và phương thức) thuộc về lớp chứ không phải là đối tượng cụ thể. Điều gì xảy ra khi bạn khai báo một biến instance là `static`?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 12: Cho đoạn mã sau:
```java
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread running");
}

public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
// Đoạn code cần điền vào
}
}
```
Nếu muốn chương trình chính (main thread) đợi cho đến khi `MyThread` hoàn thành việc thực thi phương thức `run()`, bạn cần thêm đoạn code nào vào vị trí `// Đoạn code cần điền vào`?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 13: Annotations trong Java cung cấp metadata về chương trình và có thể được xử lý bởi compiler hoặc runtime environment. Annotation `@Override` được sử dụng với mục đích gì?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 14: Generics trong Java cho phép bạn tham số hóa kiểu dữ liệu của lớp, interface hoặc phương thức. Lợi ích chính của việc sử dụng generics là gì?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 15: Lambda expressions trong Java 8+ là một tính năng quan trọng của lập trình hàm. Biểu thức lambda nào sau đây tương đương với anonymous inner class sau:
```java
Comparator comparator = new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
};
```

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 16: Phương thức `parseInt()` của lớp `Integer` được sử dụng để làm gì?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 17: Kiểu dữ liệu `char` trong Java được sử dụng để biểu diễn ký tự Unicode. Vùng giá trị của kiểu `char` là gì?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 18: Toán tử `%` trong Java được gọi là toán tử modulo. Nó thực hiện phép toán gì?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 19: Cho đoạn code sau:
```java
int x = 5;
int y = 10;
boolean result = (x++ > 5) && (++y < 11); System.out.println("x = " + x + ", y = " + y + ", result = " + result); ``` Kết quả in ra của đoạn code trên là gì và giải thích tại sao?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 20: Vòng lặp `for-each` (enhanced for loop) trong Java được sử dụng chủ yếu để làm gì?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 21: Phương thức `substring(int beginIndex, int endIndex)` của lớp `String` trả về một chuỗi con (substring). Vị trí kết thúc (endIndex) được xử lý như thế nào?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 22: Trong Java, phương thức `main()` có signature `public static void main(String[] args)`. Giải thích ý nghĩa của từ khóa `static` trong signature này.

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 23: Cho đoạn code sau:
```java
Integer num1 = 100;
Integer num2 = 100;
Integer num3 = 200;
Integer num4 = 200;

System.out.println(num1 == num2);
System.out.println(num3 == num4);
```
Kết quả in ra của đoạn code trên là gì và giải thích tại sao có sự khác biệt (nếu có) giữa hai dòng output?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 24: Phương thức `toString()` được định nghĩa trong lớp `Object` và được kế thừa bởi tất cả các lớp trong Java. Mục đích chính của việc override phương thức `toString()` trong một lớp tùy chỉnh là gì?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 25: Khi nào bạn nên sử dụng `ArrayList` thay vì `LinkedList` trong Java Collections Framework?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 26: Access modifiers trong Java (public, private, protected, default) quy định mức độ truy cập của các thành viên lớp. Access modifier nào có phạm vi truy cập RỘNG NHẤT?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 27: Phương thức `invokeLater()` của lớp `SwingUtilities` trong Java Swing được sử dụng để làm gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 28: Trong lập trình JDBC, interface `PreparedStatement` có lợi thế gì so với `Statement`?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 29: Serialization trong Java là quá trình chuyển đổi một đối tượng thành một chuỗi byte để có thể lưu trữ hoặc truyền tải qua mạng. Để một lớp có thể được serialized, nó cần phải implement interface nào?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 08

Câu 30: Cho đoạn mã 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("Exception caught: " + e.getClass().getSimpleName());
} finally {
System.out.println("Finally block executed");
}
System.out.println("Program continues");
}
}
```
Kết quả in ra của chương trình trên là gì?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 09

Trắc nghiệm Java - Đề 09 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

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 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. Kế thừa (Inheritance)
  • C. Đa hình (Polymorphism)
  • D. Trừu tượng (Abstraction)

Câu 2: Cho đoạn mã Java sau: `int[] numbers = {1, 2, 3, 4, 5}; System.out.println(numbers[numbers.length]);` Đoạn mã này sẽ gây ra lỗi gì khi chạy?

  • A. Lỗi biên dịch do cú pháp không hợp lệ
  • B. In ra giá trị 0 vì truy cập phần tử ngoài mảng trả về giá trị mặc định
  • C. Lỗi thời gian chạy `ArrayIndexOutOfBoundsException`
  • D. In ra giá trị `null` vì phần tử ngoài mảng là rỗng

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. `equals()` so sánh nội dung chuỗi, `==` so sánh tham chiếu đối tượng
  • B. `equals()` so sánh tham chiếu đối tượng, `==` so sánh nội dung chuỗi
  • C. Cả hai đều so sánh nội dung chuỗi trong mọi trường hợp
  • D. Cả hai đều so sánh tham chiếu đối tượng trong mọi trường hợp

Câu 4: Trong Java, từ khóa `static` được sử dụng để khai báo thành viên tĩnh của lớp. Phát biểu nào sau đây là ĐÚNG về thành viên tĩnh?

  • A. Thành viên tĩnh chỉ có thể được truy cập từ bên trong lớp chứa nó
  • B. Thành viên tĩnh được chia sẻ bởi tất cả các đối tượng của lớp
  • C. Thành viên tĩnh chỉ có thể là biến, không thể là phương thức
  • D. Thành viên tĩnh được khởi tạo lại mỗi khi một đối tượng mới được tạo ra

Câu 5: Cho đoạn mã sau: `List names = new ArrayList<>(); names.add(

  • A. [
  • B. [
  • C. [
  • D. [

Câu 6: 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. Điều gì là lợi ích chính của việc sử dụng interface?

  • A. Tăng hiệu suất chương trình bằng cách giảm thiểu việc sử dụng bộ nhớ
  • B. Cho phép tạo ra các đối tượng không thể thay đổi sau khi khởi tạo
  • C. Đạt được tính đa hình và sự lỏng lẻo trong liên kết giữa các lớp
  • D. Giảm độ phức tạp của mã nguồn bằng cách tự động sinh mã

Câu 7: Ngoại lệ (Exception) trong Java là cơ chế để xử lý các tình huống bất thường xảy ra trong quá trình chạy chương trình. Cấu trúc `try-catch` được sử dụng để làm gì?

  • A. Khai báo một loại lỗi mới do người dùng định nghĩa
  • B. Bắt và xử lý các ngoại lệ có thể xảy ra trong khối mã `try`
  • C. Tối ưu hóa hiệu suất của chương trình khi xảy ra lỗi
  • D. Ngăn chặn hoàn toàn việc phát sinh ngoại lệ trong chương trình

Câu 8: Cho đoạn mã: `int a = 5; int b = 10; a = a ^ b; b = a ^ b; a = a ^ b;` Sau khi thực hiện đoạn mã này, giá trị của `a` và `b` sẽ là bao nhiêu?

  • A. a = 5, b = 10
  • B. a = 0, b = 0
  • C. a = 10, b = 5
  • D. a = 10, b = 5

Câu 9: Vòng lặp `for-each` (enhanced for loop) trong Java thường được sử dụng để làm gì?

  • A. Duyệt qua các phần tử của một mảng hoặc Collection
  • B. Thực hiện một khối mã lặp đi lặp lại với số lần biết trước
  • C. Thực hiện một khối mã cho đến khi một điều kiện sai
  • D. Tạo ra một vòng lặp vô hạn

Câu 10: Trong Java, phương thức `toString()` được định nghĩa trong lớp `Object`. Mục đích chính của việc ghi đè (override) phương thức `toString()` trong lớp của bạn là gì?

  • A. So sánh hai đối tượng của lớp xem chúng có bằng nhau hay không
  • B. Chuyển đổi một đối tượng sang một kiểu dữ liệu khác
  • C. Trả về một chuỗi đại diện cho đối tượng, dễ đọc và chứa thông tin hữu ích
  • D. Giải phóng bộ nhớ mà đối tượng đang sử dụng khi nó không còn cần thiết

Câu 11: Cho đoạn mã sau: `int x = 10; if (x++ > 10) { System.out.println(

  • A. True
  • B. False
  • C. Lỗi biên dịch
  • D. Không có đầu ra

Câu 12: Trong Java, Garbage Collection (GC) là một tiến trình tự động quản lý bộ nhớ. GC hoạt động như thế nào?

  • A. Lập trình viên phải tự gọi phương thức để giải phóng bộ nhớ khi đối tượng không còn dùng
  • B. GC chỉ hoạt động khi chương trình yêu cầu cấp phát thêm bộ nhớ
  • C. GC giải phóng bộ nhớ ngay khi một đối tượng được tạo ra
  • D. GC tự động giải phóng bộ nhớ của các đối tượng không còn được tham chiếu

Câu 13: Phương thức `parseInt()` thuộc lớp `Integer` được sử dụng để làm gì?

  • A. Định dạng một số nguyên thành chuỗi có dấu phân cách hàng nghìn
  • B. Kiểm tra xem một chuỗi có phải là biểu diễn của một số nguyên hợp lệ hay không
  • C. Chuyển đổi một chuỗi biểu diễn số nguyên thành kiểu `int`
  • D. Tạo một đối tượng `Integer` mới từ một giá trị số nguyên

Câu 14: Điều gì xảy ra khi bạn cố gắng biên dịch và chạy một chương trình Java chứa lỗi biên dịch?

  • A. Quá trình biên dịch thất bại và không tạo ra bytecode
  • B. Chương trình vẫn biên dịch thành công nhưng sẽ gặp lỗi thời gian chạy
  • C. Chương trình biên dịch và chạy, bỏ qua các dòng có lỗi
  • D. Máy ảo Java (JVM) tự động sửa lỗi và chạy chương trình

Câu 15: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Ý nghĩa của `final` khi sử dụng với một lớp là gì?

  • A. Lớp đó không thể tạo ra đối tượng mới
  • B. Lớp đó không thể được kế thừa bởi bất kỳ lớp con nào
  • C. Tất cả các phương thức trong lớp đó đều trở thành `final`
  • D. Biến thành viên của lớp đó phải được khởi tạo ngay khi khai báo

Câu 16: Cho đoạn code sau: `public class Example { public static void main(String[] args) { int count = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i == j) { count++; } } } System.out.println(count); } }` Đoạn code trên in ra giá trị bao nhiêu?

  • A. 0
  • B. 10
  • C. 5
  • D. 25

Câu 17: Trong Java, Access Modifier (ví dụ: `public`, `private`, `protected`) quy định điều gì?

  • A. Kiểu dữ liệu của biến thành viên
  • B. Thời gian tồn tại của đối tượng
  • C. Thứ tự thực thi của các phương thức
  • D. Mức độ truy cập của các thành viên lớp từ bên ngoài lớp

Câu 18: Cho hai lớp `Animal` và `Dog`, với `Dog` là lớp con của `Animal`. Nếu `animal` là một biến tham chiếu kiểu `Animal` và nó thực sự trỏ đến một đối tượng `Dog`, lệnh gọi phương thức `animal.makeSound()` sẽ gọi phương thức `makeSound()` của lớp nào nếu cả hai lớp đều có phương thức này?

  • A. Phương thức `makeSound()` của lớp `Dog`
  • B. Phương thức `makeSound()` của lớp `Animal`
  • C. Lỗi biên dịch vì không rõ phương thức nào được gọi
  • D. Phương thức `makeSound()` của lớp được khai báo biến `animal`

Câu 19: Stream trong Java 8+ cung cấp một cách xử lý dữ liệu tuần tự hoặc song song. Hoạt động nào sau đây KHÔNG phải là một hoạt động phổ biến trên Stream?

  • A. Lọc (Filtering)
  • B. Ánh xạ (Mapping)
  • C. Sửa đổi trực tiếp phần tử (Modifying)
  • D. Giảm (Reducing)

Câu 20: Lambda expression trong Java 8+ là một tính năng quan trọng. Lambda expression thực chất là gì?

  • A. Một lớp ẩn danh không tên
  • B. Một cách biểu diễn ngắn gọn của một functional interface
  • C. Một cơ chế xử lý ngoại lệ mới
  • D. Một kiểu dữ liệu mới trong Java

Câu 21: JDBC (Java Database Connectivity) là API cho phép Java tương tác với cơ sở dữ liệu. Bước đầu tiên để thiết lập kết nối JDBC thường là gì?

  • A. Tạo một đối tượng Connection
  • B. Thực thi câu lệnh SQL
  • C. Đóng kết nối
  • D. Tải JDBC Driver

Câu 22: Annotations trong Java cung cấp metadata về chương trình. Annotations `@Override` được sử dụng để làm gì?

  • A. Tạo ra một phương thức mới trong lớp cha
  • B. Đánh dấu một phương thức là không được phép ghi đè
  • C. Chỉ ra rằng một phương thức đang ghi đè một phương thức từ lớp cha
  • D. Tối ưu hóa hiệu suất của phương thức được ghi đè

Câu 23: Generic trong Java được giới thiệu từ phiên bản 5. Lợi ích chính của việc sử dụng Generics là gì?

  • A. Tăng tốc độ thực thi chương trình
  • B. Tăng cường tính an toàn kiểu và giảm lỗi runtime
  • C. Giảm kích thước mã nguồn chương trình
  • D. Cho phép đa kế thừa trong Java

Câu 24: Serialization trong Java là quá trình chuyển đổi một đối tượng thành một chuỗi byte để lưu trữ hoặc truyền tải qua mạng. Để một lớp có thể được serialization, nó cần phải thực hiện interface nào?

  • D.

Câu 25: Reflection trong Java cho phép chương trình kiểm tra và sửa đổi cấu trúc và hành vi của chính nó tại thời gian chạy. Một trong những ứng dụng chính của Reflection là gì?

  • A. Xây dựng các framework và thư viện linh hoạt
  • B. Tăng hiệu suất chương trình
  • C. Kiểm soát bộ nhớ tốt hơn
  • D. Đơn giản hóa quá trình biên dịch

Câu 26: Java Collection Framework cung cấp nhiều cấu trúc dữ liệu sẵn có. Cấu trúc dữ liệu nào sau đây đảm bảo các phần tử được lưu trữ theo thứ tự chèn vào?

  • B.

Câu 27: Thread trong Java cho phép thực hiện đa nhiệm (multitasking). Để tạo một thread mới, bạn có thể thực hiện interface nào?

  • C.

Câu 28: Cho đoạn code: `String str1 =

  • B.
  • C. Lỗi biên dịch
  • D. Không xác định

Câu 29: Design Pattern (mẫu thiết kế) là các giải pháp đã được kiểm chứng cho các vấn đề thường gặp trong thiết kế phần mềm. 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. Concurrency Pattern (Mẫu đồng thời)
  • D. Creational Pattern (Mẫu khởi tạo)

Câu 30: Trong Java, từ khóa `super` được sử dụng để truy cập thành viên của lớp cha. Khi nào thì cần sử dụng từ khóa `super` trong lớp con?

  • A. Để tạo đối tượng của lớp cha
  • B. Để gọi phương thức static của lớp cha
  • C. Để gọi constructor của lớp cha hoặc truy cập thành viên bị ghi đè
  • D. Để khai báo một lớp cha mới

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

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 kế thừa các thuộc tính và phương thức từ một lớp khác?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 2: Cho đoạn mã Java sau: `int[] numbers = {1, 2, 3, 4, 5}; System.out.println(numbers[numbers.length]);` Đoạn mã này sẽ gây ra lỗi gì khi chạy?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

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?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 4: Trong Java, từ khóa `static` được sử dụng để khai báo thành viên tĩnh của lớp. Phát biểu nào sau đây là ĐÚNG về thành viên tĩnh?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 5: Cho đoạn mã sau: `List names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Charlie"); names.remove(1);` Sau khi thực hiện đoạn mã, danh sách `names` sẽ chứa những phần tử nào?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 6: 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. Điều gì là lợi ích chính của việc sử dụng interface?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 7: Ngoại lệ (Exception) trong Java là cơ chế để xử lý các tình huống bất thường xảy ra trong quá trình chạy chương trình. Cấu trúc `try-catch` được sử dụng để làm gì?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 8: Cho đoạn mã: `int a = 5; int b = 10; a = a ^ b; b = a ^ b; a = a ^ b;` Sau khi thực hiện đoạn mã này, giá trị của `a` và `b` sẽ là bao nhiêu?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 9: Vòng lặp `for-each` (enhanced for loop) trong Java thường được sử dụng để làm gì?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 10: Trong Java, phương thức `toString()` được định nghĩa trong lớp `Object`. Mục đích chính của việc ghi đè (override) phương thức `toString()` trong lớp của bạn là gì?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 11: Cho đoạn mã sau: `int x = 10; if (x++ > 10) { System.out.println("True"); } else { System.out.println("False"); }` Kết quả in ra màn hình sẽ là gì?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 12: Trong Java, Garbage Collection (GC) là một tiến trình tự động quản lý bộ nhớ. GC hoạt động như thế nào?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 13: Phương thức `parseInt()` thuộc lớp `Integer` được sử dụng để làm gì?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 14: Điều gì xảy ra khi bạn cố gắng biên dịch và chạy một chương trình Java chứa lỗi biên dịch?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 15: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Ý nghĩa của `final` khi sử dụng với một lớp là gì?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 16: Cho đoạn code sau: `public class Example { public static void main(String[] args) { int count = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i == j) { count++; } } } System.out.println(count); } }` Đoạn code trên in ra giá trị bao nhiêu?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 17: Trong Java, Access Modifier (ví dụ: `public`, `private`, `protected`) quy định điều gì?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 18: Cho hai lớp `Animal` và `Dog`, với `Dog` là lớp con của `Animal`. Nếu `animal` là một biến tham chiếu kiểu `Animal` và nó thực sự trỏ đến một đối tượng `Dog`, lệnh gọi phương thức `animal.makeSound()` sẽ gọi phương thức `makeSound()` của lớp nào nếu cả hai lớp đều có phương thức này?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 19: Stream trong Java 8+ cung cấp một cách xử lý dữ liệu tuần tự hoặc song song. Hoạt động nào sau đây KHÔNG phải là một hoạt động phổ biến trên Stream?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 20: Lambda expression trong Java 8+ là một tính năng quan trọng. Lambda expression thực chất là gì?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 21: JDBC (Java Database Connectivity) là API cho phép Java tương tác với cơ sở dữ liệu. Bước đầu tiên để thiết lập kết nối JDBC thường là gì?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 22: Annotations trong Java cung cấp metadata về chương trình. Annotations `@Override` được sử dụng để làm gì?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 23: Generic trong Java được giới thiệu từ phiên bản 5. Lợi ích chính của việc sử dụng Generics là gì?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 24: Serialization trong Java là quá trình chuyển đổi một đối tượng thành một chuỗi byte để lưu trữ hoặc truyền tải qua mạng. Để một lớp có thể được serialization, nó cần phải thực hiện interface nào?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 25: Reflection trong Java cho phép chương trình kiểm tra và sửa đổi cấu trúc và hành vi của chính nó tại thời gian chạy. Một trong những ứng dụng chính của Reflection là gì?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 26: Java Collection Framework cung cấp nhiều cấu trúc dữ liệu sẵn có. Cấu trúc dữ liệu nào sau đây đảm bảo các phần tử được lưu trữ theo thứ tự chèn vào?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 27: Thread trong Java cho phép thực hiện đa nhiệm (multitasking). Để tạo một thread mới, bạn có thể thực hiện interface nào?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 28: Cho đoạn code: `String str1 = "Java"; String str2 = new String("Java");` Biểu thức `str1 == str2` sẽ trả về giá trị gì?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 29: Design Pattern (mẫu thiết kế) là các giải pháp đã được kiểm chứng cho các vấn đề thường gặp trong thiết kế phần mềm. Mẫu thiết kế Singleton thuộc loại nào?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 09

Câu 30: Trong Java, từ khóa `super` được sử dụng để truy cập thành viên của lớp cha. Khi nào thì cần sử dụng từ khóa `super` trong lớp con?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 10

Trắc nghiệm Java - Đề 10 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

Câu 1: Trong lập trình hướng đối tượng Java, khái niệm "tính đóng gói" (encapsulation) thể hiện rõ nhất qua điều nào?

  • A. Khả năng một đối tượng thuộc nhiều lớp khác nhau.
  • B. Việc ẩn giấu thông tin và trạng thái bên trong 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. Cơ chế cho phép lớp con kế thừa các thuộc tính và phương thức từ lớp cha.
  • D. Khả năng một phương thức có thể thực hiện các hành vi khác nhau tùy thuộc vào đối tượng gọi nó.

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName;
public Vehicle(String modelName) {
this.modelName = modelName;
}
}

public class Car extends Vehicle {
private int numberOfDoors;
public Car(String modelName, int doors) {
super(modelName);
this.numberOfDoors = doors;
}
}
```
Đoạn mã trên thể hiện khái niệm OOP nào?

  • A. Tính đóng gói (Encapsulation)
  • B. Tính trừu tượng (Abstraction)
  • C. Tính kế thừa (Inheritance)
  • D. Tính đa hình (Polymorphism)

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. `==` so sánh giá trị chuỗi, `equals()` so sánh tham chiếu đối tượng.
  • B. Cả hai đều so sánh tham chiếu đối tượng String.
  • C. Cả hai đều so sánh giá trị nội dung chuỗi.
  • D. `==` so sánh tham chiếu đối tượng String, `equals()` so sánh giá trị nội dung chuỗi.

Câu 4: Cho đoạn mã Java:
```java
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) { if (numbers[i] % 2 == 0) { continue; } System.out.print(numbers[i] +

  • A. 1 2 3 4 5
  • B. 1 3 5
  • C. 2 4
  • D. Không in ra gì

Câu 5: Trong Java, exception "NullPointerException" thường xảy ra khi nào?

  • A. Khi cố gắng chia một số cho 0.
  • B. Khi truy cập một phần tử mảng vượt quá kích thước mảng.
  • C. Khi cố gắng truy cập một phương thức hoặc thuộc tính của một biến tham chiếu đối tượng có giá trị `null`.
  • D. Khi kiểu dữ liệu không phù hợp trong phép gán.

Câu 6: Interface và abstract class trong Java có điểm gì khác biệt cơ bản?

  • A. Interface chỉ chứa phương thức trừu tượng, abstract class có thể chứa cả phương thức trừu tượng và phương thức đã được cài đặt.
  • B. Abstract class hỗ trợ đa kế thừa, interface thì không.
  • C. Interface có thể có constructor, abstract class thì không.
  • D. Không có sự khác biệt cơ bản giữa interface và abstract class.

Câu 7: Cho đoạn code Java:
```java
String message =

  • A. World
  • B. Worlds
  • C. World
  • D. Error

Câu 8: Từ khóa `static` trong Java được sử dụng để làm gì?

  • A. Để tạo ra các biến và phương thức chỉ có thể truy cập từ bên trong lớp.
  • B. Để tạo ra các biến và phương thức thuộc về lớp, không cần tạo đối tượng vẫn có thể truy cập.
  • C. Để ngăn chặn việc kế thừa lớp.
  • D. Để khai báo các hằng số không thể thay đổi giá trị.

Câu 9: Vòng lặp `for-each` trong Java (enhanced for loop) được sử dụng chủ yếu để làm gì?

  • A. Thực hiện lặp với số lần xác định trước dựa trên điều kiện phức tạp.
  • B. Lặp qua các phần tử của mảng theo thứ tự ngược lại.
  • C. Thay thế hoàn toàn cho vòng lặp `for` truyền thống trong mọi trường hợp.
  • D. Duyệt qua các phần tử của một mảng hoặc collection một cách tuần tự.

Câu 10: Phương thức `finalize()` trong Java dùng để làm gì và khi nào nó được gọi?

  • A. Phương thức `finalize()` được gọi bởi garbage collector trước khi thu hồi bộ nhớ của đối tượng, dùng để thực hiện các công việc dọn dẹp tài nguyên.
  • B. Phương thức `finalize()` được gọi khi đối tượng được tạo ra để khởi tạo các giá trị ban đầu.
  • C. Phương thức `finalize()` được gọi khi chương trình kết thúc để giải phóng tất cả tài nguyên.
  • D. Phương thức `finalize()` không còn được sử dụng trong các phiên bản Java hiện đại.

Câu 11: Đâu là cách khai báo một hằng số (constant) trong Java?

  • A. const int MAX_VALUE = 100;
  • B. final static int MAX_VALUE = 100;
  • C. static final int MAX_VALUE = 100;
  • D. immutable int MAX_VALUE = 100;

Câu 12: Cho đoạn mã Java:
```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 in ra kết quả gì?

  • A. true
    true
  • B. false
    false
  • C. true
    false
  • D. false
    true

Câu 13: Giải thích ý nghĩa của từ khóa `transient` trong Java khi khai báo một biến thành viên của lớp.

  • A. Biến `transient` chỉ có thể truy cập từ bên trong lớp chứa nó.
  • B. Biến `transient` sẽ được khởi tạo lại mỗi khi đối tượng được tạo mới.
  • C. Biến `transient` không thể thay đổi giá trị sau khi được gán lần đầu.
  • D. Biến `transient` sẽ không được serialize khi đối tượng được chuyển đổi thành byte stream.

Câu 14: Trong Java Collections Framework, interface `List` và `Set` khác nhau cơ bản ở điểm nào?

  • A. `List` cho phép truy cập phần tử theo chỉ số, `Set` thì không.
  • B. `List` cho phép các phần tử trùng lặp và duy trì thứ tự, `Set` không cho phép phần tử trùng lặp và không duy trì thứ tự.
  • C. `Set` được cài đặt dựa trên cấu trúc dữ liệu mảng, `List` dựa trên danh sách liên kết.
  • D. Không có sự khác biệt cơ bản, `List` và `Set` có thể thay thế cho nhau.

Câu 15: Cho đoạn mã Java:
```java
try {
int result = 10 / 0;
System.out.println(

  • A. Result: Infinity
    Khối finally
  • B. Lỗi số học
  • C. Lỗi số học
    Result: Infinity
  • D. Lỗi số học
    Khối finally

Câu 16: Mục đích chính của việc sử dụng Generics trong Java là gì?

  • A. Tăng hiệu suất thực thi của chương trình Java.
  • B. Giảm kích thước mã nguồn Java.
  • C. Tăng cường tính an toàn kiểu dữ liệu (type safety) và tái sử dụng mã.
  • D. Cho phép tạo ra các lớp và interface không thể thay đổi sau khi biên dịch.

Câu 17: Phân biệt giữa checked exception và unchecked exception trong Java.

  • A. Checked exception phải được xử lý tại thời điểm biên dịch, unchecked exception thì không bắt buộc.
  • B. Unchecked exception thường nghiêm trọng hơn checked exception và gây ra crash chương trình.
  • C. Checked exception chỉ xảy ra trong quá trình biên dịch, unchecked exception xảy ra khi chạy chương trình.
  • D. Không có sự khác biệt về cách xử lý giữa checked và unchecked exception.

Câu 18: Cho đoạn mã Java:
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
```
Đoạn mã trên thể hiện khái niệm OOP nào?

  • A. Tính đóng gói (Encapsulation)
  • B. Tính kế thừa (Inheritance)
  • C. Tính trừu tượng (Abstraction)
  • D. Tính đa hình (Polymorphism) - cụ thể là Overloading

Câu 19: Stream API trong Java 8 và các phiên bản sau này cung cấp cơ chế xử lý dữ liệu theo kiểu nào?

  • A. Lập trình hướng đối tượng (Object-Oriented Programming)
  • B. Lập trình hàm (Functional Programming)
  • C. Lập trình mệnh lệnh (Imperative Programming)
  • D. Lập trình logic (Logic Programming)

Câu 20: Lambda expression trong Java được sử dụng để làm gì?

  • A. Định nghĩa các lớp inner class một cách ngắn gọn.
  • B. Thay thế cho việc sử dụng vòng lặp `for` truyền thống.
  • C. Cung cấp một cách viết ngắn gọn để biểu diễn anonymous function (hàm vô danh) và functional interface.
  • D. Tăng cường khả năng xử lý đa luồng trong Java.

Câu 21: Cho đoạn mã Java:
```java
List names = Arrays.asList(

  • A. ALICE
    BOB
    CHARLIE
  • B. alice
    bob
    charlie
  • C. Alice
    Bob
    Charlie
  • D. Error

Câu 22: Mục đích của garbage collection (thu gom rác) trong Java là gì?

  • A. Tối ưu hóa hiệu suất CPU của chương trình Java.
  • B. Tự động giải phóng bộ nhớ không còn được sử dụng bởi chương trình Java.
  • C. Kiểm tra và sửa lỗi logic trong mã nguồn Java.
  • D. Tăng cường tính bảo mật cho ứng dụng Java.

Câu 23: Sự khác biệt chính giữa `StringBuilder` và `StringBuffer` trong Java là gì?

  • A. `StringBuilder` là immutable, `StringBuffer` là mutable.
  • B. `StringBuffer` nhanh hơn `StringBuilder` trong hầu hết các trường hợp.
  • C. `StringBuffer` là thread-safe (an toàn luồng), `StringBuilder` thì không.
  • D. `StringBuilder` chỉ có thể sử dụng trong Java phiên bản mới, `StringBuffer` trong phiên bản cũ.

Câu 24: Cho đoạn mã Java:
```java
Map ages = new HashMap<>();
ages.put(

  • A. 25
  • B. 30
  • C. 0
  • D. null

Câu 25: Giải thích khái niệm "method overriding" trong Java.

  • A. Việc một lớp có nhiều phương thức trùng tên nhưng khác tham số.
  • B. Việc lớp con định nghĩa lại một phương thức đã có ở lớp cha với cùng tên, tham số và kiểu trả về.
  • C. Việc gọi một phương thức của lớp cha từ lớp con.
  • D. Việc ẩn giấu việc cài đặt chi tiết của một phương thức.

Câu 26: Annotation trong Java được sử dụng để làm gì?

  • A. Thay thế cho comment để giải thích mã nguồn.
  • B. Tăng cường hiệu suất thực thi của chương trình Java.
  • C. Cung cấp metadata (dữ liệu về dữ liệu) về mã nguồn, có thể được xử lý bởi compiler hoặc runtime.
  • D. Định nghĩa các kiểu dữ liệu mới trong Java.

Câu 27: Cho đoạn mã Java:
```java
Set colors = new HashSet<>();
colors.add(

  • A. 3
  • B. 2
  • C. 1
  • D. 0

Câu 28: Trong Java, "boxing" và "unboxing" là gì?

  • A. Boxing là quá trình đóng gói mã nguồn thành file .jar, unboxing là giải nén file .jar.
  • B. Boxing và unboxing là hai loại exception thường gặp trong Java.
  • C. Boxing là quá trình biên dịch mã nguồn Java, unboxing là quá trình thực thi mã byte code.
  • D. Boxing là chuyển đổi từ kiểu dữ liệu nguyên thủy sang wrapper class, unboxing là ngược lại.

Câu 29: Interface `Comparable` và `Comparator` trong Java được sử dụng để làm gì và khác nhau như thế nào?

  • A. Cả hai đều được sử dụng để tạo ra các collection chỉ đọc.
  • B. `Comparable` chỉ dùng cho kiểu dữ liệu số, `Comparator` dùng cho mọi kiểu dữ liệu.
  • C. `Comparable` định nghĩa cách so sánh tự nhiên của đối tượng, `Comparator` định nghĩa cách so sánh tùy biến bên ngoài class.
  • D. Không có sự khác biệt, `Comparable` và `Comparator` có thể thay thế cho nhau trong mọi trường hợp.

Câu 30: Cho đoạn mã Java:
```java
public class Example {
public static void main(String[] args) {
String str = null;
System.out.println(str.length());
}
}
```
Khi chạy đoạn mã trên, điều gì sẽ xảy ra?

  • A. Chương trình sẽ biên dịch thành công nhưng gây ra lỗi `NullPointerException` khi chạy.
  • B. Chương trình sẽ không biên dịch được do lỗi cú pháp.
  • C. Chương trình sẽ chạy thành công và in ra giá trị 0.
  • D. Chương trình sẽ chạy thành công và in ra giá trị -1.

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 1: Trong lập trình hướng đối tượng Java, khái niệm 'tính đóng gói' (encapsulation) thể hiện rõ nhất qua điều nào?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName;
public Vehicle(String modelName) {
this.modelName = modelName;
}
}

public class Car extends Vehicle {
private int numberOfDoors;
public Car(String modelName, int doors) {
super(modelName);
this.numberOfDoors = doors;
}
}
```
Đoạn mã trên thể hiện khái niệm OOP nào?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

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?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 4: Cho đoạn mã Java:
```java
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) { if (numbers[i] % 2 == 0) { continue; } System.out.print(numbers[i] + " "); } ``` Đoạn mã trên in ra kết quả gì?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 5: Trong Java, exception 'NullPointerException' thường xảy ra khi nào?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 6: Interface và abstract class trong Java có điểm gì khác biệt cơ bản?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 7: Cho đoạn code Java:
```java
String message = "Hello World";
String result = message.substring(6, 11);
System.out.println(result);
```
Kết quả in ra màn hình là gì?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 8: Từ khóa `static` trong Java được sử dụng để làm gì?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 9: Vòng lặp `for-each` trong Java (enhanced for loop) được sử dụng chủ yếu để làm gì?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 10: Phương thức `finalize()` trong Java dùng để làm gì và khi nào nó được gọi?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 11: Đâu là cách khai báo một hằng số (constant) trong Java?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 12: Cho đoạn mã Java:
```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 in ra kết quả gì?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 13: Giải thích ý nghĩa của từ khóa `transient` trong Java khi khai báo một biến thành viên của lớp.

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 14: Trong Java Collections Framework, interface `List` và `Set` khác nhau cơ bản ở điểm nào?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 15: Cho đoạn mã Java:
```java
try {
int result = 10 / 0;
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Lỗi số học");
} finally {
System.out.println("Khối finally");
}
```
Đoạn mã trên in ra kết quả gì?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 16: Mục đích chính của việc sử dụng Generics trong Java là gì?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 17: Phân biệt giữa checked exception và unchecked exception trong Java.

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 18: Cho đoạn mã Java:
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
```
Đoạn mã trên thể hiện khái niệm OOP nào?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 19: Stream API trong Java 8 và các phiên bản sau này cung cấp cơ chế xử lý dữ liệu theo kiểu nào?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 20: Lambda expression trong Java được sử dụng để làm gì?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 21: Cho đoạn mã Java:
```java
List names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(name -> System.out.println(name.toUpperCase()));
```
Đoạn mã trên in ra kết quả gì?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 22: Mục đích của garbage collection (thu gom rác) trong Java là gì?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 23: Sự khác biệt chính giữa `StringBuilder` và `StringBuffer` trong Java là gì?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 24: Cho đoạn mã Java:
```java
Map ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Charlie"));
```
Đoạn mã trên in ra kết quả gì?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 25: Giải thích khái niệm 'method overriding' trong Java.

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 26: Annotation trong Java được sử dụng để làm gì?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 27: Cho đoạn mã Java:
```java
Set colors = new HashSet<>();
colors.add("Red");
colors.add("Blue");
colors.add("Red");
System.out.println(colors.size());
```
Đoạn mã trên in ra kết quả gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 28: Trong Java, 'boxing' và 'unboxing' là gì?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 29: Interface `Comparable` và `Comparator` trong Java được sử dụng để làm gì và khác nhau như thế nào?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 10

Câu 30: Cho đoạn mã Java:
```java
public class Example {
public static void main(String[] args) {
String str = null;
System.out.println(str.length());
}
}
```
Khi chạy đoạn mã trên, điều gì sẽ xảy ra?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 11

Trắc nghiệm Java - Đề 11 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

Câu 1: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation)?

  • A. Tính đóng gói cho phép các lớp con kế thừa tất cả các thuộc tính và phương thức của lớp cha.
  • 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 chương trình chạy nhanh hơn bằng cách giảm thiểu sự phụ thuộc giữa các đối tượng.
  • D. Tính đóng gói là khả năng một đối tượng có thể có nhiều hình thức khác nhau.

Câu 2: Cho đoạn mã Java sau: `int[] numbers = {5, 2, 8, 1, 9}; Arrays.sort(numbers);`. Sau khi thực thi, mảng `numbers` sẽ có thứ tự như thế nào?

  • A. {1, 2, 5, 8, 9}
  • B. {9, 8, 5, 2, 1}
  • C. {5, 2, 8, 1, 9}
  • D. {5, 8, 9, 2, 1}

Câu 3: Phương thức `equals()` và toán tử `==` trong Java khác nhau như thế nào khi so sánh hai đối tượng String?

  • 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 String.
  • C. `equals()` so sánh giá trị của chuỗi, còn `==` so sánh tham chiếu của đối tượng String.
  • D. `equals()` so sánh tham chiếu của đối tượng String, còn `==` so sánh giá trị của chuỗi.

Câu 4: Trong Java, interface và abstract class có điểm chung và khác biệt nào? Chọn phát biểu SAI.

  • A. Cả interface và abstract class đều không thể khởi tạo trực tiếp đối tượng.
  • B. Abstract class có thể chứa các phương thức có phần thân (implementation), trong khi interface chỉ chứa khai báo phương thức (method signature).
  • C. Một lớp có thể implements nhiều interface nhưng chỉ có thể kế thừa (extends) từ một abstract class (hoặc một lớp thông thường).
  • D. Interface có thể chứa các biến instance (instance variables), tương tự như abstract class.

Câu 5: Cho đoạn code Java sau: `List names = new ArrayList<>(); names.add(

  • A. [
  • B. [
  • C. [
  • D. Lỗi biên dịch vì không thể xóa phần tử khỏi ArrayList.

Câu 6: Ngoại lệ (Exception) trong Java được sử dụng để làm gì?

  • A. Tăng tốc độ thực thi chương trình.
  • B. Bảo mật mã nguồn chương trình.
  • C. Xử lý các tình huống lỗi bất thường xảy ra trong quá trình chạy chương trình, giúp chương trình không bị dừng đột ngột.
  • D. Định nghĩa các kiểu dữ liệu mới trong Java.

Câu 7: Từ khóa `static` trong Java có ý nghĩa gì khi sử dụng cho biến và phương thức?

  • A. Biến và phương thức `static` thuộc về lớp, không thuộc về bất kỳ đối tượng cụ thể nào của lớp đó. Chúng được chia sẻ bởi tất cả các đối tượng của lớp.
  • B. Biến và phương thức `static` chỉ có thể được truy cập từ bên trong cùng một lớp.
  • C. Biến và phương thức `static` được tạo ra khi một đối tượng của lớp được khởi tạo.
  • D. Biến và phương thức `static` không thể bị kế thừa bởi lớp con.

Câu 8: Phương thức `main()` trong Java có vai trò gì và tại sao nó cần phải là `public static void`?

  • A. Phương thức `main()` là phương thức khởi tạo của lớp và cần là `public static void` để có thể tạo đối tượng của lớp.
  • B. Phương thức `main()` là điểm bắt đầu thực thi chương trình Java. `public` để JVM có thể truy cập từ bên ngoài, `static` để có thể gọi mà không cần đối tượng, `void` vì nó không trả về giá trị.
  • C. Phương thức `main()` dùng để khai báo các biến toàn cục và cần là `public static void` để tất cả các lớp khác có thể truy cập.
  • D. Phương thức `main()` là phương thức hủy đối tượng và cần là `public static void` để đảm bảo giải phóng bộ nhớ khi chương trình kết thúc.

Câu 9: Cho đoạn mã Java: `int a = 10; int b = 3; double result = (double) a / b;`. Giá trị của `result` là bao nhiêu?

  • A. 3
  • B. 3.0
  • C. 3.333...
  • D. 3.666...

Câu 10: Vòng lặp `for-each` (enhanced for loop) trong Java được sử dụng để làm gì và nó khác vòng lặp `for` truyền thống như thế nào?

  • A. Vòng lặp `for-each` chỉ dùng để lặp qua các số nguyên, còn vòng lặp `for` truyền thống có thể lặp qua mọi kiểu dữ liệu.
  • B. Vòng lặp `for-each` chạy nhanh hơn vòng lặp `for` truyền thống.
  • C. Vòng lặp `for-each` cho phép thay đổi giá trị của các phần tử trong mảng hoặc collection, còn vòng lặp `for` truyền thống thì không.
  • D. Vòng lặp `for-each` được sử dụng để duyệt qua các phần tử của mảng hoặc collection một cách đơn giản và dễ đọc hơn, không cần quan tâm đến chỉ số (index).

Câu 11: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Ý nghĩa của `final` khi sử dụng với lớp là gì?

  • A. Lớp `final` là lớp trừu tượng và không thể khởi tạo đối tượng.
  • B. Lớp `final` không thể bị kế thừa (subclass).
  • C. Lớp `final` chỉ chứa các phương thức `static` và biến `static final`.
  • D. Lớp `final` là lớp cuối cùng trong chuỗi kế thừa và không có lớp con.

Câu 12: Cho đoạn mã Java sau: `String message =

  • A.
  • B.
  • C.
  • D.

Câu 13: Trong Java, cơ chế thu gom rác (garbage collection) hoạt động như thế nào?

  • A. Lập trình viên phải tự giải phóng bộ nhớ bằng từ khóa `delete` khi đối tượng không còn được sử dụng.
  • B. Bộ nhớ được cấp phát cho đối tượng sẽ tự động được giải phóng khi chương trình kết thúc.
  • C. Garbage collection là một quá trình chạy nền định kỳ quét bộ nhớ và giải phóng bộ nhớ của các đối tượng vẫn đang được sử dụng.
  • D. Garbage collection là một quá trình chạy nền định kỳ quét bộ nhớ và giải phóng bộ nhớ của các đối tượng không còn được tham chiếu đến nữa.

Câu 14: Sự khác biệt chính giữa `checked exception` và `unchecked exception` trong Java là gì?

  • A. `Checked exception` xảy ra trong quá trình biên dịch, còn `unchecked exception` xảy ra trong quá trình chạy.
  • B. `Checked exception` phải được xử lý (catch hoặc declare) tại thời điểm biên dịch, còn `unchecked exception` thì không bắt buộc.
  • C. `Checked exception` là các lỗi nghiêm trọng, còn `unchecked exception` là các lỗi nhẹ.
  • D. `Checked exception` chỉ xảy ra với các thao tác nhập/xuất, còn `unchecked exception` xảy ra với các lỗi logic.

Câu 15: Cho đoạn mã Java: `int x = 5; int y = x++; int z = ++x;`. Giá trị của `y` và `z` sau khi thực hiện là bao nhiêu?

  • A. y = 5, z = 7
  • B. y = 6, z = 6
  • C. y = 5, z = 6
  • D. y = 6, z = 7

Câu 16: 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. Dừng thực thi một luồng.
  • C. Kiểm soát quyền truy cập đồng thời của nhiều luồng vào một tài nguyên chung, đảm bảo tính toàn vẹn dữ liệu.
  • D. Tăng tốc độ thực thi của chương trình đa luồng.

Câu 17: Phương thức `toString()` trong Java có mục đích gì và tại sao nó thường được override (ghi đè)?

  • A. Phương thức `toString()` dùng để so sánh hai đối tượng bằng nhau.
  • B. Phương thức `toString()` dùng để chuyển đổi một đối tượng sang kiểu dữ liệu String.
  • C. Phương thức `toString()` dùng để tạo bản sao của một đối tượng.
  • D. Phương thức `toString()` trả về biểu diễn chuỗi của đối tượng. Nó thường được override để cung cấp thông tin hữu ích và dễ đọc về đối tượng khi in ra hoặc ghi log.

Câu 18: Cho biết kết quả đoạn code sau:
```java
Integer num1 = 100;
Integer num2 = 100;
Integer num3 = 500;
Integer num4 = 500;
System.out.println(num1 == num2);
System.out.println(num3 == num4);
```

  • A. false
    false
  • B. true
    true
  • C. true
    false
  • D. false
    true

Câu 19: Mục đích chính của Dependency Injection (DI) trong lập trình Java là gì?

  • A. Tăng hiệu suất của ứng dụng Java.
  • B. Giảm sự phụ thuộc giữa các thành phần (loose coupling), giúp code dễ bảo trì, kiểm thử và mở rộng hơn.
  • C. Tự động tạo mã Java.
  • D. Quản lý bộ nhớ hiệu quả hơn.

Câu 20: Stream API trong Java 8 (và các phiên bản sau) cung cấp cách tiếp cận lập trình nào để xử lý collections?

  • A. Lập trình hàm (Functional programming) trên collections, cho phép thực hiện các phép biến đổi và lọc dữ liệu một cách khai báo và hiệu quả.
  • B. Lập trình hướng đối tượng (Object-oriented programming) trên collections, tập trung vào việc tạo các đối tượng collection phức tạp.
  • C. Lập trình hướng sự kiện (Event-driven programming) trên collections, xử lý dữ liệu dựa trên các sự kiện.
  • D. Lập trình hướng thủ tục (Procedural programming) trên collections, thực hiện các bước xử lý dữ liệu tuần tự.

Câu 21: Trong Java, annotation được sử dụng để làm gì?

  • A. Thay thế cho comment trong code.
  • B. Tăng tốc độ biên dịch chương trình.
  • C. Cung cấp metadata (dữ liệu về dữ liệu) cho trình biên dịch, JVM hoặc các công cụ khác, giúp hướng dẫn hoặc kiểm soát quá trình biên dịch và thực thi.
  • D. Tự động sửa lỗi code.

Câu 22: Cho đoạn code Java: `int[] arr = {1, 2, 3, 4, 5}; int sum = 0; for (int num : arr) { if (num % 2 == 0) { continue; } sum += num; }`. Giá trị của `sum` sau khi thực hiện là bao nhiêu?

  • A. 15
  • B. 9
  • C. 6
  • D. 0

Câu 23: Trong Java, serialization là gì và tại sao nó hữu ích?

  • A. Serialization là quá trình mã hóa dữ liệu để bảo mật thông tin.
  • B. Serialization là quá trình nén dữ liệu để giảm kích thước file.
  • C. Serialization là quá trình chuyển đổi mã Java sang mã máy.
  • D. Serialization là quá trình chuyển đổi một đối tượng Java thành một chuỗi byte, cho phép lưu trữ đối tượng xuống file, truyền qua mạng, hoặc lưu trữ trong database. Deserialization là quá trình ngược lại, khôi phục đối tượng từ chuỗi byte.

Câu 24: JDBC (Java Database Connectivity) được sử dụng để làm gì?

  • A. Kết nối và tương tác với các hệ quản trị cơ sở dữ liệu (Databases) từ ứng dụng Java.
  • B. Xây dựng giao diện người dùng đồ họa (GUI) trong Java.
  • C. Phát triển ứng dụng web Java phía server.
  • D. Quản lý bộ nhớ trong Java.

Câu 25: Giả sử bạn có một lớp `Dog` kế thừa từ lớp `Animal`. Nếu bạn tạo một đối tượng `Animal animal = new Dog();`, bạn có thể gọi phương thức nào của đối tượng `animal`?

  • 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 lớp `Animal` và các phương thức được ghi đè (overridden) trong lớp `Dog`.
  • D. Tất cả các phương thức của cả lớp `Animal` và lớp `Dog`.

Câu 26: Java Virtual Machine (JVM) có vai trò gì trong việc thực thi chương trình Java?

  • A. JVM là trình biên dịch mã nguồn Java thành mã máy.
  • B. JVM là một môi trường runtime thực thi bytecode Java. Nó chịu trách nhiệm biên dịch bytecode thành mã máy tương ứng với hệ điều hành và phần cứng cụ thể, đảm bảo tính độc lập nền tảng của Java.
  • C. JVM là một IDE (Integrated Development Environment) để viết code Java.
  • D. JVM là một thư viện các lớp và API chuẩn của Java.

Câu 27: Trong Java, lambda expression là gì và lợi ích của việc sử dụng lambda expression?

  • A. Lambda expression là một kiểu dữ liệu mới trong Java.
  • B. Lambda expression là một cách khai báo biến hằng số.
  • C. Lambda expression là một cơ chế xử lý ngoại lệ mới.
  • D. Lambda expression là một cách biểu diễn ngắn gọn cho anonymous inner class (lớp nặc danh) có một phương thức trừu tượng duy nhất (functional interface). Nó giúp viết code ngắn gọn, dễ đọc và hỗ trợ lập trình hàm.

Câu 28: Cho đoạn mã Java: `String str1 = new String(

  • A. 3
  • B. 1
  • C. 2
  • D. 0

Câu 29: Trong Java, Garbage Collector hoạt động tốt nhất khi nào?

  • A. Khi chương trình mới bắt đầu chạy.
  • B. Khi bộ nhớ còn rất ít.
  • C. Khi CPU rảnh rỗi và bộ nhớ heap đầy hoặc gần đầy, hoặc khi System.gc() được gọi.
  • D. Garbage Collector luôn chạy liên tục và không có thời điểm hoạt động tốt nhất.

Câu 30: Phát biểu nào sau đây là đúng về tính bất biến (immutability) của String trong Java?

  • A. Một khi đối tượng String được tạo ra, giá trị của nó không thể thay đổi. Bất kỳ thao tác nào trên String (ví dụ: `substring()`, `toUpperCase()`) đều tạo ra một đối tượng String mới.
  • B. Đối tượng String có thể thay đổi giá trị sau khi tạo, nhưng điều này không được khuyến khích.
  • C. Tính bất biến của String chỉ áp dụng cho String literals, không áp dụng cho đối tượng String được tạo bằng `new String()`.
  • D. String trong Java không phải là bất biến.

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 1: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation)?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 2: Cho đoạn mã Java sau: `int[] numbers = {5, 2, 8, 1, 9}; Arrays.sort(numbers);`. Sau khi thực thi, mảng `numbers` sẽ có thứ tự như thế nào?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 3: Phương thức `equals()` và toán tử `==` trong Java khác nhau như thế nào khi so sánh hai đối tượng String?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 4: Trong Java, interface và abstract class có điểm chung và khác biệt nào? Chọn phát biểu SAI.

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 5: Cho đoạn code Java sau: `List names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Charlie"); names.remove(1);`. Sau khi thực hiện đoạn mã, danh sách `names` sẽ chứa các phần tử nào?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 6: Ngoại lệ (Exception) trong Java được sử dụng để làm gì?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 7: Từ khóa `static` trong Java có ý nghĩa gì khi sử dụng cho biến và phương thức?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 8: Phương thức `main()` trong Java có vai trò gì và tại sao nó cần phải là `public static void`?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 9: Cho đoạn mã Java: `int a = 10; int b = 3; double result = (double) a / b;`. Giá trị của `result` là bao nhiêu?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 10: Vòng lặp `for-each` (enhanced for loop) trong Java được sử dụng để làm gì và nó khác vòng lặp `for` truyền thống như thế nào?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 11: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Ý nghĩa của `final` khi sử dụng với lớp là gì?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 12: Cho đoạn mã Java sau: `String message = "Hello World"; String sub = message.substring(6);`. Giá trị của `sub` là gì?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 13: Trong Java, cơ chế thu gom rác (garbage collection) hoạt động như thế nào?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 14: Sự khác biệt chính giữa `checked exception` và `unchecked exception` trong Java là gì?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 15: Cho đoạn mã Java: `int x = 5; int y = x++; int z = ++x;`. Giá trị của `y` và `z` sau khi thực hiện là bao nhiêu?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 16: Trong lập trình đa luồng (multithreading) Java, từ khóa `synchronized` được sử dụng để làm gì?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 17: Phương thức `toString()` trong Java có mục đích gì và tại sao nó thường được override (ghi đè)?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 18: Cho biết kết quả đoạn code sau:
```java
Integer num1 = 100;
Integer num2 = 100;
Integer num3 = 500;
Integer num4 = 500;
System.out.println(num1 == num2);
System.out.println(num3 == num4);
```

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 19: Mục đích chính của Dependency Injection (DI) trong lập trình Java là gì?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 20: Stream API trong Java 8 (và các phiên bản sau) cung cấp cách tiếp cận lập trình nào để xử lý collections?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 21: Trong Java, annotation được sử dụng để làm gì?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 22: Cho đoạn code Java: `int[] arr = {1, 2, 3, 4, 5}; int sum = 0; for (int num : arr) { if (num % 2 == 0) { continue; } sum += num; }`. Giá trị của `sum` sau khi thực hiện là bao nhiêu?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 23: Trong Java, serialization là gì và tại sao nó hữu ích?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 24: JDBC (Java Database Connectivity) được sử dụng để làm gì?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 25: Giả sử bạn có một lớp `Dog` kế thừa từ lớp `Animal`. Nếu bạn tạo một đối tượng `Animal animal = new Dog();`, bạn có thể gọi phương thức nào của đối tượng `animal`?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 26: Java Virtual Machine (JVM) có vai trò gì trong việc thực thi chương trình Java?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 27: Trong Java, lambda expression là gì và lợi ích của việc sử dụng lambda expression?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 28: Cho đoạn mã Java: `String str1 = new String("Java"); String str2 = "Java"; String str3 = "Java";`. Hỏi có bao nhiêu đối tượng String được tạo ra trong String Pool?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 29: Trong Java, Garbage Collector hoạt động tốt nhất khi nào?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 11

Câu 30: Phát biểu nào sau đây là đúng về tính bất biến (immutability) của String trong Java?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 12

Trắc nghiệm Java - Đề 12 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

Câu 1: Trong lập trình hướng đối tượng Java, đặc điểm "tính đóng gói" (encapsulation) mang lại lợi ích chính nào sau đây?

  • A. Cho phép các lớp con kế thừa thuộc tính và phương thức từ lớp cha.
  • B. Che giấu thông tin chi tiết thực hiện bên trong đối tượng và bảo vệ dữ liệu khỏi truy cập trực tiếp từ bên ngoài.
  • C. Tạo ra sự linh hoạt khi một đối tượng có thể có nhiều hình thức khác nhau.
  • D. Giảm thiểu sự trùng lặp mã nguồn bằng cách sử dụng lại code đã viết.

Câu 2: Xem xét đoạn mã Java sau: `List names = new ArrayList<>(); names.add(

  • A. [
  • B. [
  • C. [
  • D. [

Câu 3: Phương thức `equals()` và `hashCode()` có vai trò quan trọng trong Java, đặc biệt khi làm việc với các cấu trúc dữ liệu như `HashMap` và `HashSet`. Điều gì sau đây mô tả đúng nhất mối quan hệ giữa hai phương thức này?

  • A. Nếu hai đối tượng bằng nhau theo `equals()`, chúng phải có cùng giá trị `hashCode()`. Ngược lại không bắt buộc.
  • B. Hai đối tượng có cùng giá trị `hashCode()` thì chắc chắn bằng nhau theo `equals()`.
  • C. Nếu hai đối tượng bằng nhau theo `equals()`, chúng phải có cùng giá trị `hashCode()`. Nếu không, `HashMap` và `HashSet` có thể hoạt động không chính xác.
  • D. `equals()` dùng để so sánh tham chiếu đối tượng, còn `hashCode()` dùng để so sánh giá trị nội dung đối tượng.

Câu 4: Cho đoạn mã sau: `int x = 5; int y = 10; try { System.out.println(y / x); x = 0; System.out.println(y / x); } catch (ArithmeticException e) { System.out.println(

  • A. 2 Error Finally
  • B. 2 Finally Error
  • C. Error Finally
  • D. 2 Error Finally

Câu 5: Trong Java, interface và abstract class đều được sử dụng để hiện thực tính trừu tượng. Điểm khác biệt chính giữa interface và abstract class là gì?

  • A. Abstract class có thể chứa các phương thức static, interface thì không.
  • B. Một class có thể implements nhiều interface nhưng chỉ có thể extends từ một abstract class.
  • C. Interface hỗ trợ đa kế thừa, abstract class thì không.
  • D. Abstract class có thể có constructor, interface thì không.

Câu 6: Để tạo một luồng (thread) mới trong Java, cách nào sau đây là đúng và hiệu quả nhất?

  • A. Sử dụng từ khóa `synchronized` để tạo luồng.
  • B. Gọi trực tiếp phương thức `run()` của class `Thread`.
  • C. Implement interface `Runnable` và tạo một đối tượng `Thread` từ đó.
  • D. Extends class `Thread` và override phương thức `start()`.

Câu 7: Giả sử bạn có một đối tượng `student` thuộc class `Student`. Để ghi đối tượng này xuống file và sau đó đọc lại, bạn sẽ sử dụng cơ chế Serialization của Java. Điều kiện tiên quyết để class `Student` có thể được serialized là gì?

  • A. Class `Student` phải implements interface `Serializable`.
  • B. Class `Student` phải extends class `ObjectOutputStream`.
  • C. Class `Student` cần có một constructor không tham số.
  • D. Không cần điều kiện gì đặc biệt, mọi class đều có thể serialized.

Câu 8: Trong Java, garbage collection là một tiến trình tự động quản lý bộ nhớ. Mục đích chính của garbage collection là gì?

  • A. Tối ưu hóa hiệu suất CPU bằng cách giải phóng bộ nhớ.
  • B. Ngăn chặn lỗi tràn bộ nhớ stack.
  • C. Giải phóng bộ nhớ đã cấp phát cho các đối tượng không còn được tham chiếu đến nữa, tránh rò rỉ bộ nhớ.
  • D. Tự động nén bộ nhớ để tăng dung lượng bộ nhớ khả dụng.

Câu 9: Cho đoạn code sau: `String str1 =

  • A. true true
  • B. false true
  • C. true false
  • D. false false

Câu 10: Trong Java, từ khóa `static` có thể được sử dụng cho biến, phương thức, block và class (nested static class). Ý nghĩa của việc khai báo một biến là `static` là gì?

  • A. Biến `static` chỉ có thể được truy cập từ bên trong class chứa nó.
  • B. Biến `static` được khởi tạo lại mỗi khi một đối tượng của class được tạo ra.
  • C. Biến `static` không thể thay đổi giá trị sau khi được khởi tạo.
  • D. Biến `static` là biến thuộc về class, được chia sẻ bởi tất cả các đối tượng của class đó.

Câu 11: Phương thức `parseInt()` thuộc class nào trong Java và chức năng của nó là gì?

  • A. Class `String`, chuyển đổi một số nguyên sang dạng String.
  • B. Class `Math`, tính căn bậc hai của một số nguyên.
  • C. Class `Integer`, chuyển đổi một String biểu diễn số nguyên sang kiểu int.
  • D. Class `Scanner`, đọc một số nguyên từ input stream.

Câu 12: Xem xét đoạn code sau: `int[] numbers = {1, 2, 3, 4, 5}; for (int i = 0; i < numbers.length; i++) { if (numbers[i] % 2 == 0) { continue; } System.out.print(numbers[i] +

  • A. 1 3 5
  • B. 2 4
  • C. 1 2 3 4 5
  • D. Không in ra gì

Câu 13: Trong Java, Annotations được sử dụng để cung cấp metadata về code. Mục đích chính của việc sử dụng Annotations là gì?

  • A. Thay thế cho comments để giải thích code.
  • B. Cung cấp thông tin bổ sung cho compiler và JVM, hoặc cho các công cụ build và runtime khác.
  • C. Tăng hiệu suất thực thi của chương trình Java.
  • D. Bảo vệ code khỏi bị decompile ngược.

Câu 14: Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu dữ liệu nguyên thủy (primitive data type) trong Java?

  • A. int
  • B. boolean
  • C. char
  • D. String

Câu 15: Để đọc dữ liệu từ một file văn bản trong Java, class nào sau đây thường được sử dụng?

  • A. ObjectOutputStream
  • B. ServerSocket
  • C. BufferedReader
  • D. ArrayList

Câu 16: Phương thức `substring(int beginIndex, int endIndex)` của class `String` trong Java trả về giá trị gì?

  • A. Trả về String gốc từ vị trí `beginIndex` đến `endIndex` (bao gồm cả `endIndex`).
  • B. Trả về một String mới là chuỗi con của String gốc, bắt đầu từ vị trí `beginIndex` và kết thúc tại vị trí `endIndex - 1`.
  • C. Trả về độ dài của chuỗi con từ `beginIndex` đến `endIndex`.
  • D. Phương thức này không tồn tại trong class `String`.

Câu 17: Trong Java, cơ chế Generic được giới thiệu từ phiên bản nào và mục đích chính của Generic là gì?

  • A. Java 1.0, tăng hiệu suất của Collection Framework.
  • B. Java 5, đơn giản hóa cú pháp khai báo biến.
  • C. Java 8, hỗ trợ lập trình hàm.
  • D. Java 5, cung cấp type safety tại thời điểm biên dịch và giảm việc ép kiểu (casting).

Câu 18: Để so sánh hai đối tượng theo thứ tự tự nhiên của chúng trong Java, interface nào sau đây cần được implement?

  • A. Comparable
  • B. Comparator
  • C. Serializable
  • D. Cloneable

Câu 19: Cho đoạn code sau: `int a = 10; int b = 3; double result = (double) a / b; System.out.println(result);`. Kết quả in ra của đoạn code này là gì?

  • A. 3
  • B. 3.0
  • C. 3.3333...
  • D. 3.3

Câu 20: Trong Java, exception `NullPointerException` thường xảy ra khi nào?

  • A. Khi truy cập vào một phần tử mảng vượt quá kích thước mảng.
  • B. Khi cố gắng gọi phương thức hoặc truy cập thuộc tính của một đối tượng tham chiếu null.
  • C. Khi thực hiện phép chia cho 0.
  • D. Khi cố gắng chuyển đổi một String không hợp lệ sang số.

Câu 21: Phương thức `toString()` được định nghĩa trong class `Object` và được override trong nhiều class khác trong Java. Mục đích chính của việc override phương thức `toString()` là gì?

  • A. So sánh hai đối tượng xem có bằng nhau hay không.
  • B. Chuyển đổi một đối tượng sang kiểu dữ liệu String.
  • C. Trả về một chuỗi String mô tả đối tượng một cách dễ đọc, thường dùng cho mục đích debug và logging.
  • D. Khởi tạo các thuộc tính của đối tượng.

Câu 22: Trong Java, từ khóa `final` có thể được sử dụng cho class, method và variable. Khi một method được khai báo là `final`, điều đó có nghĩa là gì?

  • A. Method đó chỉ có thể được gọi một lần duy nhất.
  • B. Method đó không thể bị override bởi các class con.
  • C. Method đó được thực thi cuối cùng trong chương trình.
  • D. Method đó luôn trả về giá trị cuối cùng của một biến.

Câu 23: Cho đoạn code sau: `Set numbers = new HashSet<>(); numbers.add(10); numbers.add(5); numbers.add(10); System.out.println(numbers.size());`. Kết quả in ra của đoạn code này là gì?

  • A. 3
  • B. 0
  • C. 2
  • D. 1

Câu 24: Trong mô hình lập trình hướng đối tượng, "tính đa hình" (polymorphism) thể hiện rõ nhất qua cơ chế nào trong Java?

  • A. Tính đóng gói (Encapsulation)
  • B. Tính trừu tượng (Abstraction)
  • C. Tính kế thừa (Inheritance)
  • D. Method Overriding (ghi đè phương thức) và Method Overloading (nạp chồng phương thức)

Câu 25: Để tạo một hằng số (constant) trong Java, từ khóa nào sau đây được sử dụng?

  • A. static
  • B. final
  • C. const
  • D. immutable

Câu 26: Trong Java, diamond operator `<>` được giới thiệu từ phiên bản Java 7. Lợi ích chính của việc sử dụng diamond operator là gì?

  • A. Giảm sự rườm rà khi khai báo kiểu dữ liệu generic, làm code dễ đọc hơn.
  • B. Tăng hiệu suất của generic collections.
  • C. Cho phép khai báo generic type parameters mà không cần chỉ định kiểu dữ liệu cụ thể.
  • D. Bắt buộc sử dụng generic cho tất cả các Collection Framework classes.

Câu 27: Interface `Comparator` trong Java được sử dụng để làm gì?

  • A. Định nghĩa thứ tự tự nhiên cho các đối tượng (tương tự như `Comparable`).
  • B. Định nghĩa một cách so sánh tùy chỉnh cho các đối tượng, cho phép sắp xếp theo nhiều tiêu chí khác nhau.
  • C. Kiểm tra xem hai đối tượng có bằng nhau hay không.
  • D. Chuyển đổi một đối tượng sang kiểu dữ liệu có thể so sánh.

Câu 28: Cho đoạn code sau: `String message = null; if (message != null && message.length() > 5) { System.out.println(message.toUpperCase()); }`. Điều gì xảy ra khi đoạn code này được thực thi?

  • A. In ra
  • B. Gây ra lỗi `NullPointerException` vì `message` là null.
  • C. In ra message viết hoa nếu độ dài của message lớn hơn 5.
  • D. Không in ra gì và không gây ra lỗi, vì điều kiện đầu tiên `message != null` là false, nên biểu thức `message.length() > 5` không được đánh giá.

Câu 29: Trong Java, thread pool (ví dụ `ExecutorService`) được sử dụng để quản lý các thread. Lợi ích chính của việc sử dụng thread pool so với việc tạo và hủy thread thủ công là gì?

  • A. Thread pool giúp đơn giản hóa việc tạo và quản lý thread.
  • B. Thread pool tự động điều chỉnh số lượng thread dựa trên tải hệ thống.
  • C. Thread pool giảm overhead của việc tạo và hủy thread liên tục, tăng hiệu suất ứng dụng đa luồng.
  • D. Thread pool đảm bảo các thread luôn được thực thi tuần tự theo thứ tự tạo ra.

Câu 30: Trong Java, access modifier `protected` có ý nghĩa gì khi áp dụng cho một thành viên (biến hoặc phương thức) của class?

  • A. Thành viên `protected` có thể được truy cập từ class hiện tại, các class con của nó (trong cùng package hoặc khác package), và các class khác trong cùng package.
  • B. Thành viên `protected` chỉ có thể được truy cập từ class hiện tại và các class con trong cùng package.
  • C. Thành viên `protected` có thể được truy cập từ bất kỳ class nào.
  • D. Thành viên `protected` chỉ có thể được truy cập từ class hiện tại.

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 1: Trong lập trình hướng đối tượng Java, đặc điểm 'tính đóng gói' (encapsulation) mang lại lợi ích chính nào sau đây?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 2: Xem xét đoạn mã Java sau: `List names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Charlie"); names.remove(1);`. Sau khi thực hiện đoạn mã này, danh sách 'names' sẽ chứa các phần tử nào theo thứ tự nào?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 3: Phương thức `equals()` và `hashCode()` có vai trò quan trọng trong Java, đặc biệt khi làm việc với các cấu trúc dữ liệu như `HashMap` và `HashSet`. Điều gì sau đây mô tả đúng nhất mối quan hệ giữa hai phương thức này?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 4: Cho đoạn mã sau: `int x = 5; int y = 10; try { System.out.println(y / x); x = 0; System.out.println(y / x); } catch (ArithmeticException e) { System.out.println("Error"); } finally { System.out.println("Finally"); }`. Đoạn mã này sẽ in ra kết quả gì theo thứ tự?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 5: Trong Java, interface và abstract class đều được sử dụng để hiện thực tính trừu tượng. Điểm khác biệt chính giữa interface và abstract class là gì?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 6: Để tạo một luồng (thread) mới trong Java, cách nào sau đây là đúng và hiệu quả nhất?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 7: Giả sử bạn có một đối tượng `student` thuộc class `Student`. Để ghi đối tượng này xuống file và sau đó đọc lại, bạn sẽ sử dụng cơ chế Serialization của Java. Điều kiện tiên quyết để class `Student` có thể được serialized là gì?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 8: Trong Java, garbage collection là một tiến trình tự động quản lý bộ nhớ. Mục đích chính của garbage collection là gì?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 9: Cho đoạn code sau: `String str1 = "Hello"; String str2 = new String("Hello"); System.out.println(str1 == str2); System.out.println(str1.equals(str2));`. Kết quả in ra của đoạn code này là gì?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 10: Trong Java, từ khóa `static` có thể được sử dụng cho biến, phương thức, block và class (nested static class). Ý nghĩa của việc khai báo một biến là `static` là gì?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 11: Phương thức `parseInt()` thuộc class nào trong Java và chức năng của nó là gì?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 12: Xem xét đoạn code sau: `int[] numbers = {1, 2, 3, 4, 5}; for (int i = 0; i < numbers.length; i++) { if (numbers[i] % 2 == 0) { continue; } System.out.print(numbers[i] + " "); }`. Đoạn code này sẽ in ra kết quả gì?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 13: Trong Java, Annotations được sử dụng để cung cấp metadata về code. Mục đích chính của việc sử dụng Annotations là gì?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 14: Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu dữ liệu nguyên thủy (primitive data type) trong Java?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 15: Để đọc dữ liệu từ một file văn bản trong Java, class nào sau đây thường được sử dụng?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 16: Phương thức `substring(int beginIndex, int endIndex)` của class `String` trong Java trả về giá trị gì?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 17: Trong Java, cơ chế Generic được giới thiệu từ phiên bản nào và mục đích chính của Generic là gì?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 18: Để so sánh hai đối tượng theo thứ tự tự nhiên của chúng trong Java, interface nào sau đây cần được implement?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 19: Cho đoạn code sau: `int a = 10; int b = 3; double result = (double) a / b; System.out.println(result);`. Kết quả in ra của đoạn code này là gì?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 20: Trong Java, exception `NullPointerException` thường xảy ra khi nào?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 21: Phương thức `toString()` được định nghĩa trong class `Object` và được override trong nhiều class khác trong Java. Mục đích chính của việc override phương thức `toString()` là gì?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 22: Trong Java, từ khóa `final` có thể được sử dụng cho class, method và variable. Khi một method được khai báo là `final`, điều đó có nghĩa là gì?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 23: Cho đoạn code sau: `Set numbers = new HashSet<>(); numbers.add(10); numbers.add(5); numbers.add(10); System.out.println(numbers.size());`. Kết quả in ra của đoạn code này là gì?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 24: Trong mô hình lập trình hướng đối tượng, 'tính đa hình' (polymorphism) thể hiện rõ nhất qua cơ chế nào trong Java?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 25: Để tạo một hằng số (constant) trong Java, từ khóa nào sau đây được sử dụng?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 26: Trong Java, diamond operator `<>` được giới thiệu từ phiên bản Java 7. Lợi ích chính của việc sử dụng diamond operator là gì?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 27: Interface `Comparator` trong Java được sử dụng để làm gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 28: Cho đoạn code sau: `String message = null; if (message != null && message.length() > 5) { System.out.println(message.toUpperCase()); }`. Điều gì xảy ra khi đoạn code này được thực thi?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 29: Trong Java, thread pool (ví dụ `ExecutorService`) được sử dụng để quản lý các thread. Lợi ích chính của việc sử dụng thread pool so với việc tạo và hủy thread thủ công là gì?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 12

Câu 30: Trong Java, access modifier `protected` có ý nghĩa gì khi áp dụng cho một thành viên (biến hoặc phương thức) của class?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 13

Trắc nghiệm Java - Đề 13 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

Câu 1: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation)?

  • A. Tính đóng gói là cơ chế 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.
  • B. Tính đóng gói là việc gói dữ liệu (thuộc tính) và phương thức (hành vi) liên quan đến dữ liệu đó vào trong một đơn vị duy nhất (đối tượng), đồng thời kiểm soát quyền truy cập từ bên ngoài.
  • C. Tính đóng gói là khả năng một đối tượng có thể có nhiều hình thức khác nhau, cho phép các phương thức có cùng tên nhưng thực hiện khác nhau tùy thuộc vào đối tượng.
  • D. Tính đóng gói là quá trình che giấu các chi tiết triển khai phức tạp và chỉ hiển thị giao diện đơn giản, dễ sử dụng cho người dùng.

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
private String modelName =

  • A. Tính đóng gói (Encapsulation)
  • B. Tính trừu tượng (Abstraction)
  • C. Tính kế thừa (Inheritance)
  • D. Tính đa hình (Polymorphism)

Câu 3: Cho đoạn code Java sau:
```java
interface Drawable {
void draw();
}

class Circle implements Drawable {
public void draw() {
System.out.println(

  • A. Nạp chồng phương thức (Method Overloading)
  • B. Ghi đè phương thức (Method Overriding)
  • C. Đa hình tĩnh (Static Polymorphism)
  • D. Đa hình thời gian chạy (Runtime Polymorphism) thông qua interface

Câu 4: Phương thức `equals()` và `hashCode()` thường được ghi đè (override) cùng nhau trong Java. Mục đích chính của việc này là gì?

  • A. Để tăng hiệu suất so sánh các đối tượng chuỗi.
  • B. Để cho phép so sánh các đối tượng của các lớp khác nhau.
  • C. Để đảm bảo tính nhất quán khi so sánh đối tượng trong các cấu trúc dữ liệu dựa trên bảng băm (hash-based collections) như `HashMap` và `HashSet`.
  • D. Để đơn giản hóa việc gỡ lỗi các chương trình Java phức tạp.

Câu 5: Trong Java, khi nào thì khối `finally` trong cấu trúc `try-catch-finally` được đảm bảo thực thi?

  • A. Chỉ khi một ngoại lệ bị bắt và xử lý trong khối `catch`.
  • B. Luôn luôn, ngay cả khi không có ngoại lệ nào xảy ra trong khối `try`, hoặc khi có ngoại lệ nhưng không có khối `catch` phù hợp.
  • C. Chỉ khi không có ngoại lệ nào xảy ra trong khối `try`.
  • D. Chỉ khi chương trình kết thúc thành công mà không có lỗi.

Câu 6: Cho đoạn mã Java sau:
```java
String str1 = new String(

  • A. true
    true
    true
    true
  • B. false
    false
    true
    true
  • C. false
    true
    true
    true
  • D. false
    true
    false
    true

Câu 7: 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 (primitive data type)?

  • A. int
  • B. boolean
  • C. char
  • D. String

Câu 8: Từ khóa `static` trong Java có ý nghĩa gì khi được sử dụng để khai báo một biến thành viên (member variable) của một lớp?

  • A. Biến `static` chỉ có thể được truy cập bên trong lớp mà nó được khai báo.
  • B. Biến `static` được chia sẻ bởi tất cả các đối tượng (instance) của lớp đó.
  • C. Biến `static` không thể thay đổi giá trị sau khi được khởi tạo lần đầu.
  • D. Biến `static` chỉ được khởi tạo khi một đối tượng của lớp được tạo ra.

Câu 9: Phương thức `main` trong Java có signature là `public static void main(String[] args)`. Giải thích ý nghĩa của từ khóa `static` trong khai báo này.

  • A. Từ khóa `static` cho phép phương thức `main` được kế thừa bởi các lớp con.
  • B. Từ khóa `static` đảm bảo rằng phương thức `main` luôn chạy đầu tiên trong chương trình.
  • C. Từ khóa `static` cho phép phương thức `main` được gọi mà không cần tạo ra một đối tượng (instance) của lớp chứa nó.
  • D. Từ khóa `static` làm cho phương thức `main` trở thành bất biến (immutable).

Câu 10: Trong Java, bộ nhớ heap (heap memory) chủ yếu được sử dụng để lưu trữ loại dữ liệu nào?

  • A. Các đối tượng (objects) và mảng (arrays).
  • B. Các biến nguyên thủy (primitive variables) và tham chiếu đối tượng.
  • C. Mã chương trình đã biên dịch (compiled code).
  • D. Ngăn xếp lời gọi phương thức (method call stack).

Câu 11: Cơ chế Garbage Collection (GC) trong Java hoạt động như thế nào?

  • A. Garbage Collection là một quy trình thủ công do lập trình viên chủ động kích hoạt để giải phóng bộ nhớ.
  • B. Garbage Collection chỉ hoạt động khi bộ nhớ hệ thống gần đầy.
  • C. Garbage Collection giải phóng bộ nhớ ngay khi một đối tượng không còn được sử dụng nữa.
  • D. Garbage Collection là một tiến trình tự động chạy ngầm, xác định và thu hồi bộ nhớ không còn được sử dụng bởi chương trình.

Câu 12: Để tạo một luồng (thread) trong Java, bạn có thể sử dụng hai cách chính. Đó là những cách nào?

  • A. Sử dụng từ khóa `async` và `await`.
  • B. Kế thừa lớp `Process` hoặc implement interface `Callable`.
  • C. Kế thừa lớp `Thread` hoặc implement interface `Runnable`.
  • D. Sử dụng thư viện `java.nio.channels`.

Câu 13: 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 của Java Collections Framework để thực hiện việc này một cách tự nhiên nhất?

  • A. Iterable
  • B. Comparable
  • C. Comparator
  • D. Collection

Câu 14: Khi nào thì bạn nên sử dụng `ArrayList` thay vì `LinkedList` trong Java?

  • A. Khi bạn cần truy cập ngẫu nhiên các phần tử một cách thường xuyên và hiệu quả.
  • B. Khi bạn cần chèn hoặc xóa các phần tử ở đầu hoặc giữa danh sách một cách thường xuyên.
  • C. Khi bạn cần đảm bảo các phần tử trong danh sách được sắp xếp theo thứ tự chèn vào.
  • D. Khi bạn cần một cấu trúc dữ liệu có thể tự động điều chỉnh kích thước dựa trên số lượng phần tử.

Câu 15: Sự khác biệt chính giữa interface và abstract class trong Java là gì?

  • A. Interface có thể có constructor, abstract class thì không.
  • B. Abstract class hỗ trợ đa kế thừa, interface thì không.
  • C. Interface có thể chứa các biến thành viên (member variables), abstract class thì không.
  • D. Một lớp có thể implement nhiều interface, nhưng chỉ có thể kế thừa từ một abstract class.

Câu 16: Đọc đoạn mã Java sau:
```java
int x = 5;
int y = 10;

try {
int result = y / x;
System.out.println(

  • A. Kết quả: 2
    Kết quả sau: Infinity
    Khối finally luôn được thực thi.
    Chương trình tiếp tục thực thi.
  • B. Kết quả: 2
    Lỗi số học: / by zero
    Khối finally luôn được thực thi.
    Chương trình tiếp tục thực thi.
  • C. Kết quả: 2
    Khối finally luôn được thực thi.
    Chương trình tiếp tục thực thi.
  • D. Chương trình sẽ bị crash và không in ra gì.

Câu 17: Trong Java, Annotation (chú thích) được sử dụng để làm gì?

  • A. Để viết comment cho code, giúp người khác dễ đọc hiểu hơn.
  • B. Để thay thế cho việc sử dụng XML configuration trong các ứng dụng Java.
  • C. Để cung cấp metadata (dữ liệu về dữ liệu) cho code, có thể được sử dụng bởi compiler, JVM hoặc các framework/tool khác.
  • D. Để thực hiện profiling và tối ưu hóa hiệu suất của ứng dụng Java.

Câu 18: Java Generics (kiểuGeneric) được giới thiệu để giải quyết vấn đề chính nào?

  • A. Để cải thiện hiệu suất của các Collection trong Java.
  • B. Để tăng cường type safety (an toàn kiểu dữ liệu) và giảm thiểu lỗi ClassCastException tại runtime.
  • C. Để đơn giản hóa việc viết code đa luồng (multithreading).
  • D. Để hỗ trợ lập trình hàm (functional programming) trong Java.

Câu 19: Lambda expression trong Java (từ Java 8 trở đi) là gì và lợi ích chính của việc sử dụng lambda expression là gì?

  • A. Lambda expression là một cách viết ngắn gọn cho anonymous inner class, đặc biệt hữu ích khi làm việc với functional interface và stream API, giúp code trở nên ngắn gọn và dễ đọc hơn.
  • B. Lambda expression là một cơ chế mới để xử lý ngoại lệ trong Java.
  • C. Lambda expression là một cách để tạo ra các biến hằng số (constant variables) trong Java.
  • D. Lambda expression là một công cụ để tăng cường tính bảo mật cho ứng dụng Java.

Câu 20: Java Stream API (từ Java 8 trở đi) cung cấp cách tiếp cận lập trình nào để xử lý collection?

  • A. Lập trình hướng đối tượng (Object-Oriented Programming).
  • B. Lập trình hướng sự kiện (Event-Driven Programming).
  • C. Lập trình mệnh lệnh (Imperative Programming).
  • D. Lập trình hàm (Functional Programming).

Câu 21: Cho đoạn mã Java sau:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println(

  • A. Tổng các số chẵn trong danh sách.
  • B. Tổng các số lẻ trong danh sách.
  • C. Tổng bình phương các số chẵn trong danh sách.
  • D. Tổng bình phương các số lẻ trong danh sách.

Câu 22: Trong mô hình bộ nhớ Java (Java Memory Model - JMM), mục đích chính của từ khóa `volatile` là gì?

  • A. Để đảm bảo tính nguyên tử (atomicity) của các phép toán trên biến.
  • B. Để đảm bảo tính khả kiến (visibility) của biến giữa các luồng (threads).
  • C. Để ngăn chặn việc tối ưu hóa mã (code optimization) của compiler.
  • D. Để tạo ra các biến hằng số (constant variables) trong Java.

Câu 23: Sự khác biệt chính giữa checked exception và unchecked exception (runtime exception) trong Java là gì?

  • A. Checked exception chỉ xảy ra trong quá trình biên dịch, unchecked exception xảy ra khi runtime.
  • B. Unchecked exception có thể được xử lý bằng khối `try-catch`, checked exception thì không.
  • C. Checked exception phải được khai báo hoặc xử lý trong mã nguồn, còn unchecked exception thì không bắt buộc.
  • D. Checked exception thường nghiêm trọng hơn và gây crash chương trình, unchecked exception thì không.

Câu 24: Để đọc dữ liệu từ một file văn bản trong Java, bạn có thể sử dụng lớp nào từ gói `java.io`?

  • A. FileOutputStream
  • B. BufferedReader và FileReader
  • C. PrintWriter
  • D. ObjectInputStream

Câu 25: Trong Java, serialization (tuần tự hóa) là quá trình chuyển đổi đối tượng thành một chuỗi byte. Mục đích chính của serialization là gì?

  • A. Để tăng cường tính bảo mật cho dữ liệu của đối tượng.
  • B. Để giảm kích thước bộ nhớ mà đối tượng chiếm dụng.
  • C. Để tối ưu hóa hiệu suất truy cập vào dữ liệu của đối tượng.
  • D. Để lưu trữ trạng thái của đối tượng xuống file hoặc truyền đối tượng qua mạng.

Câu 26: JDBC (Java Database Connectivity) là gì và nó dùng để làm gì?

  • A. Một framework để xây dựng giao diện người dùng đồ họa (GUI) trong Java.
  • B. Một thư viện để xử lý XML và JSON trong Java.
  • C. Một API chuẩn của Java để kết nối và tương tác với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS).
  • D. Một công cụ để biên dịch và đóng gói ứng dụng Java.

Câu 27: Dependency Injection (DI) là một design pattern phổ biến trong Java. Lợi ích chính của việc sử dụng DI là gì?

  • A. Để tăng hiệu suất của ứng dụng Java.
  • B. Để giảm sự phụ thuộc giữa các thành phần (loose coupling), tăng tính module hóa và khả năng tái sử dụng code, dễ dàng kiểm thử và bảo trì.
  • C. Để tự động tạo ra tài liệu API cho ứng dụng Java.
  • D. Để đơn giản hóa việc quản lý bộ nhớ trong ứng dụng Java.

Câu 28: Trong Java Web application, Servlet container (ví dụ: Tomcat, Jetty) có vai trò gì?

  • A. Để biên dịch mã Java thành bytecode.
  • B. Để quản lý kết nối cơ sở dữ liệu cho ứng dụng web.
  • C. Để định nghĩa giao diện người dùng (UI) cho ứng dụng web.
  • D. Để cung cấp môi trường runtime cho Servlets, quản lý vòng đời Servlet, xử lý request và response từ client.

Câu 29: Spring Framework là gì và nó cung cấp những lợi ích chính nào cho việc phát triển ứng dụng Java?

  • A. Spring Framework là một framework ứng dụng toàn diện và phổ biến cho Java, cung cấp nhiều module như IoC container, AOP, MVC, Data Access, Security, giúp phát triển ứng dụng enterprise một cách nhanh chóng và dễ bảo trì.
  • B. Spring Framework là một công cụ để tạo ra các ứng dụng di động trên nền tảng Android.
  • C. Spring Framework là một IDE (Integrated Development Environment) cho Java.
  • D. Spring Framework là một server web nhẹ cho Java.

Câu 30: Giả sử bạn muốn tạo một ứng dụng web RESTful API bằng Java. Framework nào là lựa chọn phổ biến và mạnh mẽ để xây dựng RESTful web service trong Java?

  • A. Java Swing.
  • B. Spring Boot và Spring MVC.
  • C. JavaFX.
  • D. Java Server Faces (JSF).

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 1: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation)?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
private String modelName = "Xe cơ bản";
protected String engineType = "Động cơ đốt trong";

public String getModelName() {
return modelName;
}
}

public class Car extends Vehicle {
private String carType = "Sedan";

public void displayDetails() {
System.out.println("Loại xe: " + carType + ", Tên mẫu xe: " + getModelName() + ", Loại động cơ: " + engineType);
}
}

public class Main {
public static void main(String[] args) {
Car myCar = new Car();
myCar.displayDetails();
}
}
```
Đoạn mã trên minh họa khái niệm nào trong lập trình hướng đối tượng?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 3: Cho đoạn code Java sau:
```java
interface Drawable {
void draw();
}

class Circle implements Drawable {
public void draw() {
System.out.println("Vẽ hình tròn");
}
}

class Square implements Drawable {
public void draw() {
System.out.println("Vẽ hình vuông");
}
}

public class Main {
public static void main(String[] args) {
Drawable d = new Circle();
d.draw();
d = new Square();
d.draw();
}
}
```
Đoạn mã này thể hiện rõ nhất đặc điểm nào của tính đa hình (polymorphism)?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 4: Phương thức `equals()` và `hashCode()` thường được ghi đè (override) cùng nhau trong Java. Mục đích chính của việc này là gì?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 5: Trong Java, khi nào thì khối `finally` trong cấu trúc `try-catch-finally` được đảm bảo thực thi?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 6: Cho đoạn mã Java sau:
```java
String str1 = new String("Java");
String str2 = "Java";
String str3 = "Java";

System.out.println(str1 == str2);
System.out.println(str2 == str3);
System.out.println(str1.equals(str2));
System.out.println(str2.equals(str3));
```
Đoạn mã trên sẽ in ra kết quả gì?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 7: 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 (primitive data type)?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 8: Từ khóa `static` trong Java có ý nghĩa gì khi được sử dụng để khai báo một biến thành viên (member variable) của một lớp?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 9: Phương thức `main` trong Java có signature là `public static void main(String[] args)`. Giải thích ý nghĩa của từ khóa `static` trong khai báo này.

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 10: Trong Java, bộ nhớ heap (heap memory) chủ yếu được sử dụng để lưu trữ loại dữ liệu nào?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 11: Cơ chế Garbage Collection (GC) trong Java hoạt động như thế nào?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 12: Để tạo một luồng (thread) trong Java, bạn có thể sử dụng hai cách chính. Đó là những cách nào?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 13: 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 của Java Collections Framework để thực hiện việc này một cách tự nhiên nhất?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 14: Khi nào thì bạn nên sử dụng `ArrayList` thay vì `LinkedList` trong Java?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 15: Sự khác biệt chính giữa interface và abstract class trong Java là gì?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 16: Đọc đoạn mã Java sau:
```java
int x = 5;
int y = 10;

try {
int result = y / x;
System.out.println("Kết quả: " + result);
x = 0;
result = y / x; // Có thể gây ra ArithmeticException
System.out.println("Kết quả sau: " + result);
} catch (ArithmeticException e) {
System.out.println("Lỗi số học: " + e.getMessage());
} finally {
System.out.println("Khối finally luôn được thực thi.");
}
System.out.println("Chương trình tiếp tục thực thi.");
```
Đoạn mã trên sẽ in ra kết quả gì?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 17: Trong Java, Annotation (chú thích) được sử dụng để làm gì?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 18: Java Generics (kiểuGeneric) được giới thiệu để giải quyết vấn đề chính nào?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 19: Lambda expression trong Java (từ Java 8 trở đi) là gì và lợi ích chính của việc sử dụng lambda expression là gì?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 20: Java Stream API (từ Java 8 trở đi) cung cấp cách tiếp cận lập trình nào để xử lý collection?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 21: Cho đoạn mã Java sau:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println("Tổng bình phương các số chẵn: " + sum);
```
Đoạn mã trên tính toán giá trị gì?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 22: Trong mô hình bộ nhớ Java (Java Memory Model - JMM), mục đích chính của từ khóa `volatile` là gì?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 23: Sự khác biệt chính giữa checked exception và unchecked exception (runtime exception) trong Java là gì?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 24: Để đọc dữ liệu từ một file văn bản trong Java, bạn có thể sử dụng lớp nào từ gói `java.io`?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 25: Trong Java, serialization (tuần tự hóa) là quá trình chuyển đổi đối tượng thành một chuỗi byte. Mục đích chính của serialization là gì?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 26: JDBC (Java Database Connectivity) là gì và nó dùng để làm gì?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 27: Dependency Injection (DI) là một design pattern phổ biến trong Java. Lợi ích chính của việc sử dụng DI là gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 28: Trong Java Web application, Servlet container (ví dụ: Tomcat, Jetty) có vai trò gì?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 29: Spring Framework là gì và nó cung cấp những lợi ích chính nào cho việc phát triển ứng dụng Java?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 13

Câu 30: Giả sử bạn muốn tạo một ứng dụng web RESTful API bằng Java. Framework nào là lựa chọn phổ biến và mạnh mẽ để xây dựng RESTful web service trong Java?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 14

Trắc nghiệm Java - Đề 14 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

Câu 1: Trong lập trình hướng đối tượng (OOP) với Java, khái niệm nào sau đây thể hiện khả năng một đối tượng có thể thực hiện nhiều hành vi khác nhau tùy thuộc vào ngữ cảnh hoặc kiểu dữ liệu đầu vào?

  • A. Tính đóng gói (Encapsulation)
  • B. Tính kế thừa (Inheritance)
  • C. Tính trừu tượng (Abstraction)
  • D. Tính đa hình (Polymorphism)

Câu 2: Cho đoạn code 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
    Khối finally luôn được thực thi
  • B. Lỗi: Truy cập ngoài phạm vi mảng
    Khối finally luôn được thực thi
  • C. Lỗi: Truy cập ngoài phạm vi mảng
  • D. Chương trình sẽ bị crash và không in ra gì

Câu 3: Phương thức `equals()` và toán tử `==` trong Java khác nhau như thế nào khi so sánh các đối tượng (Objects)?

  • A. `==` so sánh giá trị thuộc tính của đối tượng, `equals()` so sánh tham chiếu.
  • B. Cả hai đều so sánh tham chiếu đối với đối tượng.
  • C. `==` so sánh tham chiếu (địa chỉ bộ nhớ) của đối tượng, `equals()` so sánh giá trị nội dung của đối tượng.
  • D. Cả hai đều so sánh giá trị thuộc tính của đối tượng.

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 một lớp. Điều gì KHÔNG phải là đặc điểm của biến tĩnh (static variable)?

  • A. Được chia sẻ bởi tất cả các đối tượng của lớp.
  • B. Được khởi tạo một lần duy nhất khi lớp được tải.
  • C. Có thể được truy cập trực tiếp thông qua tên lớp.
  • D. Mỗi đối tượng của lớp có một bản sao riêng của biến tĩnh.

Câu 5: Cho đoạn code Java:
```java
String str1 =

  • A. true và true
  • B. false và true
  • C. true và false
  • D. false và false

Câu 6: Trong Java, interface và abstract class có điểm gì chung và khác nhau? Điểm chung nào sau đây là ĐÚNG?

  • A. Cả interface và abstract class đều không thể được khởi tạo trực tiếp.
  • B. Cả interface và abstract class đều có thể chứa các phương thức đã được triển khai (concrete methods).
  • C. Một lớp có thể kế thừa (extends) nhiều abstract class.
  • D. Interface có thể chứa các biến instance (instance variables), abstract class thì không.

Câu 7: Cho đoạn code Java:
```java
public class Calculate {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
```
Đây là ví dụ minh họa cho khái niệm OOP nào?

  • A. Overriding phương thức (Method Overriding)
  • B. Nạp chồng phương thức (Method Overloading)
  • C. Tính kế thừa (Inheritance)
  • D. Tính đóng gói (Encapsulation)

Câu 8: Vòng lặp `for-each` (enhanced for loop) trong Java được sử dụng chủ yếu để làm gì?

  • A. Thực hiện lặp với số lần biết trước dựa trên điều kiện phức tạp.
  • B. Lặp lại một khối lệnh cho đến khi một điều kiện sai.
  • C. Duyệt qua tất cả các phần tử của một mảng hoặc collection.
  • D. Tạo ra một vòng lặp vô hạn.

Câu 9: Trong Java Collections Framework, lớp `ArrayList` và `LinkedList` khác nhau cơ bản ở điểm nào?

  • A. `ArrayList` cho phép lưu trữ các phần tử trùng lặp, `LinkedList` thì không.
  • B. `LinkedList` nhanh hơn `ArrayList` trong việc truy cập phần tử theo chỉ số.
  • C. `ArrayList` sử dụng bộ nhớ hiệu quả hơn `LinkedList`.
  • D. `ArrayList` truy cập phần tử theo chỉ số nhanh hơn, `LinkedList` thêm/xóa phần tử ở đầu/giữa danh sách nhanh hơn.

Câu 10: Cho đoạn code Java:
```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 đóng gói (Encapsulation)
  • B. Tính kế thừa (Inheritance)
  • C. Phạm vi biến (Variable Scope)
  • D. Thời gian sống của đối tượng (Object Lifetime)

Câu 11: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Ý nghĩa của `final` khi sử dụng với một lớp là gì?

  • A. Lớp đó không thể tạo ra đối tượng mới.
  • B. Lớp đó không thể bị kế thừa bởi lớp khác.
  • C. Các phương thức trong lớp đó không thể bị ghi đè (override).
  • D. Các biến instance trong lớp đó phải là hằng số.

Câu 12: Cho đoạn code Java:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(n -> {
if (n % 2 == 0) {
System.out.println(n);
}
});
```
Đoạn code trên sử dụng tính năng nào của Java?

  • A. Inner Class (Lớp bên trong)
  • B. Anonymous Class (Lớp vô danh)
  • C. Generics (Kiểu tổng quát)
  • D. Lambda Expression (Biểu thức Lambda)

Câu 13: Trong Java, cơ chế Garbage Collection (Thu gom rác) hoạt động như thế nào?

  • A. Tự động giải phóng bộ nhớ không còn được tham chiếu bởi bất kỳ đối tượng nào.
  • B. Yêu cầu lập trình viên phải gọi phương thức `delete()` để giải phóng bộ nhớ thủ công.
  • C. Chỉ giải phóng bộ nhớ khi chương trình kết thúc.
  • D. Hoạt động dựa trên đếm số lượng tham chiếu đến đối tượng.

Câu 14: Để tạo một luồng (Thread) trong Java, bạn có thể sử dụng hai cách chính. Cách nào sau đây KHÔNG phải là một cách tạo luồng?

  • A. Implement interface `Runnable`.
  • B. Extend class `Thread`.
  • C. Sử dụng Executor Framework.
  • D. Tạo instance của class `Timer`.

Câu 15: Cho đoạn code Java:
```java
public class StringImmutable {
public static void main(String[] args) {
String s =

  • A.
  • B.
  • C. Lỗi biên dịch, vì không thể gọi phương thức `concat()` trực tiếp trên một String literal.
  • D. Chuỗi rỗng

Câu 16: 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. Giảm kích thước file .class.
  • C. Tổ chức các lớp và interface liên quan thành nhóm, tránh xung đột tên và quản lý truy cập.
  • D. Tạo ra các file thực thi (.exe) cho chương trình Java.

Câu 17: Cho đoạn code Java:
```java
Set names = new HashSet<>();
names.add(

  • A. 3, vì đã thêm vào 3 phần tử.
  • B. 2, vì `HashSet` không cho phép phần tử trùng lặp.
  • C. 1, vì chỉ có phần tử đầu tiên được giữ lại.
  • D. Lỗi runtime, vì cố gắng thêm phần tử trùng lặp vào Set.

Câu 18: Trong Java, Serialization (Tuần tự hóa) là quá trình chuyển đổi đối tượng thành một chuỗi byte. Mục đích chính của Serialization là gì?

  • A. Tăng tốc độ truy cập thuộc tính của đối tượng.
  • B. Giảm dung lượng bộ nhớ mà đối tượng chiếm giữ.
  • C. Bảo vệ đối tượng khỏi bị truy cập trái phép.
  • D. Lưu trữ trạng thái của đối tượng để có thể khôi phục lại sau này (ví dụ: lưu xuống file hoặc truyền qua mạng).

Câu 19: Cho đoạn code Java:
```java
public class Parent {
public void display() {
System.out.println(

  • A.
  • B.
  • C.
  • D. Lỗi biên dịch, vì không thể gán đối tượng Child cho biến Parent.

Câu 20: Trong Java, Annotations (Chú thích) được sử dụng để làm gì?

  • A. Cung cấp metadata (siêu dữ liệu) về code, có thể được xử lý bởi compiler hoặc runtime environment.
  • B. Tăng hiệu suất thực thi của chương trình.
  • C. Thay thế cho comment (chú thích) thông thường trong code.
  • D. Bắt buộc lập trình viên phải tuân theo một khuôn mẫu code nhất định.

Câu 21: Cho đoạn code Java:
```java
int x = 5;
int y = 10;
int result = x++ + --y + x + y--;
System.out.println(result);
```
Giá trị của `result` sau khi thực thi đoạn code trên là bao nhiêu?

  • A. 27
  • B. 28
  • C. 29
  • D. 30

Câu 22: Trong Java, JDBC (Java Database Connectivity) được sử dụng để làm gì?

  • A. Tạo giao diện người dùng đồ họa (GUI) cho ứng dụng Java.
  • B. Kết nối và tương tác với các hệ quản trị cơ sở dữ liệu.
  • C. Phát triển ứng dụng web phía server bằng Java.
  • D. Quản lý bộ nhớ và garbage collection trong Java.

Câu 23: Kiểu dữ liệu nào trong Java KHÔNG phải là kiểu dữ liệu nguyên thủy (primitive data type)?

  • A. int
  • B. char
  • C. double
  • D. String

Câu 24: Cho đoạn code Java:
```java
public class ExceptionTest {
public static void main(String[] args) {
try {
int result = 10 / 0;
} catch (Exception e) {
// Xử lý ngoại lệ chung chung
} catch (ArithmeticException e) {
System.out.println(

  • A. Đoạn code chạy bình thường và không in ra gì.
  • B. Thứ tự các khối `catch` không đúng. Khối `catch (Exception e)` nên đặt sau khối `catch (ArithmeticException e)`.
  • C. Lỗi biên dịch, vì không thể có nhiều khối `catch` cho cùng một loại ngoại lệ.
  • D. Lỗi runtime, vì chia cho 0 sẽ không bị bắt bởi `catch (Exception e)`.

Câu 25: Trong Java, SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ "L" trong SOLID đại diện cho nguyên tắc nào?

  • A. Single Responsibility Principle (Nguyên tắc đơn nhiệm)
  • B. Open/Closed Principle (Nguyên tắc đóng mở)
  • C. Liskov Substitution Principle (Nguyên tắc thay thế Liskov)
  • D. Interface Segregation Principle (Nguyên tắc phân tách interface)

Câu 26: Cho đoạn code Java:
```java
Integer num1 = 100;
Integer num2 = 100;
Integer num3 = 200;
Integer num4 = 200;
System.out.println(num1 == num2);
System.out.println(num3 == num4);
```
Kết quả in ra của đoạn code trên là gì và tại sao?

  • A. true
    true
  • B. true
    false
  • C. false
    true
  • D. false
    false

Câu 27: Trong Java, Dependency Injection (DI - Tiêm phụ thuộc) là một pattern thiết kế. Mục đích chính của DI là gì?

  • A. Tăng hiệu suất khởi tạo đối tượng.
  • B. Giảm dung lượng bộ nhớ sử dụng bởi ứng dụng.
  • C. Giảm sự phụ thuộc giữa các component, tăng tính module hóa và khả năng test.
  • D. Tự động tạo code boilerplate (code mẫu) cho ứng dụng.

Câu 28: Cho đoạn code Java sử dụng Stream API:
```java
List words = Arrays.asList(

  • A. 1
  • B. 3
  • C. 4
  • D. 0

Câu 29: Trong Java, Access Modifiers (Bộ sửa đổi truy cập) được sử dụng để kiểm soát mức độ truy cập của các thành viên lớp (biến, phương thức, lớp). Modifier nào có phạm vi truy cập rộng nhất?

  • A. private
  • B. protected
  • C. default (package-private)
  • D. public

Câu 30: Cho đoạn code Java:
```java
public class GenericExample {
private T data;
public GenericExample(T data) {
this.data = data;
}
public T getData() {
return data;
}
public static void main(String[] args) {
GenericExample strExample = new GenericExample<>(

  • A. Generics (Kiểu tổng quát)
  • B. Inner Class (Lớp bên trong)
  • C. Abstract Class (Lớp trừu tượng)
  • D. Interface (Giao diện)

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 1: Trong lập trình hướng đối tượng (OOP) với Java, khái niệm nào sau đây thể hiện khả năng một đối tượng có thể thực hiện nhiều hành vi khác nhau tùy thuộc vào ngữ cảnh hoặc kiểu dữ liệu đầu vào?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 2: Cho đoạn code 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("Lỗi: Truy cập ngoài phạm vi mảng");
} finally {
System.out.println("Khối finally luôn được thực thi");
}
}
}
```
Đoạn code trên sẽ in ra màn hình kết quả gì?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 3: Phương thức `equals()` và toán tử `==` trong Java khác nhau như thế nào khi so sánh các đối tượng (Objects)?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

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 một lớp. Điều gì KHÔNG phải là đặc điểm của biến tĩnh (static variable)?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 5: Cho đoạn code Java:
```java
String str1 = "Hello";
String str2 = new String("Hello");
boolean result1 = (str1 == str2);
boolean result2 = str1.equals(str2);
```
Giá trị của `result1` và `result2` lần lượt là gì?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 6: Trong Java, interface và abstract class có điểm gì chung và khác nhau? Điểm chung nào sau đây là ĐÚNG?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 7: Cho đoạn code Java:
```java
public class Calculate {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
```
Đây là ví dụ minh họa cho khái niệm OOP nào?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 8: Vòng lặp `for-each` (enhanced for loop) trong Java được sử dụng chủ yếu để làm gì?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 9: Trong Java Collections Framework, lớp `ArrayList` và `LinkedList` khác nhau cơ bản ở điểm nào?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 10: Cho đoạn code Java:
```java
public class ScopeExample {
int x = 10; // Biến instance
public void methodA() {
int y = 20; // Biến local
System.out.println("x = " + x + ", y = " + y);
}
public void methodB() {
System.out.println("x = " + x); // Có thể truy cập x
// System.out.println("y = " + y); // Lỗi: y không tồn tại ở đây
}
}
```
Đoạn code trên minh họa khái niệm gì trong Java?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 11: Trong Java, từ khóa `final` có thể được sử dụng với biến, phương thức và lớp. Ý nghĩa của `final` khi sử dụng với một lớp là gì?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 12: Cho đoạn code Java:
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(n -> {
if (n % 2 == 0) {
System.out.println(n);
}
});
```
Đoạn code trên sử dụng tính năng nào của Java?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 13: Trong Java, cơ chế Garbage Collection (Thu gom rác) hoạt động như thế nào?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 14: Để tạo một luồng (Thread) trong Java, bạn có thể sử dụng hai cách chính. Cách nào sau đây KHÔNG phải là một cách tạo luồng?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 15: Cho đoạn code Java:
```java
public class StringImmutable {
public static void main(String[] args) {
String s = "Hello";
s.concat(" World");
System.out.println(s);
}
}
```
Kết quả in ra của đoạn code trên là gì và tại sao?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 16: Trong Java, package (gói) được sử dụng để làm gì?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 17: Cho đoạn code Java:
```java
Set names = new HashSet<>();
names.add("Alice");
names.add("Bob");
names.add("Alice");
System.out.println(names.size());
```
Kết quả in ra của đoạn code trên là gì và tại sao?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 18: Trong Java, Serialization (Tuần tự hóa) là quá trình chuyển đổi đối tượng thành một chuỗi byte. Mục đích chính của Serialization là gì?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 19: Cho đoạn code Java:
```java
public class Parent {
public void display() {
System.out.println("Parent class");
}
}
public class Child extends Parent {
public void display() {
System.out.println("Child class");
}
}
public class Main {
public static void main(String[] args) {
Parent obj = new Child();
obj.display();
}
}
```
Kết quả in ra của đoạn code trên là gì và đây là ví dụ của khái niệm OOP nào?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 20: Trong Java, Annotations (Chú thích) được sử dụng để làm gì?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 21: Cho đoạn code Java:
```java
int x = 5;
int y = 10;
int result = x++ + --y + x + y--;
System.out.println(result);
```
Giá trị của `result` sau khi thực thi đoạn code trên là bao nhiêu?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 22: Trong Java, JDBC (Java Database Connectivity) được sử dụng để làm gì?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 23: Kiểu dữ liệu nào trong Java KHÔNG phải là kiểu dữ liệu nguyên thủy (primitive data type)?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 24: Cho đoạn code Java:
```java
public class ExceptionTest {
public static void main(String[] args) {
try {
int result = 10 / 0;
} catch (Exception e) {
// Xử lý ngoại lệ chung chung
} catch (ArithmeticException e) {
System.out.println("ArithmeticException đã xảy ra");
}
}
}
```
Đoạn code trên có vấn đề gì và tại sao?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 25: Trong Java, SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ 'L' trong SOLID đại diện cho nguyên tắc nào?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 26: Cho đoạn code Java:
```java
Integer num1 = 100;
Integer num2 = 100;
Integer num3 = 200;
Integer num4 = 200;
System.out.println(num1 == num2);
System.out.println(num3 == num4);
```
Kết quả in ra của đoạn code trên là gì và tại sao?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 27: Trong Java, Dependency Injection (DI - Tiêm phụ thuộc) là một pattern thiết kế. Mục đích chính của DI là gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 28: Cho đoạn code Java sử dụng Stream API:
```java
List words = Arrays.asList("apple", "banana", "apricot", "avocado");
long count = words.stream()
.filter(w -> w.startsWith("ap"))
.count();
System.out.println(count);
```
Kết quả in ra của đoạn code trên là gì?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 29: Trong Java, Access Modifiers (Bộ sửa đổi truy cập) được sử dụng để kiểm soát mức độ truy cập của các thành viên lớp (biến, phương thức, lớp). Modifier nào có phạm vi truy cập rộng nhất?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 14

Câu 30: Cho đoạn code Java:
```java
public class GenericExample {
private T data;
public GenericExample(T data) {
this.data = data;
}
public T getData() {
return data;
}
public static void main(String[] args) {
GenericExample strExample = new GenericExample<>("Hello");
GenericExample intExample = new GenericExample<>(123);
System.out.println(strExample.getData() + " " + intExample.getData());
}
}
```
Đoạn code trên minh họa khái niệm nào của Java?

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Trắc nghiệm Java

Trắc nghiệm Java - Đề 15

Trắc nghiệm Java - Đề 15 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

Câu 1: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation)?

  • A. Tính chất cho phép một lớp kế thừa các thuộc tính và phương thức từ lớp khác.
  • B. Cơ chế kết hợp dữ liệu và phương thức thành một đơn vị duy nhất (lớp) và bảo vệ dữ liệu khỏi sự truy cập trực tiếp từ bên ngoài.
  • C. Khả năng một đối tượng thuộc lớp con có thể thay thế một đối tượng thuộc lớp cha.
  • D. Phương pháp tạo ra nhiều đối tượng từ một lớp duy nhất.

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName;
public Vehicle(String model) {
this.modelName = model;
}
}

public class Car extends Vehicle {
public Car(String model) {
super(model);
}
public void displayModel() {
System.out.println(

  • A. Đóng gói (Encapsulation)
  • B. Đa hình (Polymorphism)
  • C. Kế thừa (Inheritance)
  • D. Trừu tượng hóa (Abstraction)

Câu 3: Cho đoạn code Java sau:
```java
int[] numbers = {5, 2, 8, 1, 9};
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) { if (numbers[i] > max) {
max = numbers[i];
}
}
System.out.println(max);
```
Đoạn code này thực hiện công việc gì?

  • A. Tính tổng các phần tử trong mảng.
  • B. Tìm giá trị lớn nhất trong mảng.
  • C. Sắp xếp mảng theo thứ tự tăng dần.
  • D. Đếm số lượng phần tử trong mảng.

Câu 4: Phương thức `equals()` và toán tử `==` trong Java khác nhau như thế nào khi so sánh các đối tượng (Objects)?

  • A. `==` so sánh giá trị của đối tượng, `equals()` so sánh tham chiếu.
  • B. Cả hai đều so sánh giá trị của đối tượng.
  • C. `==` so sánh tham chiếu đối tượng (vị trí bộ nhớ), `equals()` so sánh nội dung (trạng thái) của đối tượng.
  • D. Cả hai đều so sánh tham chiếu đối tượng.

Câu 5: Trong Java, exception (ngoại lệ) được sử dụng để làm gì?

  • A. Xử lý các lỗi và tình huống bất thường xảy ra trong quá trình thực thi chương trình.
  • B. Tối ưu hóa hiệu suất của chương trình.
  • C. Khai báo biến và phương thức trong lớp.
  • D. Định nghĩa cấu trúc dữ liệu phức tạp.

Câu 6: Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu dữ liệu nguyên thủy (primitive data type) trong Java?

  • A. int
  • B. boolean
  • C. char
  • D. String

Câu 7: Để tạo một hằng số (constant) trong Java, ta sử dụng từ khóa nào?

  • A. static
  • B. final
  • C. const
  • D. immutable

Câu 8: Vòng lặp `for-each` (enhanced for loop) trong Java thường được sử dụng để làm gì?

  • A. Thực hiện lặp vô hạn.
  • 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 điều kiện phức tạp.
  • C. Duyệt qua các phần tử của một mảng hoặc collection.
  • D. Thực hiện lặp cho đến khi một điều kiện sai.

Câu 9: Interface (giao diện) trong Java có đặc điểm nào sau đây?

  • A. Chứa các thuộc tính và phương thức đã được cài đặt hoàn chỉnh.
  • B. Có thể khởi tạo đối tượng trực tiếp từ interface.
  • C. Hỗ trợ đa kế thừa.
  • D. Chỉ chứa các phương thức trừu tượng (abstract methods) và hằng số (constants).

Câu 10: Từ khóa `static` trong Java được sử dụng để làm gì?

  • A. Khai báo một lớp con.
  • B. Tạo ra các thành viên (biến, phương thức) thuộc về lớp, không phải đối tượng.
  • C. Định nghĩa một phương thức trừu tượng.
  • D. Ngăn chặn việc kế thừa lớp.

Câu 11: Đâu là mệnh đề điều kiện (conditional statement) trong Java được sử dụng để lựa chọn thực hiện một trong nhiều khối mã khác nhau dựa trên giá trị của một biểu thức?

  • A. if
  • B. if-else
  • C. switch-case
  • D. for

Câu 12: Cho đoạn code Java sau:
```java
String str1 =

  • A. true
    true
  • B. false
    true
  • C. true
    false
  • D. false
    false

Câu 13: Phương thức `substring(int beginIndex, int endIndex)` của lớp `String` trong Java dùng để làm gì?

  • A. Trả về một chuỗi con của chuỗi gốc, bắt đầu từ `beginIndex` và kết thúc trước `endIndex`.
  • B. So sánh hai chuỗi con.
  • C. Thay thế một chuỗi con bằng chuỗi khác.
  • D. Đảo ngược chuỗi gốc.

Câu 14: Trong Java, garbage collection (thu gom rác) là gì?

  • A. Quá trình biên dịch mã nguồn Java thành bytecode.
  • B. Quá trình gỡ lỗi (debug) chương trình Java.
  • C. Quá trình quản lý phiên bản của các lớp Java.
  • D. Quá trình tự động giải phóng bộ nhớ không còn được sử dụng bởi chương trình Java.

Câu 15: Để đọc dữ liệu nhập từ bàn phím trong Java, ta thường sử dụng lớp nào?

  • A. BufferedReader
  • B. InputStreamReader
  • C. Scanner
  • D. FileWriter

Câu 16: Xem xét đoạn code Java sau:
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
```
Đoạn code trên minh họa khái niệm OOP nào?

  • A. Kế thừa (Inheritance)
  • B. Đa hình (Polymorphism)
  • C. Đóng gói (Encapsulation)
  • D. Trừu tượng hóa (Abstraction)

Câu 17: Mệnh đề lặp (loop statement) nào trong Java đảm bảo khối mã bên trong vòng lặp được thực thi ít nhất một lần?

  • A. for
  • B. while
  • C. for-each
  • D. do-while

Câu 18: Trong Java, từ khóa `this` dùng để làm gì?

  • A. Tham chiếu đến đối tượng hiện tại trong một phương thức hoặc constructor.
  • B. Khai báo một biến cục bộ.
  • C. Gọi phương thức của lớp cha.
  • D. Tạo một đối tượng mới.

Câu 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 để định dạng chuỗi.
  • B. Lớp Integer, dùng để chuyển đổi chuỗi thành số nguyên.
  • C. Lớp System, dùng để in ra số nguyên.
  • D. Lớp Math, dùng để tính toán số nguyên.

Câu 20: Cho đoạn code Java sau:
```java
int x = 10;
int y = 5;
try {
int result = x / y;
System.out.println(

  • A. Error: Division by zero
    Finally block
  • B. Result: 2
    Error: Division by zero
    Finally block
  • C. Result: 2
    Finally block
  • D. Chương trình sẽ bị lỗi và không in ra gì.

Câu 21: Trong Java, từ khóa `super` được sử dụng để làm gì trong một lớp con?

  • A. Khai báo một lớp cha.
  • B. Gọi constructor hoặc phương thức của lớp cha.
  • C. Tham chiếu đến đối tượng hiện tại của lớp con.
  • D. Ngăn chặn việc ghi đè phương thức.

Câu 22: Phương thức `length()` của lớp `String` trả về giá trị kiểu dữ liệu nào?

  • A. int
  • B. double
  • C. boolean
  • D. String

Câu 23: Trong Java, abstract class (lớp trừu tượng) có đặc điểm nào sau đây?

  • A. Bắt buộc phải chứa tất cả các phương thức trừu tượng.
  • B. Có thể khởi tạo đối tượng trực tiếp từ abstract class.
  • C. Không thể khởi tạo đối tượng trực tiếp, có thể chứa cả phương thức trừu tượng và phương thức cụ thể.
  • D. Chỉ được phép chứa các biến static.

Câu 24: Để so sánh hai chuỗi (String) trong Java, cách nào sau đây là đúng và nên dùng để so sánh nội dung chuỗi?

  • A. Sử dụng toán tử `==`
  • B. Sử dụng phương thức `compareTo()`
  • C. Sử dụng phương thức `toString()`
  • D. Sử dụng phương thức `equals()` hoặc `equalsIgnoreCase()`

Câu 25: Cho đoạn code Java sau:
```java
int[] arr = new int[5];
System.out.println(arr[5]);
```
Đoạn code trên sẽ gây ra lỗi gì khi chạy?

  • A. Lỗi biên dịch (Compile-time error)
  • B. Lỗi thời gian chạy (Runtime error) - ArrayIndexOutOfBoundsException
  • C. Không có lỗi, chương trình chạy bình thường
  • D. Lỗi logic (Logical error) - kết quả sai

Câu 26: 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. Bảo mật mã nguồn chương trình.
  • C. Tổ chức và quản lý các lớp, interface, tránh xung đột tên.
  • D. Tạo giao diện người dùng đồ họa.

Câu 27: Phương thức `toString()` thường được ghi đè (override) trong các lớp Java để làm gì?

  • A. Trả về một chuỗi đại diện cho đối tượng, thường dùng để in thông tin đối tượng.
  • B. So sánh hai đối tượng.
  • C. Chuyển đổi đối tượng sang kiểu dữ liệu khác.
  • D. Sao chép đối tượng.

Câu 28: Trong Java, access modifier (modifier truy cập) `protected` có ý nghĩa gì?

  • A. Chỉ cho phép truy cập từ bên trong lớp hiện tại.
  • B. Cho phép truy cập từ lớp hiện tại, lớp con (cùng hoặc khác package), và các lớp trong cùng package.
  • C. Cho phép truy cập từ bất kỳ đâu.
  • D. Chỉ cho phép truy cập từ các lớp con trực tiếp.

Câu 29: Cho đoạn code Java sau:
```java
List names = new ArrayList<>();
names.add(

  • A. Lỗi biên dịch (Compile-time error)
  • B. Không có lỗi, chương trình chạy bình thường
  • C. Lỗi thời gian chạy (Runtime error) - IndexOutOfBoundsException
  • D. Lỗi logic (Logical error) - kết quả sai

Câu 30: Trong Java, thread (luồng) được sử dụng để làm gì?

  • A. Quản lý bộ nhớ.
  • B. Biên dịch mã nguồn.
  • C. Xử lý giao diện người dùng.
  • D. Thực hiện đa nhiệm (multitasking), cho phép chương trình thực hiện nhiều công việc đồng thời.

1 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 1: Trong lập trình hướng đối tượng Java, phát biểu nào sau đây mô tả đúng nhất về tính đóng gói (encapsulation)?

2 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 2: Xem xét đoạn mã Java sau:
```java
public class Vehicle {
protected String modelName;
public Vehicle(String model) {
this.modelName = model;
}
}

public class Car extends Vehicle {
public Car(String model) {
super(model);
}
public void displayModel() {
System.out.println("Model: " + modelName);
}
}

public class Main {
public static void main(String[] args) {
Car myCar = new Car("Sedan");
myCar.displayModel();
}
}
```
Đoạn mã trên thể hiện khái niệm OOP nào?

3 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 3: Cho đoạn code Java sau:
```java
int[] numbers = {5, 2, 8, 1, 9};
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) { if (numbers[i] > max) {
max = numbers[i];
}
}
System.out.println(max);
```
Đoạn code này thực hiện công việc gì?

4 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 4: Phương thức `equals()` và toán tử `==` trong Java khác nhau như thế nào khi so sánh các đối tượng (Objects)?

5 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 5: Trong Java, exception (ngoại lệ) được sử dụng để làm gì?

6 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 6: Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu dữ liệu nguyên thủy (primitive data type) trong Java?

7 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 7: Để tạo một hằng số (constant) trong Java, ta sử dụng từ khóa nào?

8 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 8: Vòng lặp `for-each` (enhanced for loop) trong Java thường được sử dụng để làm gì?

9 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 9: Interface (giao diện) trong Java có đặc điểm nào sau đây?

10 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 10: Từ khóa `static` trong Java được sử dụng để làm gì?

11 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 11: Đâu là mệnh đề điều kiện (conditional statement) trong Java được sử dụng để lựa chọn thực hiện một trong nhiều khối mã khác nhau dựa trên giá trị của một biểu thức?

12 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 12: Cho đoạn code Java sau:
```java
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
```
Đoạn code trên in ra kết quả gì?

13 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 13: Phương thức `substring(int beginIndex, int endIndex)` của lớp `String` trong Java dùng để làm gì?

14 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 14: Trong Java, garbage collection (thu gom rác) là gì?

15 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 15: Để đọc dữ liệu nhập từ bàn phím trong Java, ta thường sử dụng lớp nào?

16 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 16: Xem xét đoạn code Java sau:
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
```
Đoạn code trên minh họa khái niệm OOP nào?

17 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 17: Mệnh đề lặp (loop statement) nào trong Java đảm bảo khối mã bên trong vòng lặp được thực thi ít nhất một lần?

18 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 18: Trong Java, từ khóa `this` dùng để làm gì?

19 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 19: Phương thức `parseInt()` thuộc lớp nào trong Java và dùng để làm gì?

20 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 20: Cho đoạn code Java sau:
```java
int x = 10;
int y = 5;
try {
int result = x / y;
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Error: Division by zero");
} finally {
System.out.println("Finally block");
}
```
Đoạn code trên in ra kết quả gì?

21 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 21: Trong Java, từ khóa `super` được sử dụng để làm gì trong một lớp con?

22 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 22: Phương thức `length()` của lớp `String` trả về giá trị kiểu dữ liệu nào?

23 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 23: Trong Java, abstract class (lớp trừu tượng) có đặc điểm nào sau đây?

24 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 24: Để so sánh hai chuỗi (String) trong Java, cách nào sau đây là đúng và nên dùng để so sánh nội dung chuỗi?

25 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 25: Cho đoạn code Java sau:
```java
int[] arr = new int[5];
System.out.println(arr[5]);
```
Đoạn code trên sẽ gây ra lỗi gì khi chạy?

26 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 26: Trong Java, package (gói) được sử dụng để làm gì?

27 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 27: Phương thức `toString()` thường được ghi đè (override) trong các lớp Java để làm gì?

28 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 28: Trong Java, access modifier (modifier truy cập) `protected` có ý nghĩa gì?

29 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 29: Cho đoạn code Java sau:
```java
List names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
System.out.println(names.get(3));
```
Đoạn code trên sẽ gây ra lỗi gì khi chạy?

30 / 30

Category: Trắc nghiệm Java

Tags: Bộ đề 15

Câu 30: Trong Java, thread (luồng) được sử dụng để làm gì?

Viết một bình luận