wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Ôn Java

Total questions: 59

Worksheet time: 30mins

Name
Class
Date
1.

Trong lập trình hướng đối tượng, đâu là mục đích chính của tính đóng gói (encapsulation)?

a)

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)

Che giấu trạng thái bên trong của đối tượng và chỉ cho phép tương tác thông qua các phương thức công khai.

c)

Cho phép một phương thức có nhiều hành vi khác nhau tùy thuộc vào đối tượng gọi nó.

d)

Tạo ra các đối tượng từ một bản thiết kế (class).

2.

Giá trị mặc định của một biến thành viên (instance variable) có kiểu boolean và một biến tham chiếu đối tượng (ví dụ: String) khi không được khởi tạo là gì?

a)

true và ""

b)

false và null

c)

0 và "null"

d)

false và một chuỗi rỗng

3.

Từ khóa nào được sử dụng để ngăn một lớp bị kế thừa và một phương thức bị ghi đè (override)?

a)

static

b)

private

c)

abstract

d)

final

4.

Cho đoạn mã sau, kết quả xuất ra màn hình là gì?

a)

2.5

b)

2.0

c)

Lỗi biên dịch

d)

2

5.

Đâu là phát biểu đúng về sự khác biệt giữa == và phương thức .equals() khi so sánh hai đối tượng String trong Java?

a)

== so sánh giá trị nội dung của chuỗi, còn .equals() so sánh địa chỉ vùng nhớ.

b)

Cả hai đều dùng để so sánh giá trị nội dung của chuỗi.

c)

== so sánh địa chỉ vùng nhớ (tham chiếu), còn .equals() so sánh giá trị nội dung của chuỗi.

d)

Không có sự khác biệt nào, chúng có thể được sử dụng thay thế cho nhau.

6.

Khi một phương thức được khai báo là static, điều này có nghĩa là gì?

a)

Phương thức chỉ có thể được gọi bởi các đối tượng của lớp đó.

b)

Phương thức thuộc về lớp chứ không thuộc về một đối tượng cụ thể nào, và có thể được gọi mà không cần tạo đối tượng.

c)

Phương thức không thể bị ghi đè trong các lớp con.

d)

Phương thức sẽ tự động được thực thi khi chương trình bắt đầu.

7.

Phát biểu nào sau đây là đúng về lớp trừu tượng (abstract class) trong Java?

a)

Một lớp trừu tượng không thể có phương thức khởi tạo (constructor).

b)

Một lớp trừu tượng có thể chứa cả phương thức trừu tượng và phương thức không trừu tượng.

c)

Một lớp trừu tượng không thể kế thừa từ một lớp trừu tượng khác.

d)

Phải triển khai tất cả các phương thức của lớp cha nếu lớp cha cũng là lớp trừu tượng.

8.

Câu 8: Cho đoạn mã sau, giá trị của biến result là bao nhiêu?

a)

15

b)

10

c)

5

d)

0

9.

Câu 9: Để gọi phương thức khởi tạo của lớp cha từ phương thức khởi tạo của lớp con, ta sử dụng từ khóa nào?

a)

this()

b)

super()

c)

parent()

d)

new()

10.

Câu 10: Trong Java, khối lệnh finally trong cấu trúc try-catch-finally được dùng để làm gì?

a)

Chỉ thực thi khi không có ngoại lệ nào xảy ra.

b)

Chỉ thực thi khi có một ngoại lệ được bắt (catch).

c)

Chứa mã lệnh luôn được thực thi dù có ngoại lệ xảy ra hay không.

d)

Để khai báo các ngoại lệ mà phương thức có thể ném ra.

11.

Câu 11: Access modifier nào cho phép các thành viên của một lớp được truy cập bởi các lớp khác trong cùng package và các lớp con của nó (kể cả khác package)?

a)

public

b)

private

c)

protected

d)

Mặc định (không ghi gì)

12.

