Chuyển đến nội dung

Trắc nghiệm Lập trình Java online có đáp án

Trắc Nghiệm Kỹ Thuật & Công Nghệ

Trắc nghiệm Lập trình Java online có đáp án

Ngày cập nhật: Tháng 2 8, 2026

Lưu ý và Miễn trừ trách nhiệm:Toàn bộ nội dung câu hỏi, đáp án và thông tin được cung cấp trên website này được xây dựng nhằm mục đích tham khảo, hỗ trợ ôn tập và củng cố kiến thức. Chúng tôi không cam kết về tính chính xác tuyệt đối, tính cập nhật hay độ tin cậy hoàn toàn của các dữ liệu này. Nội dung tại đây KHÔNG PHẢI LÀ ĐỀ THI CHÍNH THỨC của bất kỳ tổ chức giáo dục, trường đại học hay cơ quan cấp chứng chỉ nào. Người sử dụng tự chịu trách nhiệm khi sử dụng các thông tin này vào mục đích học tập, nghiên cứu hoặc áp dụng vào thực tiễn. Chúng tôi không chịu trách nhiệm pháp lý đối với bất kỳ sai sót, thiệt hại hoặc hậu quả nào phát sinh từ việc sử dụng thông tin trên website này.

Hãy cùng khám phá bộ Trắc nghiệm Lập trình Java online có đáp án. Nội dung câu hỏi được xây dựng nhằm hỗ trợ bạn ôn tập và ghi nhớ hiệu quả. Chỉ cần bấm vào phần trắc nghiệm bạn quan tâm để làm bài ngay. Hy vọng bạn có trải nghiệm học tập hiệu quả và thú vị

★★★★★
★★★★★
4.5/5 (211 đánh giá)

1. Trong Java, thành phần nào chịu trách nhiệm thực thi mã bytecode và cung cấp môi trường chạy độc lập với nền tảng?

A. JRE (Java Runtime Environment)
B. JDK (Java Development Kit)
C. JVM (Java Virtual Machine)
D. JIT (Just-In-Time Compiler)

2. Từ khóa nào được sử dụng để ngăn chặn một lớp không được phép bị kế thừa bởi bất kỳ lớp nào khác?

A. static
B. abstract
C. private
D. final

3. Đặc điểm nào dưới đây mô tả đúng nhất về tính chất của đối tượng String trong Java?

A. Có thể thay đổi nội dung (Mutable)
B. Luôn được lưu trữ trong Stack
C. Không thể thay đổi nội dung (Immutable)
D. Tự động giải phóng ngay khi ra khỏi scope

4. Phương thức nào trong lớp Object được sử dụng để tạo ra một bản sao của đối tượng hiện tại?

A. copy()
B. clone()
C. duplicate()
D. replicate()

5. Trong cấu trúc try-catch-finally, khối lệnh nào luôn được thực thi bất kể có ngoại lệ xảy ra hay không?

A. Khối catch
B. Khối try
C. Khối throw
D. Khối finally

6. Giao diện (Interface) nào dưới đây chỉ chứa duy nhất một phương thức trừu tượng và thường được dùng với biểu thức Lambda?

A. Marker Interface
B. Functional Interface
C. Normal Interface
D. Abstract Interface

7. Lớp nào trong Java cung cấp khả năng lưu trữ các phần tử dưới dạng cặp khóa-giá trị (key-value) và cho phép khóa null?

A. Hashtable
B. TreeMap
C. HashMap
D. HashSet

8. Phạm vi truy cập (Access Modifier) nào cho phép một thành phần chỉ được truy cập trong cùng một lớp?

A. protected
B. public
C. default
D. private

9. Trong Java, kiểu dữ liệu nguyên thủy ‘int’ có kích thước bao nhiêu bit?

A. bit
B. bit
C. bit
D. bit

10. Phương thức nào dùng để bắt đầu thực thi một luồng (Thread) mới trong Java?

A. run()
B. execute()
C. start()
D. init()

11. Khi so sánh hai đối tượng String dựa trên nội dung thay vì tham chiếu địa chỉ, chúng ta nên sử dụng phương thức nào?

A. ==
B. compareTo()
C. equals()
D. hashCode()

12. Từ khóa nào được sử dụng để triệu hồi hàm khởi tạo của lớp cha trực tiếp?

A. this
B. super
C. parent
D. extends

13. Cấu trúc dữ liệu nào trong Java không cho phép chứa các phần tử trùng lặp?

A. ArrayList
B. LinkedList
C. Set
D. Vector

14. Đâu là ngoại lệ thuộc loại Unchecked Exception (Ngoại lệ thời gian chạy)?

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

15. Lợi ích chính của việc sử dụng ‘Generics’ trong Java là gì?

A. Tăng tốc độ thực thi của chương trình
B. Giảm dung lượng file class sau khi biên dịch
C. Đảm bảo 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 giữa các lớp

16. Trong Java 8, phương thức nào của Stream API được dùng để biến đổi mỗi phần tử của stream sang một dạng khác?

A. filter()
B. collect()
C. map()
D. forEach()

17. Từ khóa ‘static’ khi áp dụng cho một phương thức có ý nghĩa gì?

A. Phương thức đó không thể bị thay đổi nội dung
B. Phương thức thuộc về lớp thay vì thuộc về một đối tượng cụ thể
C. Phương thức chỉ có thể được gọi từ lớp con
D. Phương thức sẽ được chạy trong một luồng riêng biệt

18. Đâu là cách chính xác để khai báo một mảng số nguyên gồm 10 phần tử trong Java?

A. int arr = new int[10];
B. int arr[] = new int(10);
C. int[] arr = new int[10];
D. Array arr = new Array(10);

19. Giá trị mặc định của một biến instance kiểu ‘boolean’ trong Java là gì?

A. null
B. true
C. false
D. 0

20. Kỹ thuật nào cho phép một phương thức có cùng tên nhưng khác tham số trong cùng một lớp?

A. Method Overriding
B. Method Overloading
C. Encapsulation
D. Abstraction

21. Từ khóa ‘transient’ được sử dụng với biến thành viên nhằm mục đích gì?

A. Đánh dấu biến đó là hằng số
B. Ngăn chặn biến đó bị lưu lại trong quá trình Serialization
C. Đảm bảo biến đó chỉ được dùng bởi một luồng duy nhất
D. Tăng tốc độ truy xuất của biến trong bộ nhớ đệm

22. Trong Java, một lớp có thể kế thừa tối đa bao nhiêu lớp cha trực tiếp?

A. 2
B. Không giới hạn
C. 1
D. 0

23. Lớp nào là lớp cha cao nhất của tất cả các lớp trong ngôn ngữ lập trình Java?

A. System
B. Class
C. Object
D. Main

24. Cơ chế ‘Autoboxing’ trong Java thực hiện công việc gì?

A. Tự động chuyển đổi kiểu dữ liệu nguyên thủy sang đối tượng Wrapper tương ứng
B. Tự động giải phóng bộ nhớ của các đối tượng không dùng đến
C. Tự động nén kích thước của file bytecode
D. Tự động tạo ra các hàm Getter và Setter cho lớp

25. Thành phần ‘Garbage Collector’ (GC) trong Java hoạt động trong vùng nhớ nào?

A. Stack
B. Method Area
C. Heap
D. PC Register

26. Để đọc dữ liệu từ một file văn bản theo từng dòng một cách hiệu quả nhất, lớp nào thường được sử dụng?

A. FileInputStream
B. FileReader
C. BufferedReader
D. Scanner

27. Trong Java 8, lớp ‘Optional’ được đưa vào nhằm mục đích chính là gì?

A. Thay thế hoàn toàn cho kiểu dữ liệu String
B. Giảm thiểu nguy cơ xảy ra lỗi NullPointerException
C. Tăng hiệu suất cho các vòng lặp for-each
D. Hỗ trợ đa luồng cho các biến local

28. Từ khóa nào được dùng để ném một ngoại lệ cụ thể trong thân của một phương thức?

A. throws
B. throw
C. catch
D. finally

29. Giao diện ‘Comparable’ yêu cầu lớp thực thi nó phải triển khai phương thức nào?

A. compare()
B. equals()
C. compareTo()
D. sort()

30. Sự khác biệt chính giữa ‘ArrayList’ và ‘Vector’ trong Java là gì?

A. ArrayList có kích thước cố định còn Vector thì không
B. Vector đồng bộ hóa (thread-safe) còn ArrayList thì không
C. ArrayList nhanh hơn Vector vì Vector sử dụng đệ quy
D. Chỉ Vector mới cho phép lưu trữ giá trị null

31. Trong Java, tại sao ngôn ngữ này được coi là độc lập với nền tảng (Platform Independent)?

A. Vì mã nguồn Java có thể chạy trực tiếp trên hệ điều hành mà không cần trình biên dịch.
B. Vì Java sử dụng trình biên dịch để chuyển mã nguồn trực tiếp thành mã máy của từng hệ điều hành.
C. Vì mã bytecode được tạo ra có thể thực thi trên bất kỳ thiết bị nào có cài đặt Java Virtual Machine (JVM).
D. Vì Java không yêu cầu bất kỳ môi trường thực thi nào để chạy ứng dụng.

32. Mục đích chính của ‘String Constant Pool’ trong Java là gì?

A. Để tăng tốc độ tính toán các biểu thức số học trong chuỗi.
B. Để tối ưu hóa việc sử dụng bộ nhớ bằng cách chia sẻ các đối tượng chuỗi có nội dung giống nhau.
C. Để cho phép thay đổi nội dung của đối tượng String sau khi đã khởi tạo.
D. Để lưu trữ tất cả các biến nguyên thủy trong bộ nhớ Heap.

33. Điều gì xảy ra khi một lớp được khai báo với từ khóa ‘final’?

A. Lớp đó không thể chứa bất kỳ phương thức nào có tham số.
B. Lớp đó không thể được khởi tạo đối tượng bằng từ khóa ‘new’.
C. Lớp đó không thể bị kế thừa bởi bất kỳ lớp nào khác.
D. Lớp đó bắt buộc phải chứa ít nhất một phương thức trừu tượng.

34. Từ phiên bản Java 8, ‘interface’ có đặc điểm mới nào sau đây?

A. Có thể chứa các phương thức ‘default’ có phần thân xử lý cụ thể.
B. Có thể khai báo các biến instance có phạm vi truy cập là ‘private’.
C. Có thể kế thừa trực tiếp từ một lớp trừu tượng (Abstract Class).
D. Cho phép đa kế thừa giữa các lớp thông qua từ khóa ‘extends’.

35. Cơ chế Garbage Collection (GC) trong Java có vai trò gì?

A. Tự động phát hiện và sửa lỗi cú pháp trong mã nguồn khi ứng dụng đang chạy.
B. Tự động giải phóng bộ nhớ của các đối tượng không còn được tham chiếu trong chương trình.
C. Quản lý việc phân bổ bộ nhớ Stack cho các biến cục bộ của phương thức.
D. Xóa bỏ các tệp tin tạm thời được tạo ra trong quá trình cài đặt JDK.

36. Đặc điểm nào phân biệt ‘Checked Exception’ với ‘Unchecked Exception’?

A. Checked Exception chỉ xảy ra khi chạy chương trình, còn Unchecked xảy ra khi biên dịch.
B. Checked Exception bắt buộc phải được xử lý hoặc khai báo trong khối ‘throws’ tại thời điểm biên dịch.
C. Unchecked Exception luôn kế thừa từ lớp ‘Throwable’ nhưng không kế thừa từ ‘Exception’.
D. Checked Exception bao gồm các lỗi logic như chia cho số không hoặc truy cập chỉ số mảng sai.

37. Sự khác biệt chính giữa ‘HashMap’ và ‘Hashtable’ là gì?

A. Hashtable cho phép nhiều khóa ‘null’, trong khi HashMap thì không.
B. HashMap không được đồng bộ hóa (non-synchronized) và cho phép một khóa ‘null’.
C. Hashtable nhanh hơn HashMap do không cần quản lý các luồng (thread).
D. HashMap là một lớp cũ (legacy class) và không thuộc Java Collections Framework.

38. Tại sao ‘ArrayList’ thường được ưu tiên hơn ‘LinkedList’ khi cần truy cập phần tử theo chỉ số?

A. Vì ArrayList sử dụng cấu trúc mảng động, cho phép truy cập ngẫu nhiên với độ phức tạp O(1).
B. Vì ArrayList tự động sắp xếp các phần tử mỗi khi có một phần tử mới được thêm vào.
C. Vì LinkedList tiêu tốn ít bộ nhớ hơn ArrayList do không cần lưu trữ các con trỏ liên kết.
D. Vì ArrayList không giới hạn số lượng phần tử tối đa có thể lưu trữ.

39. Từ khóa ‘static’ trong Java có ý nghĩa gì đối với một biến?

A. Biến đó sẽ được khởi tạo lại mỗi khi một đối tượng mới của lớp được tạo ra.
B. Biến đó thuộc về lớp chứ không thuộc về bất kỳ đối tượng cụ thể nào và được chia sẻ chung.
C. Biến đó chỉ có thể được truy cập bên trong các phương thức không có từ khóa ‘static’.
D. Giá trị của biến đó không thể thay đổi sau khi đã gán lần đầu tiên.

40. Trong kế thừa, từ khóa ‘super’ được sử dụng để làm gì?

A. Để gọi hàm khởi tạo, phương thức hoặc truy cập thuộc tính của lớp cha trực tiếp.
B. Để ngăn chặn các lớp khác kế thừa từ lớp hiện tại.
C. Để tạo ra một bản sao hoàn chỉnh của đối tượng hiện tại trong bộ nhớ.
D. Để tham chiếu đến đối tượng của chính lớp hiện tại đang thực thi.

41. Các đối tượng được khởi tạo bằng từ khóa ‘new’ trong Java được lưu trữ ở đâu?

A. Trong bộ nhớ Stack để đảm bảo tốc độ truy xuất nhanh nhất.
B. Trong bộ nhớ Heap, nơi quản lý các đối tượng có vòng đời lâu dài.
C. Trong thanh ghi của CPU để thực hiện các phép toán logic.
D. Trong tệp tin cấu hình hệ thống nằm trên ổ đĩa cứng.

42. Khái niệm ‘Method Overriding’ (Ghi đè phương thức) xảy ra khi nào?