Câu 12: Cho đoạn mã sau, kết quả là gì?

a)

true

b)

false

c)

Lỗi biên dịch

d)

Không có gì được in ra

13.

Câu 13: Phương thức nạp chồng (overloading) trong Java có nghĩa là gì?

a)

Các phương thức trong cùng một lớp có cùng tên nhưng khác nhau về danh sách tham số (số lượng hoặc kiểu dữ liệu).

b)

Một phương thức ở lớp con có cùng tên và cùng danh sách tham số với phương thức ở lớp cha.

c)

Một phương thức có thể trả về nhiều kiểu dữ liệu khác nhau.

d)

Một phương thức có thể gọi chính nó.

14.

Câu 14: Đâu là cách khai báo một mảng hai chiều chứa các số nguyên một cách hợp lệ?

a)

int a = new int[3, 3];

b)

int[][] a = new int[3][3];

c)

int a[3][3] = new int[][];

d)

int a[,] = new int[3, 3];

15.

Điều gì sẽ xảy ra khi biên dịch và chạy đoạn mã sau?

a)

In ra giá trị 20.

b)

Lỗi khi chạy chương trình (RuntimeException).

c)

Lỗi biên dịch vì không thể truy cập biến không-static từ một phương thức static.

d)

Lỗi biên dịch vì biến value là private.

16.

Kết quả của biểu thức sau là gì: "Java".charAt(2)?

a)

'a'

b)

'v'

c)

"v"

d)

Lỗi IndexOutOfBoundsException

17.

Một interface trong Java có thể chứa những gì?

a)

Chỉ các hằng số (static final fields) và các phương thức trừu tượng.

b)

Các phương thức trừu tượng, phương thức mặc định (default), phương thức tĩnh (static) và hằng số.

c)

Chỉ các phương thức có thân hàm đầy đủ.

d)

Các biến thành viên (instance variables) và phương thức khởi tạo.

18.

Cho đoạn mã sau, kết quả in ra màn hình là gì?

a)

10

b)

6

c)

3

d)

4

19.

Kiểu dữ liệu nào sau đây không phải là kiểu dữ liệu nguyên thủy (primitive type) trong Java?

a)

int

b)

double

c)

String

d)

char

20.

Lớp java.util.Scanner chủ yếu được sử dụng để làm gì?

a)

Thao tác với các tập tin và thư mục.

b)

Phân tích cú pháp chuỗi văn bản, đặc biệt là đọc dữ liệu đầu vào từ người dùng.

c)

Thực hiện các phép toán học phức tạp.

d)

Quản lý các luồng (threads) trong ứng dụng.

21.

Phát biểu nào sau đây mô tả đúng nhất sự khác biệt chính giữa một lớp trừu tượng (abstract class) và một giao diện (interface) trong Java (trước Java 8)?

a)

Interface có thể chứa các phương thức có thân hàm, còn abstract class thì không.

b)

Một lớp có thể kế thừa nhiều abstract class nhưng chỉ có thể triển khai một interface.

c)

Abstract class có thể có các biến thành viên (instance variables) và phương thức khởi tạo, trong khi interface không thể.

d)

Các phương thức trong interface mặc định là private, còn trong abstract class là public.

22.

Câu 22: Lớp Wrapper (ví dụ: Integer, Double) trong Java được sử dụng chủ yếu để làm gì?

a)

Tăng cường bảo mật cho các kiểu dữ liệu nguyên thủy.

b)

Cho phép các kiểu dữ liệu nguyên thủy (primitive types) được xử lý như các đối tượng.

c)

Giảm bộ nhớ sử dụng so với các kiểu dữ liệu nguyên thủy.

d)

Thay thế hoàn toàn các kiểu dữ liệu nguyên thủy trong mọi trường hợp.

23.

Câu 23: Sự khác biệt giữa từ khóa throw và throws trong xử lý ngoại lệ là gì?

a)