A. Khi hai phương thức trong cùng một lớp có cùng tên nhưng khác danh sách tham số.
B. Khi 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. Khi một phương thức được khai báo với từ khóa ‘private’ để bảo mật thông tin.
D. Khi chúng ta sử dụng nhiều hàm khởi tạo (constructor) khác nhau trong cùng một lớp.

43. Tính đóng gói (Encapsulation) trong Java được thực hiện như thế nào?

A. Bằng cách sử dụng các lớp trừu tượng và giao diện để che giấu mã nguồn.
B. Bằng cách khai báo các biến là ‘private’ và cung cấp các phương thức ‘public’ getter/setter để truy cập.
C. Bằng cách gộp tất cả các lớp có liên quan vào trong cùng một tệp tin .java duy nhất.
D. Bằng cách sử dụng từ khóa ‘static’ cho toàn bộ các phương thức trong chương trình.

44. Trong Stream API, phương thức ‘filter()’ nhận tham số là kiểu dữ liệu nào?

A. Một đối tượng thuộc lớp ‘Consumer’ để in các phần tử ra màn hình.
B. Một đối tượng thuộc giao diện chức năng ‘Predicate’ để kiểm tra điều kiện logic.
C. Một giá trị số nguyên để xác định số lượng phần tử cần lấy.
D. Một đối tượng ‘Comparator’ để sắp xếp các phần tử theo thứ tự tăng dần.

45. Từ khóa ‘volatile’ có tác dụng gì trong lập trình đa luồng (Multithreading)?

A. Để ngăn chặn hai luồng truy cập vào cùng một phương thức tại một thời điểm.
B. Để đảm bảo giá trị của biến luôn được đọc từ và ghi vào bộ nhớ chính, tránh lỗi cache của luồng.
C. Để tự động tạm dừng một luồng khi nó chiếm dụng quá nhiều tài nguyên CPU.
D. Để biến một đối tượng bình thường thành một đối tượng không thể thay đổi (immutable).

46. Tại sao Java không hỗ trợ đa kế thừa (Multiple Inheritance) giữa các lớp?

A. Vì nó làm tăng đáng kể dung lượng của tệp tin thực thi sau khi biên dịch.
B. Để tránh sự phức tạp và xung đột tên phương thức (vấn đề Diamond Problem).
C. Vì Java ưu tiên sử dụng bộ nhớ Stack hơn là bộ nhớ Heap.
D. Vì tất cả các lớp trong Java mặc định đã kế thừa từ lớp ‘Interface’.

47. Sự khác biệt cơ bản giữa giao diện ‘Comparable’ và ‘Comparator’ là gì?

A. Comparable dùng để sắp xếp mặc định bên trong lớp, Comparator dùng để sắp xếp tùy chỉnh bên ngoài lớp.
B. Comparator bắt buộc phải triển khai phương thức ‘compareTo’, còn Comparable dùng ‘compare’.
C. Comparable cho phép sắp xếp theo nhiều tiêu chí khác nhau đồng thời, còn Comparator thì không.
D. Chỉ có Comparator mới có thể sử dụng được với các lớp trong Java Collections Framework.

48. Cú pháp ‘try-with-resources’ trong Java giúp giải quyết vấn đề gì?

A. Tự động bắt tất cả các ngoại lệ mà không cần khai báo khối ‘catch’.
B. Tự động đóng các tài nguyên (như file, kết nối DB) sau khi sử dụng để tránh rò rỉ bộ nhớ.
C. Tăng tốc độ thực thi của các vòng lặp xử lý dữ liệu lớn.
D. Cho phép chương trình tiếp tục chạy ngay cả khi gặp lỗi hệ thống nghiêm trọng.

49. Một ‘static nested class’ (lớp lồng tĩnh) có đặc điểm nào?

A. Nó yêu cầu một thực thể của lớp bao bọc bên ngoài để có thể khởi tạo.
B. Nó có thể được khởi tạo độc lập mà không cần đối tượng của lớp bao bọc bên ngoài.
C. Nó có quyền truy cập trực tiếp vào tất cả các biến instance không phải static của lớp bên ngoài.
D. Nó không thể chứa bất kỳ phương thức tĩnh nào bên trong chính nó.

50. Biểu thức Lambda trong Java chủ yếu được sử dụng để làm gì?

A. Để thay thế hoàn toàn việc sử dụng các vòng lặp ‘for’ và ‘while’.
B. Để cung cấp cách triển khai ngắn gọn cho các Functional Interface (giao diện chức năng).
C. Để khai báo các biến hằng số có giá trị không thay đổi trong toàn bộ chương trình.
D. Để quản lý việc phân luồng và đồng bộ dữ liệu giữa các máy chủ từ xa.

51. Quá trình ‘Serialization’ trong Java là gì?

A. Là quá trình nén mã nguồn Java thành tệp tin .jar để triển khai.
B. Là quá trình chuyển đổi trạng thái của một đối tượng thành một chuỗi các byte.
C. Là quá trình mã hóa dữ liệu để đảm bảo an toàn thông tin khi lưu trữ.
D. Là việc gán một mã định danh duy nhất cho mỗi lớp trong dự án.

52. Từ khóa ‘transient’ được sử dụng trong trường hợp nào?

A. Để đánh dấu một biến sẽ không được lưu lại (bỏ qua) trong quá trình Serialization.
B. Để cho phép một biến có thể được truy cập từ bất kỳ luồng nào mà không cần đồng bộ.
C. Để khai báo một phương thức chỉ có thể được gọi một lần duy nhất.
D. Để chỉ định rằng một biến phải được lưu trữ trong bộ nhớ đệm (cache) của CPU.

53. Trong vòng đời của một luồng (Thread), phương thức ‘wait()’ sẽ đưa luồng vào trạng thái nào?

A. Trạng thái ‘Running’ để tiếp tục thực hiện công việc ngay lập tức.
B. Trạng thái ‘Waiting’ cho đến khi có một luồng khác đánh thức.
C. Trạng thái ‘Dead’ để kết thúc hoàn toàn vòng đời của luồng đó.
D. Trạng thái ‘Runnable’ để chờ hệ điều hành cấp phát CPU.

54. Ưu điểm của ‘StringBuilder’ so với ‘StringBuffer’ là gì?

A. StringBuilder an toàn hơn trong môi trường đa luồng.
B. StringBuilder có tốc độ thực thi nhanh hơn do không tốn chi phí đồng bộ hóa.
C. StringBuilder hỗ trợ lưu trữ các ký tự Unicode tốt hơn StringBuffer.
D. StringBuilder tự động giải phóng bộ nhớ ngay sau khi sử dụng xong.

55. Reflection API trong Java cho phép lập trình viên làm gì?

A. Tự động tối ưu hóa mã nguồn để ứng dụng chạy nhanh hơn 50%.
B. Kiểm tra và thao tác các lớp, phương thức, thuộc tính tại thời điểm thực thi (runtime).
C. Thay đổi kiểu dữ liệu của một biến từ String sang Integer một cách trực tiếp.
D. Kết nối trực tiếp ứng dụng Java với các bảng tính Excel mà không cần thư viện.

56. Mục đích của các ‘Wrapper classes’ (như Integer, Double) là gì?

A. Để cung cấp các phương thức toán học phức tạp cho các số nguyên.
B. Để cho phép sử dụng các kiểu dữ liệu nguyên thủy như những đối tượng trong Collections.
C. Để bảo mật dữ liệu bằng cách ngăn chặn việc truy cập trực tiếp vào biến.
D. Để giảm dung lượng bộ nhớ mà các biến nguyên thủy chiếm dụng.

57. Ký tự đại diện ‘? extends T’ trong Generics có nghĩa là gì?

A. Chấp nhận bất kỳ kiểu dữ liệu nào là lớp cha của T.
B. Chấp nhận kiểu T hoặc bất kỳ kiểu dữ liệu nào là lớp con của T.
C. Chỉ chấp nhận duy nhất kiểu dữ liệu T mà không bao gồm lớp con.
D. Loại trừ kiểu T và chỉ chấp nhận các giao diện mà T triển khai.

58. Tệp tin ‘module-info.java’ trong Java 9 trở về sau dùng để làm gì?

A. Để chứa các thông tin cấu hình kết nối cơ sở dữ liệu của ứng dụng.
B. Để định nghĩa tên module, các gói được xuất ra và các phụ thuộc của module đó.
C. Để thay thế cho phương thức ‘main’ truyền thống trong việc khởi chạy chương trình.
D. Để lưu trữ danh sách các hằng số dùng chung cho toàn bộ module.

59. Phương thức ‘finalize()’ được gọi khi nào?

A. Ngay khi từ khóa ‘new’ được thực hiện để khởi tạo đối tượng.
B. Trước khi trình thu gom rác (Garbage Collector) tiêu hủy một đối tượng.
C. Khi một phương thức kết thúc và trả về giá trị cho hàm gọi nó.
D. Khi lập trình viên gọi lệnh đóng ứng dụng một cách đột ngột.

60. Tại sao ‘ConcurrentHashMap’ hiệu quả hơn ‘Hashtable’ trong môi trường đa luồng?

A. Vì nó không sử dụng bất kỳ cơ chế khóa (locking) nào nên tốc độ rất nhanh.
B. Vì nó chỉ khóa một phân đoạn của bản đồ thay vì khóa toàn bộ cấu trúc dữ liệu.
C. Vì nó lưu trữ dữ liệu trực tiếp vào bộ nhớ Stack của từng luồng riêng biệt.
D. Vì nó tự động xóa các phần tử cũ để nhường chỗ cho dữ liệu mới.

61. Trong Java, từ khóa ‘final’ khi áp dụng cho một biến cục bộ có ý nghĩa chính xác là gì?

A. Biến đó sẽ được lưu trữ trong bộ nhớ tĩnh (Static Memory).
B. Biến đó không thể bị thay đổi giá trị sau khi đã được gán lần đầu tiên.
C. Biến đó phải được khởi tạo ngay tại dòng khai báo.
D. Biến đó sẽ có phạm vi truy cập toàn cục trong toàn bộ lớp.

62. Sự khác biệt chính giữa phương thức ‘equals()’ và toán tử ‘==’ khi so sánh hai đối tượng String là gì?

A. Toán tử ‘==’ so sánh nội dung văn bản, còn ‘equals()’ so sánh địa chỉ ô nhớ.
B. Toán tử ‘==’ so sánh địa chỉ ô nhớ, còn ‘equals()’ so sánh nội dung bên trong các đối tượng.
C. Cả hai đều thực hiện chức năng giống hệt nhau trong mọi trường hợp.
D. Toán tử ‘==’ chỉ dùng cho các kiểu dữ liệu nguyên thủy, không dùng được cho String.

63. Kể từ Java 8, một Interface có thể chứa loại phương thức nào dưới đây mà không bắt buộc các lớp triển khai phải ghi đè?

A. Phương thức trừu tượng (Abstract methods).
B. Phương thức mặc định (Default methods) và phương thức tĩnh (Static methods).
C. Phương thức được bảo vệ (Protected methods).
D. Phương thức có từ khóa ‘final’.

64. Trong cơ chế xử lý ngoại lệ (Exception Handling), khối lệnh nào luôn được thực thi dù có ngoại lệ xảy ra hay không?

A. Khối ‘catch’.
B. Khối ‘try’.
C. Khối ‘finally’.
D. Khối ‘throw’.

65. Kiểu dữ liệu ‘Record’ được giới thiệu chính thức từ Java 16 nhằm mục đích chủ yếu là gì?

A. Để thay thế hoàn toàn cho các lớp trừu tượng (Abstract classes).
B. Để tạo ra các đối tượng có thể thay đổi dữ liệu (Mutable objects) một cách nhanh chóng.
C. Đóng vai trò là các vật chứa dữ liệu bất biến (Immutable data carriers) giúp giảm bớt mã mẫu (Boilerplate code).
D. Để quản lý việc kết nối cơ sở dữ liệu một cách tự động.

66. Trong Java Collections Framework, lớp nào cho phép lưu trữ các phần tử theo cặp Key-Value và không cho phép Key trùng lặp?

A. ArrayList.
B. HashSet.
C. HashMap.
D. LinkedList.

67. Từ khóa ‘static’ gắn với một phương thức trong lớp có ý nghĩa gì?

A. Phương thức đó chỉ có thể được gọi thông qua một đối tượng cụ thể của lớp.
B. Phương thức đó thuộc về lớp chứ không thuộc về bất kỳ thực thể (instance) cụ thể nào.
C. Phương thức đó không thể được nạp chồng (overload).
D. Phương thức đó sẽ tự động được thực thi khi chương trình bắt đầu mà không cần gọi.

68. Đặc điểm chính của ‘Sealed Classes’ được giới thiệu trong Java 17 là gì?

A. Cho phép một lớp có thể được kế thừa bởi bất kỳ lớp nào trong cùng dự án.
B. Ngăn chặn hoàn toàn việc kế thừa từ một lớp cụ thể.
C. Hạn chế quyền kế thừa, chỉ cho phép các lớp được chỉ định rõ ràng mới có thể kế thừa lớp đó.
D. Tự động chuyển đổi các lớp thành các Interface tương ứng.

69. Trong Java, một lớp có thể kế thừa trực tiếp từ bao nhiêu lớp cha khác nhau?

A. Không giới hạn số lượng lớp cha.
B. Tối đa là hai lớp cha.
C. Chỉ duy nhất một lớp cha.
D. Tối đa là năm lớp cha.

70. Phương thức ‘map()’ trong Stream API của Java được sử dụng để làm gì?

A. Lọc các phần tử dựa trên một điều kiện cho trước.
B. Chuyển đổi mỗi phần tử trong Stream thành một giá trị hoặc kiểu dữ liệu khác.
C. Sắp xếp các phần tử theo thứ tự tăng dần.
D. Loại bỏ các phần tử trùng lặp trong danh sách.

71. Lợi ích lớn nhất của việc sử dụng ‘Try-with-resources’ trong Java là gì?

A. Giúp mã nguồn chạy nhanh hơn gấp đôi.
B. Tự động đóng các tài nguyên (như tệp tin, kết nối mạng) sau khi sử dụng xong để tránh rò rỉ bộ nhớ.
C. Cho phép bắt được tất cả các loại lỗi mà không cần khai báo khối ‘catch’.
D. Cho phép sử dụng nhiều biến ‘var’ hơn trong chương trình.