throw được dùng để bắt một ngoại lệ, throws được dùng để ném một ngoại lệ.

b)

throw được dùng trong khai báo phương thức, throws được dùng để ném một đối tượng ngoại lệ cụ thể.

c)

throw được dùng để ném một đối tượng ngoại lệ, throws được dùng để khai báo các ngoại lệ mà một phương thức có thể ném ra.

d)

Cả hai từ khóa đều có chức năng tương tự và có thể dùng thay thế cho nhau.

24.

Câu 24: Cho đoạn mã sau, kết quả in ra màn hình sẽ là gì?

a)

12345

b)

24

c)

135

d)

124

25.

Câu 25: Từ khóa this() bên trong một phương thức khởi tạo được dùng để làm gì?

a)

Gọi một phương thức của đối tượng hiện tại.

b)

Tham chiếu đến đối tượng hiện tại.

c)

Gọi một phương thức khởi tạo khác trong cùng một lớp.

d)

Gọi phương thức khởi tạo của lớp cha.

26.

Câu 26: Phát biểu nào sau đây đúng về sự khác biệt giữa String và StringBuilder?

a)

String là mutable (có thể thay đổi), còn StringBuilder là immutable (bất biến).

b)

StringBuilder hiệu quả hơn cho các thao tác nối chuỗi lặp đi lặp lại vì nó là mutable.

c)

Cả hai đều là immutable và không có sự khác biệt về hiệu năng.

d)

StringBuilder được lưu trong String Pool, còn String thì không.

27.

Một ngoại lệ thuộc loại "checked exception" là gì?

a)

Một ngoại lệ mà trình biên dịch bắt buộc phải được xử lý (bằng try-catch) hoặc được khai báo (bằng throws).

b)

Một ngoại lệ chỉ xảy ra lúc chạy chương trình và không thể dự đoán trước, ví dụ NullPointerException.

c)

Một lỗi nghiêm trọng của máy ảo Java (JVM) mà chương trình không thể phục hồi.

d)

Một ngoại lệ không cần phải được xử lý.

28.

Trong đoạn mã sau, giá trị của biến x sau khi thực thi là bao nhiêu?

a)

8

b)

9

c)

12

d)

13

29.

Hiện tượng autoboxing trong Java là gì?

a)

Quá trình tự động chuyển đổi một đối tượng wrapper thành kiểu nguyên thủy tương ứng.

b)

Quá trình tự động chuyển đổi một kiểu nguyên thủy thành đối tượng wrapper tương ứng.

c)

Quá trình đóng gói tự động các lớp vào một file JAR.

d)

Quá trình tự động giải phóng bộ nhớ không sử dụng.

30.

Đâu là mối quan hệ đúng giữa JVM, JRE và JDK?

a)

JDK chứa JVM, JVM chứa JRE.

b)

JRE chứa JDK, JDK chứa JVM.

c)

JDK chứa JRE, và JRE chứa JVM.

d)

JVM chứa JRE, JRE chứa JDK.

31.

Điều gì sẽ được in ra khi chạy đoạn mã sau?

a)

Không in ra gì cả.

b)

Count is: 5

c)

Lỗi biên dịch.

d)

Vòng lặp vô hạn.

32.

Mục đích của từ khóa transient khi được sử dụng với một biến thành viên là gì?

a)

Biến sẽ không được ghi đè trong lớp con.

b)

Biến sẽ không được tuần tự hóa (serialized) khi đối tượng được ghi ra file hoặc truyền qua mạng.

c)

Biến chỉ có thể được truy cập bởi một luồng tại một thời điểm.

d)

Giá trị của biến là hằng số và không thể thay đổi.

33.

Cho đoạn mã sau, kết quả sẽ là gì?

a)

true

b)

false

c)

Lỗi biên dịch

d)

Phụ thuộc vào JVM

34.

Kết quả của đoạn mã sau là gì?

a)