72. Từ khóa ‘volatile’ trong lập trình đa luồng (multithreading) Java có tác dụng gì?

A. Đảm bảo rằng một khối lệnh chỉ được thực thi bởi một luồng tại một thời điểm.
B. Đảm bảo tính hiển thị (visibility) của giá trị biến, khiến mọi thay đổi trên biến đó được cập nhật ngay lập tức vào bộ nhớ chính.
C. Ngăn chặn việc một luồng bị tạm dừng bởi hệ điều hành.
D. Tự động khóa (lock) đối tượng khi truy cập vào biến đó.

73. Sự khác biệt về mặt cấu trúc giữa ArrayList và LinkedList trong Java là gì?

A. ArrayList dựa trên mảng động, còn LinkedList dựa trên cấu trúc danh sách liên kết kép.
B. LinkedList truy cập phần tử nhanh hơn ArrayList thông qua chỉ số (index).
C. ArrayList tiết kiệm bộ nhớ hơn LinkedList vì không cần lưu trữ các con trỏ liên kết.
D. Cả hai đều sử dụng mảng tĩnh để lưu trữ dữ liệu.

74. Từ khóa ‘var’ (Local Variable Type Inference) trong Java có thể được sử dụng ở đâu?

A. Làm kiểu dữ liệu cho các thuộc tính (fields) của một lớp.
B. Làm kiểu dữ liệu cho tham số của một phương thức.
C. Làm kiểu dữ liệu cho biến cục bộ bên trong một phương thức khi biến đó được khởi tạo giá trị ngay lập tức.
D. Làm kiểu dữ liệu trả về của một phương thức.

75. Trong Java, ngoại lệ nào dưới đây thuộc loại ‘Checked Exception’ (Ngoại lệ bắt buộc phải xử lý)?

A. NullPointerException.
B. ArrayIndexOutOfBoundsException.
C. IOException.
D. ArithmeticException.

76. Mục đích của việc sử dụng lớp ‘Optional’ trong Java 8 trở lên là gì?

A. Để tăng tốc độ truy xuất dữ liệu từ Database.
B. Hạn chế lỗi NullPointerException bằng cách cung cấp một vật chứa có thể chứa hoặc không chứa giá trị.
C. Để thay thế cho các vòng lặp ‘for’ truyền thống.
D. Để tự động ép kiểu dữ liệu từ String sang Integer.

77. Một Interface được gọi là ‘Functional Interface’ khi nó thỏa mãn điều kiện nào?

A. Nó có ít nhất hai phương thức trừu tượng.
B. Nó chỉ chứa duy nhất một phương thức trừu tượng (Abstract method).
C. Nó không chứa bất kỳ phương thức nào.
D. Nó chỉ chứa các phương thức mặc định (Default methods).

78. Trong Java, ‘Garbage Collection’ (Bộ thu gom rác) thực hiện nhiệm vụ gì?

A. Xóa các tệp tin tạm thời trong thư mục cài đặt Java.
B. Giải phóng bộ nhớ Heap của các đối tượng không còn được tham chiếu đến trong chương trình.
C. Sắp xếp lại thứ tự các dòng mã nguồn để tối ưu hóa hiệu năng.
D. Kiểm tra và sửa lỗi cú pháp trong quá trình thực thi chương trình.

79. Kết quả của việc sử dụng ‘yield’ trong biểu thức switch (Switch Expression) của Java là gì?

A. Nó kết thúc chương trình ngay lập tức.
B. Nó trả về một giá trị từ một khối mã trong một trường hợp (case) của switch.
C. Nó dùng để tạm dừng luồng đang chạy hiện tại.
D. Nó bỏ qua trường hợp hiện tại và chuyển sang trường hợp tiếp theo.

80. Cú pháp ‘Text Blocks’ (sử dụng ba dấu nháy kép ”’) từ Java 15 có ưu điểm gì nổi bật?

A. Cho phép viết các chuỗi ký tự trên nhiều dòng một cách dễ đọc mà không cần dùng ký tự xuống dòng thủ công.
B. Tự động mã hóa chuỗi thành định dạng Base64.
C. Chỉ dùng để khai báo các đoạn mã HTML bên trong Java.
D. Làm cho chuỗi đó không thể bị thay đổi giá trị (Immutable).

81. Lớp con có thể truy cập được các thành phần nào của lớp cha nếu chúng được đánh dấu là ‘protected’?

A. Chỉ khi lớp con nằm trong cùng một gói (package) với lớp cha.
B. Chỉ khi lớp con nằm ở gói khác với lớp cha.
C. Lớp con có thể truy cập dù nằm ở bất kỳ gói nào.
D. Lớp con không bao giờ truy cập được các thành phần ‘protected’.

82. Phương thức tham chiếu (Method Reference) ‘ClassName::new’ trong Java tương đương với điều gì?

A. Gọi một phương thức tĩnh của lớp.
B. Khởi tạo một đối tượng mới bằng cách gọi hàm tạo (Constructor).
C. Sao chép một đối tượng hiện có.
D. Hủy một đối tượng để giải phóng bộ nhớ.

83. Nguyên lý ‘Tính đóng gói’ (Encapsulation) trong Java thường được thực hiện như thế nào?

A. Khai báo tất cả các biến là ‘public’ để dễ dàng truy cập từ bên ngoài.
B. Sử dụng các lớp trừu tượng cho mọi đối tượng.
C. Sử dụng các từ khóa truy cập (như private) cho thuộc tính và cung cấp các phương thức getter/setter.
D. Cho phép nhiều lớp kế thừa từ một lớp cha duy nhất.

84. Khi so sánh PriorityQueue với LinkedList, đặc điểm khác biệt lớn nhất của PriorityQueue là gì?

A. Nó luôn giữ các phần tử theo thứ tự nhập vào (FIFO).
B. Nó tự động sắp xếp các phần tử theo độ ưu tiên tự nhiên hoặc thông qua một Comparator.
C. Nó không cho phép lưu trữ các giá trị số.
D. Nó truy xuất phần tử ở giữa danh sách nhanh hơn.

85. Tại sao việc ghi đè (override) phương thức ‘hashCode()’ là quan trọng khi ta ghi đè phương thức ‘equals()’?

A. Để chương trình không bị lỗi khi biên dịch.
B. Để đảm bảo các đối tượng bằng nhau (theo equals) phải có cùng mã băm, giúp các bộ sưu tập như HashMap hoạt động chính xác.
C. Để tăng kích thước của đối tượng trong bộ nhớ.
D. Để cho phép đối tượng đó có thể được sử dụng trong vòng lặp ‘foreach’.

86. Sự khác biệt giữa ‘String’ và ‘StringBuilder’ trong Java về mặt hiệu năng khi nối chuỗi là gì?

A. String nhanh hơn vì nó là bất biến (immutable).
B. StringBuilder hiệu quả hơn vì nó cho phép thay đổi nội dung chuỗi mà không cần tạo ra nhiều đối tượng trung gian.
C. Cả hai có hiệu năng hoàn toàn tương đương nhau.
D. StringBuilder chậm hơn do nó phải quản lý các con trỏ bộ nhớ phức tạp.

87. Tính năng ‘Pattern Matching for instanceof’ (Java 16+) giúp ích gì cho lập trình viên?

A. Tự động chuyển đổi kiểu dữ liệu mà không cần kiểm tra.
B. Giảm bớt việc ép kiểu (casting) thủ công sau khi đã kiểm tra kiểu dữ liệu của đối tượng bằng instanceof.
C. Cho phép so sánh hai đối tượng khác loại một cách trực tiếp.
D. Tự động tạo ra các biểu thức chính quy (Regex) cho chuỗi.

88. Trong Java, từ khóa ‘super’ được sử dụng để làm gì?

A. Để khởi tạo một đối tượng mới của lớp hiện tại.
B. Để tham chiếu đến các thành phần (biến, phương thức, hàm tạo) của lớp cha trực tiếp.
C. Để đánh dấu một phương thức là phương thức tĩnh.
D. Để ngăn chặn việc ghi đè phương thức ở lớp con.

89. Đặc điểm nào dưới đây là đúng khi nói về ‘Abstract Class’ (Lớp trừu tượng) trong Java?

A. Nó có thể được khởi tạo đối tượng trực tiếp bằng từ khóa ‘new’.
B. Nó có thể chứa cả phương thức trừu tượng và phương thức có phần thân hoàn chỉnh.
C. Một lớp trừu tượng không được phép chứa các biến instance.
D. Tất cả các phương thức trong lớp trừu tượng đều phải là trừu tượng.

90. Thành phần ‘Java Virtual Machine’ (JVM) có vai trò gì trong kiến trúc Java?

A. Biên dịch mã nguồn .java thành mã Bytecode .class.
B. Cung cấp môi trường thực thi để chạy các tệp Bytecode trên các hệ điều hành khác nhau.
C. Là một trình soạn thảo văn bản dành riêng cho lập trình viên Java.
D. Quản lý việc phân phối các thư viện Java lên internet.

91. Thành phần nào trong Java chịu trách nhiệm chuyển đổi mã Bytecode thành mã máy để thực thi trên một hệ điều hành cụ thể?

A. JDK (Java Development Kit)
B. JRE (Java Runtime Environment)
C. JVM (Java Virtual Machine)
D. JIT (Just-In-Time Compiler)

92. Trong Java, từ khóa nào được sử dụng để ngăn chặn một lớp không cho phép các lớp khác kế thừa từ nó?

A. static
B. final
C. abstract
D. private

93. Kiểu dữ liệu nào sau đây là kiểu dữ liệu nguyên thủy (primitive type) trong Java?

A. String
B. Integer
C. int
D. Array

94. Đâu là giá trị mặc định của một biến instance kiểu boolean trong Java khi chưa được khởi tạo?

A. true
B. false
C. null
D. 0

95. Phương thức ‘main’ chuẩn để chạy một chương trình Java phải có chữ ký (signature) như thế nào?

A. public static void main(String[] args)
B. public void main(String args[])
C. static void main(String args)
D. public static int main(String[] args)

96. Trong lập trình hướng đối tượng với Java, ‘Tính đa hình’ (Polymorphism) được thể hiện rõ nhất qua hiện tượng nào sau đây?

A. Sử dụng từ khóa ‘private’ để bảo vệ dữ liệu
B. Một lớp kế thừa từ nhiều lớp cha cùng lúc
C. Ghi đè phương thức (Method Overriding) ở lớp con
D. Tạo ra nhiều đối tượng từ cùng một lớp

97. Từ khóa ‘super’ trong Java được sử dụng chủ yếu để làm gì?

A. Để gọi các thành phần của lớp cha từ lớp con
B. Để tạo ra một đối tượng mới của lớp hiện tại
C. Để kết thúc việc thực thi một phương thức
D. Để truy cập các biến tĩnh của lớp hiện tại

98. Interface trong Java có đặc điểm nào sau đây kể từ phiên bản Java 8?

A. Không được phép chứa bất kỳ phương thức nào có thân hàm
B. Chỉ được phép chứa các biến instance bình thường
C. Có thể chứa các phương thức ‘default’ có thân hàm xử lý
D. Có thể được khởi tạo trực tiếp bằng từ khóa ‘new’

99. Khối lệnh ‘finally’ trong cấu trúc try-catch-finally sẽ được thực thi khi nào?

A. Chỉ khi có lỗi xảy ra trong khối try
B. Chỉ khi không có lỗi nào xảy ra
C. Luôn luôn được thực thi bất kể có ngoại lệ hay không
D. Chỉ khi chương trình bị dừng đột ngột bởi hệ thống

100. Sự khác biệt chính giữa ‘String’ và ‘StringBuilder’ trong Java là gì?

A. String có thể thay đổi giá trị còn StringBuilder thì không
B. String là bất biến (immutable) còn StringBuilder là có thể thay đổi (mutable)
C. StringBuilder tốn nhiều bộ nhớ hơn String trong mọi trường hợp
D. Chỉ có String mới dùng được trong các biểu thức nối chuỗi với dấu cộng (+)

101. Tập hợp (Collection) nào sau đây trong Java không cho phép lưu trữ các phần tử trùng lặp?

A. ArrayList
B. LinkedList
C. Set
D. Vector

102. Trong Java, phương thức ‘equals()’ của lớp Object mặc định so sánh điều gì giữa hai đối tượng?

A. So sánh nội dung các thuộc tính bên trong
B. So sánh địa chỉ ô nhớ (tham chiếu) của đối tượng
C. So sánh kích thước bộ nhớ của đối tượng
D. So sánh tên lớp của hai đối tượng đó

103. Từ khóa ‘static’ gắn với một phương thức có ý nghĩa gì?

A. Phương thức đó chỉ có thể được gọi sau khi tạo đối tượng
B. Phương thức đó thuộc về lớp chứ không thuộc về đối tượng cụ thể
C. Phương thức đó không thể bị thay đổi nội dung ở lớp con
D. Phương thức đó sẽ tự động chạy khi chương trình bắt đầu

104. Cơ chế ‘Garbage Collection’ (Dọn rác) trong Java có vai trò gì?

A. Xóa các tệp tin tạm thời trên ổ cứng của máy tính
B. Giải phóng bộ nhớ Heap của các đối tượng không còn được tham chiếu
C. Tự động sửa các lỗi cú pháp trong mã nguồn Java
D. Tối ưu hóa tốc độ xử lý của CPU khi chạy chương trình

105. Trong Java, một lớp có thể kế thừa trực tiếp từ bao nhiêu lớp cha khác nhau?

A. Không giới hạn số lượng
B. Tối đa là hai lớp cha
C. Chỉ duy nhất một lớp cha
D. Tùy thuộc vào cấu hình của máy ảo JVM

106. Mục đích chính của việc sử dụng ‘Generics’ trong Java là gì?

A. Tăng tốc độ thực thi của chương trình khi chạy
B. Giảm kích thước của file .class sau khi biên dịch
C. Cung cấp tính an toàn kiểu dữ liệu (Type-safety) tại thời điểm biên dịch
D. Cho phép tạo ra các biến có thể thay đổi kiểu dữ liệu lúc runtime

107. Trong xử lý đa luồng (Multithreading), phương thức nào được dùng để bắt đầu thực thi một luồng mới?

A. run()
B. start()
C. init()
D. execute()

108. Từ khóa ‘transient’ trong Java có tác dụng gì khi áp dụng cho một biến thành viên?