[10, 20]

b)

[20, 30]

c)

[10, 30]

d)

Lỗi khi chạy chương trình.

35.

Khi một phương thức static của lớp cha được khai báo lại trong lớp con với cùng signature, hiện tượng này được gọi là gì?

a)

Ghi đè phương thức (Method Overriding)

b)

Nạp chồng phương thức (Method Overloading)

c)

Che giấu phương thức (Method Hiding)

d)

Đa hình (Polymorphism)

36.

Đoạn mã sau sẽ gây ra loại ngoại lệ nào khi thực thi?

a)

NullPointerException

b)

ClassCastException

c)

NumberFormatException

d)

Không có ngoại lệ nào

37.

Kiểu liệt kê enum trong Java thực chất là một loại...?

a)

Lớp (class) đặc biệt.

b)

Giao diện (interface) đặc biệt.

c)

Mảng (array) các hằng số.

d)

Chú thích (annotation).

38.

Cho đoạn mã sau, kết quả in ra là gì?

a)

D

b)

A

c)

AD

d)

DA

39.

Trong cấu trúc Map (ví dụ: HashMap), mỗi phần tử bao gồm những gì?

a)

Một giá trị duy nhất (a single value).

b)

Một cặp khóa-khóa (a key-key pair).

c)

Một cặp khóa-giá trị (a key-value pair).

d)

Một chỉ số và một giá trị (an index-value pair).

40.

Kết quả của đoạn mã sau là gì?

a)

30

b)

20

c)

25

d)

Lỗi biên dịch

41.

Access modifier mặc định (package-private) có nghĩa là gì?

a)

Thành viên chỉ có thể được truy cập bên trong lớp của nó.

b)

Thành viên có thể được truy cập bởi bất kỳ lớp nào trong cùng một gói (package).

c)

Thành viên có thể được truy cập bởi tất cả các lớp.

d)

Thành viên có thể được truy cập bởi các lớp con, dù ở khác gói.

42.

Phương thức hashCode() trong lớp Object được dùng để làm gì?

a)

So sánh sự bằng nhau về nội dung của hai đối tượng.

b)

Trả về một giá trị hash code (thường là địa chỉ bộ nhớ) cho đối tượng, hữu ích cho các cấu trúc dữ liệu như HashMap.

c)

Tạo một bản sao của đối tượng.

d)

Chuyển đối tượng thành một chuỗi đại diện.

43.

Điều gì xảy ra khi biên dịch và chạy đoạn mã sau?

a)

In ra "Bike is running".

b)

In ra "Vehicle is running".

c)

Lỗi biên dịch.

d)

Lỗi khi chạy chương trình.

44.

Phát biểu nào sau đây là đúng về đa kế thừa (multiple inheritance) trong Java?

a)

Java hỗ trợ đa kế thừa các lớp (class).

b)

Java không hỗ trợ đa kế thừa các lớp nhưng hỗ trợ đa kế thừa các interface.

c)

Java hỗ trợ đa kế thừa cả lớp và interface.

d)

Java không hỗ trợ bất kỳ hình thức đa kế thừa nào.

45.

Cho đoạn mã sau, kết quả sẽ là gì?

a)

Weekend

b)

Invalid day

c)

Weekday

d)

Không in ra gì cả

46.

Từ khóa volatile được sử dụng để làm gì?

a)

Ngăn không cho một biến được tuần tự hóa.

b)

Đảm bảo rằng các thay đổi đối với một biến được thực hiện bởi một luồng sẽ ngay lập tức hiển thị cho các luồng khác.

c)

Khai báo một biến là hằng số.

d)

Cho phép một phương thức được gọi mà không cần tạo đối tượng.

47.

Ép kiểu từ một kiểu dữ liệu lớn hơn sang kiểu nhỏ hơn (ví dụ: double sang int) được gọi là gì?

a)

Widening Casting (ép kiểu mở rộng)