A. Đánh dấu biến đó không được tham gia vào quá trình Serialization
B. Làm cho biến đó có giá trị không thay đổi (hằng số)
C. Cho phép biến đó được truy cập từ bất kỳ luồng nào
D. Đảm bảo biến đó luôn có giá trị khác null

109. Lớp nào sau đây trong Java được sử dụng để đọc dữ liệu nhập vào từ bàn phím một cách tiện lợi?

A. System
B. Scanner
C. Printer
D. InputReader

110. Đâu là cách chính xác để so sánh giá trị 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 toán tử ‘===’
D. Sử dụng phương thức ‘compare()’

111. Một lớp ‘Abstract’ (trừu tượng) trong Java có đặc điểm nào sau đây?

A. Có thể được khởi tạo đối tượng trực tiếp bằng từ khóa ‘new’
B. Bắt buộc tất cả các phương thức bên trong phải là trừu tượng
C. Không thể dùng để tạo đối tượng trực tiếp nhưng có thể chứa phương thức có thân hàm
D. Chỉ có thể chứa các hằng số tĩnh (static final)

112. Trong Java, ‘Checked Exception’ là những ngoại lệ như thế nào?

A. Những ngoại lệ chỉ xảy ra khi bộ nhớ RAM bị đầy
B. Những ngoại lệ bắt buộc phải được xử lý hoặc khai báo bởi lập trình viên tại thời điểm biên dịch
C. Những lỗi logic do lập trình viên viết sai thuật toán
D. Những ngoại lệ không cần phải bắt bằng khối try-catch

113. Toán tử nào được sử dụng để kiểm tra xem một đối tượng có thuộc về một kiểu lớp cụ thể nào đó hay không?

A. isTypeOf
B. instanceof
C. getClass
D. inherits

114. Tham số biến đổi (Varargs) trong Java được ký hiệu bằng ký tự nào sau kiểu dữ liệu trong tham số phương thức?

A. Dấu chấm hỏi (?)
B. Ba dấu chấm (…)
C. Dấu sao (*)
D. Dấu và (&)

115. Đặc điểm của ‘ArrayList’ so với mảng (Array) thông thường trong Java là gì?

A. ArrayList có kích thước cố định không thể thay đổi
B. ArrayList chỉ có thể lưu trữ các kiểu dữ liệu nguyên thủy
C. ArrayList có thể tự động thay đổi kích thước khi thêm hoặc xóa phần tử
D. ArrayList truy cập phần tử nhanh hơn mảng ở mọi vị trí

116. Từ khóa ‘volatile’ trong Java Multithreading có tác dụng gì quan trọng nhất?

A. Dùng để khóa một đoạn mã không cho nhiều luồng truy cập
B. Đảm bảo giá trị của biến luôn được đọc và ghi trực tiếp từ bộ nhớ chính (Main Memory)
C. Làm cho phương thức chạy nhanh hơn gấp đôi
D. Ngăn chặn việc đối tượng bị dọn rác bởi Garbage Collector

117. Trong Java 8, biểu thức Lambda (Lambda Expression) chủ yếu được sử dụng để làm gì?

A. Để thay thế hoàn toàn cho các vòng lặp for truyền thống
B. Cung cấp cách triển khai ngắn gọn cho các Functional Interface
C. Để tăng cường bảo mật cho mã nguồn Java
D. Để định nghĩa các biến toàn cục trong chương trình

118. Giao diện ‘Comparable’ được sử dụng trong Java nhằm mục đích gì?

A. Để sao chép một đối tượng thành một bản sao khác
B. Để định nghĩa thứ tự sắp xếp tự nhiên cho các đối tượng của một lớp
C. Để chuyển đổi một đối tượng thành dạng chuỗi JSON
D. Để cho phép một lớp có thể thực hiện đa luồng

119. Trong Java, ‘Wrapper classes’ (như Integer, Double) được tạo ra để làm gì?

A. Để thay thế hoàn toàn các kiểu dữ liệu nguyên thủy nhằm tiết kiệm bộ nhớ
B. Để bao bọc các kiểu dữ liệu nguyên thủy thành đối tượng để sử dụng trong Collections
C. Để mã hóa dữ liệu trước khi lưu xuống cơ sở dữ liệu
D. Để tăng tốc độ tính toán các phép toán số học

120. Phương thức ‘stream()’ được giới thiệu trong Java 8 thuộc về interface nào sau đây?

A. Map
B. Collection
C. Iterator
D. Object

121. Trong kiến trúc Java, thành phần nào chịu trách nhiệm thực thi mã bytecode và cung cấp môi trường chạy cho ứng dụng?

A. JRE (Java Runtime Environment)
B. JDK (Java Development Kit)
C. JVM (Java Virtual Machine)
D. JIT (Just-In-Time Compiler)

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

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

123. Kết quả của biểu thức ‘String s1 = ‘Hello’; String s2 = ‘Hello’; boolean result = (s1 == s2);’ là gì?

A. false
B. true
C. Gây ra lỗi biên dịch
D. Gây ra ngoại lệ runtime

124. Từ khóa nào được sử dụng để ngăn chặn một lớp (class) bị kế thừa bởi các lớp khác?

A. abstract
B. static
C. final
D. private

125. Để bắt và xử lý các ngoại lệ (exceptions) có khả năng xảy ra, khối mã nào sau đây là bắt buộc phải có nếu không sử dụng ‘throws’?

A. khối ‘finally’
B. khối ‘try’ và ít nhất một khối ‘catch’
C. khối ‘catch’ đứng độc lập
D. khối ‘throw’

126. Trong Java, một lớp có thể kế thừa trực tiếp từ tối đa bao nhiêu lớp cha (parent classes)?

A. Không giới hạn
B. 2
C. 1
D. 0

127. Phương thức ‘public static void main(String[] args)’ có ý nghĩa gì trong một chương trình Java?

A. Là một phương thức bình thường dùng để in dữ liệu
B. Là phương thức khởi tạo của lớp
C. Là điểm bắt đầu thực thi (entry point) của mọi ứng dụng Java độc lập
D. Là phương thức dùng để giải phóng bộ nhớ

128. Ưu điểm chính của việc sử dụng ‘ArrayList’ so với mảng (Array) thông thường trong Java là gì?

A. ArrayList có kích thước động và tự động mở rộng khi cần
B. ArrayList truy cập phần tử nhanh hơn mảng
C. ArrayList tiết kiệm bộ nhớ hơn mảng
D. ArrayList có thể chứa các kiểu dữ liệu nguyên thủy

129. Từ khóa ‘super’ trong Java được sử dụng để làm gì?

A. Để tạo một đối tượng mới của lớp hiện tại
B. Để truy cập các thành phần (phương thức, biến, constructor) của lớp cha
C. Để kết thúc phương thức hiện tại
D. Để đánh dấu một phương thức là trừu tượng

130. Ngoại lệ ‘NullPointerException’ thuộc loại ngoại lệ nào sau đây?

A. Checked Exception
B. Error
C. Unchecked Exception (RuntimeException)
D. Compile-time Exception

131. Sự khác biệt chính giữa ‘interface’ và ‘abstract class’ (trước Java 8) là gì?