b)

Narrowing Casting (ép kiểu thu hẹp)

c)

Autoboxing

d)

Unboxing

48.

Trong Java, một Annotation (chú thích), ví dụ @Override, có chức năng chính là gì?

a)

Thêm bình luận vào mã nguồn để dễ đọc hơn.

b)

Cung cấp siêu dữ liệu (metadata) cho trình biên dịch hoặc JVM để xử lý mã nguồn một cách đặc biệt.

c)

Thay thế hoàn toàn việc viết tài liệu cho mã nguồn.

d)

Tự động sửa lỗi trong mã nguồn.

49.

Lớp nào sau đây trong Java Collections Framework không cho phép các phần tử trùng lặp?

a)

ArrayList

b)

LinkedList

c)

HashSet

d)

Vector

50.

Điều gì sẽ xảy ra khi một phương thức đệ quy không có điều kiện dừng (base case)?

a)

Chương trình sẽ báo lỗi biên dịch.

b)

Chương trình sẽ chạy vô hạn mà không có lỗi.

c)

Chương trình sẽ ném ra một ngoại lệ StackOverflowError.

d)

Phương thức sẽ tự động dừng sau 1000 lần gọi.

51.

Cho đoạn mã sau, giá trị của s là gì?

a)

gram

b)

gramm

c)

ogra

d)

rogr

52.

Câu 54: Từ khóa super có thể được sử dụng để làm gì?

a)

Gọi phương thức khởi tạo của lớp cha và truy cập các thành viên của lớp cha.

b)

Chỉ để gọi phương thức khởi tạo của lớp cha.

c)

Chỉ để truy cập các thành viên bị ghi đè của lớp cha.

d)

Tham chiếu đến đối tượng của lớp hiện tại.

53.

Câu 55: Sự khác biệt giữa LinkedList và ArrayList về mặt hiệu năng là gì?

a)

ArrayList nhanh hơn cho việc thêm/xóa phần tử ở giữa danh sách.

b)

LinkedList nhanh hơn cho việc truy cập ngẫu nhiên một phần tử qua chỉ số.

c)

LinkedList nhanh hơn cho việc thêm/xóa phần tử ở đầu/cuối danh sách, trong khi ArrayList nhanh hơn cho truy cập ngẫu nhiên.

d)

Không có sự khác biệt đáng kể về hiệu năng giữa chúng.

54.

Câu 56: Kết quả của đoạn mã sau là gì?

a)

M S1 S2

b)

S1 S2 M

c)

S1 M S2

d)

Lỗi biên dịch

55.

Câu 57: Trong Java, các đối tượng được truyền vào phương thức theo cơ chế nào?

a)

Truyền bằng giá trị (Pass by value).

b)

Truyền bằng tham chiếu (Pass by reference).

c)

Truyền bằng con trỏ (Pass by pointer).

d)

Phụ thuộc vào kiểu của đối tượng.

56.

Câu 58: Đâu là một ví dụ về Unchecked Exception (ngoại lệ không được kiểm tra)?

a)

IOException

b)

SQLException

c)

FileNotFoundException

d)

NullPointerException

57.

Câu 59: Cho đoạn mã sau, kết quả in ra màn hình là gì?

a)

53 is the result

b)

8 is the result

c)

Lỗi biên dịch

d)

is the result 8

58.

Câu 60: Phát biểu nào sau đây là ĐÚNG về phương thức main?

a)

Một chương trình Java có thể có nhiều phương thức main.

b)

Tên của file .java phải trùng với tên của lớp chứa phương thức main.

c)

Phương thức main là điểm bắt đầu thực thi của một chương trình Java.

d)

Phương thức main không thể được nạp chồng (overload).

59.

Cho đoạn mã sau, kết quả in ra là gì?

a)

1

b)

2

c)

Lỗi biên dịch vì có hai câu lệnh return.

d)

Không có gì được in ra.