A. Interface có thể có các phương thức có thân hàm
B. Abstract class không thể chứa biến
C. Một lớp có thể triển khai nhiều interface nhưng chỉ có thể kế thừa một abstract class
D. Interface có thể được khởi tạo trực tiếp

132. Đâu là cách chính xác để khai báo một mảng các số nguyên có 5 phần tử trong Java?

A. int arr = new int[5];
B. int arr[5];
C. int[] arr = new int[5];
D. Array arr = new Array(5);

133. Trong Java, cơ chế nào giúp tự động thu hồi bộ nhớ từ các đối tượng không còn được sử dụng?

A. Memory Leak Hunter
B. Garbage Collection (GC)
C. Manual Memory Management
D. Destructor Method

134. Đối tượng ‘StringBuilder’ khác ‘String’ ở điểm quan trọng nào?

A. StringBuilder không thay đổi được (immutable)
B. StringBuilder có thể thay đổi được (mutable) mà không tạo ra đối tượng mới
C. StringBuilder luôn an toàn trong môi trường đa luồng (thread-safe)
D. String nhanh hơn StringBuilder khi nối chuỗi

135. Từ khóa ‘static’ gắn với một phương thức có ý nghĩa gì?

A. Phương thức đó thuộc về đối tượng cụ thể
B. Phương thức đó không thể bị ghi đè
C. Phương thức đó thuộc về lớp, có thể gọi mà không cần tạo đối tượng
D. Phương thức đó chỉ được gọi một lần duy nhất

136. Tính chất ‘Đa hình’ (Polymorphism) trong Java thể hiện rõ nhất qua khả năng nào?

A. Một phương thức có thể được gọi theo nhiều cách khác nhau tùy thuộc vào đối tượng thực tế
B. Việc ẩn đi các chi tiết triển khai của một lớp
C. Khả năng gộp nhiều biến vào một lớp duy nhất
D. Việc kế thừa thuộc tính từ lớp cha

137. Để so sánh nội dung của hai đối tượng ‘String’ thay vì so sánh địa chỉ bộ nhớ, ta nên dùng phương thức nào?

A. ==
B. compare()
C. equals()
D. hashCode()

138. Gói (package) mặc định nào luôn được Java tự động import vào mọi lớp?

A. java.util
B. java.io
C. java.lang
D. java.net

139. Cấu trúc ‘try-with-resources’ (từ Java 7) có lợi ích chính là gì?

A. Làm chương trình chạy nhanh hơn
B. Tự động đóng các tài nguyên (như file, stream) sau khi sử dụng
C. Cho phép bắt nhiều ngoại lệ cùng lúc
D. Bắt buộc phải có khối finally

140. Trong Java, modifier nào cho phép truy cập từ bất kỳ lớp nào trong cùng dự án?

A. private
B. protected
C. public
D. default (không ghi gì)

141. Biến ‘final’ có đặc điểm gì sau khi đã được gán giá trị lần đầu?

A. Có thể gán lại giá trị bất cứ lúc nào
B. Giá trị không thể bị thay đổi (trở thành hằng số)
C. Chỉ có thể thay đổi trong khối static
D. Sẽ tự động bị xóa bởi Garbage Collector

142. Sự khác biệt giữa ‘throw’ và ‘throws’ trong xử lý ngoại lệ là gì?

A. ‘throw’ dùng để khai báo ngoại lệ, ‘throws’ dùng để ném ngoại lệ
B. Cả hai đều dùng để ném ngoại lệ nhưng ở vị trí khác nhau
C. ‘throw’ dùng để ném một ngoại lệ cụ thể, ‘throws’ dùng ở chữ ký phương thức để cảnh báo ngoại lệ có thể xảy ra
D. Không có sự khác biệt về chức năng

143. Hàm ‘hashCode()’ và ‘equals()’ có mối quan hệ như thế nào theo ‘Java contract’?

A. Hai đối tượng có hashCode bằng nhau thì chắc chắn equals bằng true
B. Nếu hai đối tượng equals bằng true thì chúng bắt buộc phải có hashCode bằng nhau
C. Không có mối liên hệ nào
D. Phương thức equals tự động gọi hashCode

144. Interface ‘Runnable’ được sử dụng chủ yếu cho mục đích nào?

A. Để quản lý bộ nhớ
B. Để thực hiện các thao tác vào/ra (I/O)
C. Để tạo và chạy các luồng (threads)
D. Để định nghĩa các cấu trúc dữ liệu

145. Lớp ‘Record’ trong Java (từ Java 14) được thiết kế nhằm mục đích chính là gì?

A. Để thay thế hoàn toàn cho Interface
B. Để làm cấu trúc dữ liệu bất biến (immutable) và giảm mã boilerplate
C. Để tăng tốc độ thực thi các vòng lặp
D. Để lưu trữ dữ liệu vào database trực tiếp

146. Từ khóa ‘volatile’ trong lập trình đa luồng Java có tác dụng gì?

A. Ngăn chặn các luồng khác truy cập biến
B. Đảm bảo giá trị biến luôn được đọc/ghi trực tiếp từ bộ nhớ chính, tránh lỗi cache của luồng
C. Khóa đối tượng để đồng bộ hóa
D. Chuyển biến thành hằng số

147. Stream API (Java 8+) sử dụng phương thức ‘map’ để làm gì?

A. Lọc các phần tử theo điều kiện
B. Biến đổi mỗi phần tử của stream thành một kết quả mới tương ứng
C. Sắp xếp các phần tử
D. Thu gọn stream thành một giá trị duy nhất

148. Cơ chế ‘Autoboxing’ trong Java là gì?

A. Tự động đóng gói ứng dụng thành file JAR
B. Tự động chuyển đổi giữa kiểu dữ liệu nguyên thủy và lớp bao (Wrapper class) tương ứng
C. Tự động khởi tạo đối tượng khi khai báo
D. Tự động giải phóng các đối tượng không dùng đến

149. Sự khác biệt giữa ‘HashMap’ và ‘Hashtable’ là gì?

A. Hashtable nhanh hơn HashMap
B. HashMap cho phép giá trị null, trong khi Hashtable thì không và HashMap không đồng bộ (non-synchronized)
C. Hashtable là một phần của Stream API
D. Không có sự khác biệt nào đáng kể

150. Lớp nào là lớp cha (superclass) của mọi lớp trong Java?

A. Class
B. Main
C. Object
D. Root

Số câu đã làm: 0/0
Thời gian còn lại: 00:00:00
  • Đã làm
  • Chưa làm
  • Cần kiểm tra lại
© 2026 Trending New 24h • Tạo ra với GeneratePress

Bạn ơi!!! Để xem được kết quả, bạn vui lòng làm nhiệm vụ nhỏ xíu này nha

HƯỚNG DẪN TÌM MẬT KHẨU

Đang tải nhiệm vụ...

Bước 1: Mở tab mới và truy cập Google.com. Sau đó tìm kiếm chính xác từ khóa sau:

Bước 2: Tìm và click vào kết quả có trang web giống như hình ảnh dưới đây:

Hướng dẫn tìm kiếm

Bước 3: Kéo xuống cuối trang đó để tìm mật khẩu như hình ảnh hướng dẫn:

Hướng dẫn lấy mật khẩu

Nếu tìm không thấy mã bạn có thể Đổi nhiệm vụ để lấy mã khác nhé.