1. Trong Java, kiểu dữ liệu nào sau đây được sử dụng để lưu trữ một ký tự Unicode?
A. int
B. char
C. byte
D. short
2. Trong Java, phương thức `wait()`, `notify()` và `notifyAll()` được định nghĩa trong lớp nào?
A. Thread
B. Runnable
C. Object
D. Class
3. Trong Java, lớp nào sau đây được sử dụng để tạo ra các đối tượng bất biến (immutable)?
A. StringBuilder
B. StringBuffer
C. String
D. ArrayList
4. Trong Java, giá trị mặc định của một biến instance kiểu boolean là gì?
A. true
B. false
C. null
D. 1
5. Phương thức nào sau đây của lớp `Object` được sử dụng để so sánh hai đối tượng về mặt nội dung?
A. ==
B. equals()
C. compareTo()
D. hashCode()
6. Đoạn code sau sẽ in ra kết quả gì?
“`java
public class Test {
public static void main(String[] args) {
String str1 = “Hello”;
String str2 = new String(“Hello”);
System.out.println(str1 == str2);
}
}
“`
A. true
B. false
C. Compile error
D. Runtime error
7. Trong Java, annotation `@FunctionalInterface` được sử dụng để làm gì?
A. Đánh dấu một interface là một functional interface (chỉ có một phương thức abstract).
B. Đánh dấu một interface là một class.
C. Đánh dấu một interface là một annotation.
D. Đánh dấu một interface là một enum.
8. Trong Java, từ khóa nào được sử dụng để ngăn một lớp khác kế thừa từ một lớp?
A. private
B. static
C. final
D. abstract
9. Trong Java, đặc điểm nào sau đây KHÔNG phải là một lợi ích của việc sử dụng đa luồng (multithreading)?
A. Tăng tốc độ thực thi chương trình trên các hệ thống đa lõi.
B. Cải thiện khả năng phản hồi của ứng dụng.
C. Đơn giản hóa cấu trúc chương trình bằng cách chia nhỏ tác vụ.
D. Loại bỏ hoàn toàn nhu cầu sử dụng đồng bộ hóa (synchronization).
10. Trong Java, exception nào sau đây là checked exception?
A. NullPointerException
B. ArrayIndexOutOfBoundsException
C. IOException
D. IllegalArgumentException
11. Đâu là phát biểu đúng về garbage collection trong Java?
A. Garbage collection là một quá trình thủ công mà lập trình viên phải tự quản lý.
B. Garbage collection là một tính năng tự động của JVM để thu hồi bộ nhớ không còn được sử dụng.
C. Garbage collection chỉ hoạt động khi chương trình hết bộ nhớ.
D. Garbage collection giải phóng bộ nhớ bằng cách gọi phương thức `delete()`.
12. Trong Java, cơ chế nào cho phép một đối tượng có thể có nhiều kiểu dữ liệu?
A. Kế thừa (Inheritance)
B. Đa hình (Polymorphism)
C. Đóng gói (Encapsulation)
D. Trừu tượng (Abstraction)
13. Trong Java, mục đích chính của từ khóa ‘static’ là gì?
A. Tạo ra các biến và phương thức chỉ có thể truy cập được từ bên trong lớp.
B. Tạo ra các biến và phương thức thuộc về lớp chứ không phải là một thể hiện cụ thể của lớp.
C. Cho phép một lớp kế thừa từ nhiều lớp khác.
D. Ngăn không cho một lớp bị kế thừa.
14. Đâu là sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java?
A. `ArrayList` sử dụng mảng động, trong khi `LinkedList` sử dụng danh sách liên kết đôi.
B. `ArrayList` cho phép truy cập ngẫu nhiên nhanh hơn, trong khi `LinkedList` cho phép chèn/xóa phần tử ở giữa nhanh hơn.
C. Cả hai đáp án trên.
D. Không có sự khác biệt nào.
15. 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. float
C. boolean
D. String
16. Trong Java, Collection nào sau đây không cho phép chứa các phần tử trùng lặp?
A. List
B. ArrayList
C. Set
D. LinkedList
17. Trong Java, annotation nào được sử dụng để báo cho trình biên dịch biết rằng một phương thức đang ghi đè (override) một phương thức từ lớp cha?
A. @Override
B. @OverrideMethod
C. @Implement
D. @Overwrites
18. Trong Java, phương thức nào sau đây được gọi tự động khi một đối tượng bị hủy (garbage collected)?
A. delete()
B. finalize()
C. destroy()
D. gc()
19. Interface trong Java có thể chứa những thành phần nào sau đây?
A. Chỉ các phương thức abstract.
B. Chỉ các biến static final.
C. Các phương thức abstract và các biến static final.
D. Các phương thức concrete và các biến instance.
20. Trong Java, luồng (stream) là gì?
A. Một chuỗi các ký tự.
B. Một đối tượng đại diện cho một file.
C. Một chuỗi các đối tượng hỗ trợ các thao tác theo kiểu hàm (functional).
D. Một tiến trình đang chạy trong hệ điều hành.
21. Trong Java, lớp nào sau đây được sử dụng để đọc dữ liệu từ một file theo định dạng nhị phân?
A. FileReader
B. BufferedReader
C. FileInputStream
D. InputStreamReader
22. Trong Java, kiểu dữ liệu nào sau đây được sử dụng để lưu trữ các giá trị true hoặc false?
A. int
B. char
C. boolean
D. String
23. Trong Java, mục đích của từ khóa `transient` là gì?
A. Đánh dấu một biến là hằng số (constant).
B. Ngăn không cho một biến được tuần tự hóa (serialized).
C. Tạo ra một biến static.
D. Cho phép một biến được truy cập từ bất kỳ đâu.
24. Trong Java, kiểu dữ liệu nào sau đây có kích thước lớn nhất?
A. int
B. float
C. double
D. long
25. Phương thức nào sau đây được sử dụng để giải phóng bộ nhớ mà một đối tượng không còn sử dụng đến trong Java?
A. delete()
B. free()
C. System.gc()
D. finalize()
26. Trong Java, lớp nào sau đây được sử dụng để thực hiện các thao tác liên quan đến biểu thức chính quy (regular expression)?
A. Regex
B. Pattern
C. Matcher
D. Both Pattern and Matcher
27. Trong Java, cơ chế nào cho phép tạo ra các lớp mà không cần chỉ định tất cả các chi tiết triển khai?
A. Kế thừa (Inheritance)
B. Đa hình (Polymorphism)
C. Đóng gói (Encapsulation)
D. Trừu tượng (Abstraction)
28. Trong Java, phương thức nào sau đây được sử dụng để chuyển đổi một đối tượng thành một chuỗi?
A. toString()
B. valueOf()
C. parseString()
D. convertToString()
29. Trong Java, cơ chế nào cho phép che giấu thông tin và bảo vệ dữ liệu của một đối tượng?
A. Kế thừa (Inheritance)
B. Đa hình (Polymorphism)
C. Đóng gói (Encapsulation)
D. Trừu tượng (Abstraction)
30. Trong Java, phương thức nào sau đây được sử dụng để tạo ra một bản sao (copy) của một đối tượng?
A. clone()
B. copy()
C. duplicate()
D. newInstance()
31. Trong Java, từ khóa ‘volatile’ được sử dụng để làm gì?
A. Khai báo một biến không thể thay đổi.
B. Đảm bảo rằng một biến được đọc từ bộ nhớ chính thay vì từ cache của thread.
C. Khai báo một biến là hằng số.
D. Đảm bảo rằng một phương thức được thực thi đồng bộ.
32. Phương thức nào sau đây được sử dụng để đọc một dòng văn bản từ một file trong Java?
A. read()
B. readLine()
C. readText()
D. getText()
33. Phương thức nào sau đây được gọi tự động khi một đối tượng được tạo ra trong Java?
A. finalize()
B. start()
C. init()
D. Constructor
34. Interface trong Java có thể chứa những gì?
A. Chỉ các phương thức trừu tượng (abstract methods)
B. Chỉ các biến static final
C. Các phương thức trừu tượng và các biến static final
D. Các phương thức concrete và các biến instance
35. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật để giảm sự phụ thuộc giữa các lớp bằng cách cung cấp các dependency cho lớp thay vì để lớp tự tạo ra chúng.
B. Một kỹ thuật để tăng sự phụ thuộc giữa các lớp.
C. Một kỹ thuật để quản lý bộ nhớ.
D. Một kỹ thuật để xử lý ngoại lệ.
36. 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. float
C. String
D. boolean
37. Serialization trong Java là gì?
A. 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.
B. Quá trình chuyển đổi một chuỗi byte thành một đối tượng.
C. Quá trình mã hóa dữ liệu.
D. Quá trình giải mã dữ liệu.
38. Phương thức nào sau đây được sử dụng để giải phóng bộ nhớ không còn được sử dụng bởi các đối tượng trong Java?
A. free()
B. delete()
C. System.gc()
D. remove()
39. Trong Java, đặc điểm nào sau đây KHÔNG phải là một đặc điểm của lập trình hướng đối tượng (OOP)?
A. Tính đa hình (Polymorphism)
B. Tính trừu tượng (Abstraction)
C. Tính kế thừa (Inheritance)
D. Tính thủ tục (Procedural)
40. Trong Java, Maven là gì?
A. Một công cụ quản lý build (build management tool) cho các dự án Java.
B. Một thư viện để xây dựng giao diện người dùng.
C. Một công cụ để quản lý bộ nhớ.
D. Một API để xử lý ngoại lệ.
41. Trong Java, Map được sử dụng để làm gì?
A. Lưu trữ danh sách các phần tử theo thứ tự.
B. Lưu trữ các phần tử duy nhất không theo thứ tự.
C. Lưu trữ các cặp key-value.
D. Thực hiện các phép toán số học.
42. Annotation nào sau đây được sử dụng để đánh dấu một phương thức trong lớp con (subclass) ghi đè (override) một phương thức trong lớp cha (superclass)?
A. @Override
B. @Overload
C. @Inherit
D. @Implement
43. Trong Java, ORM (Object-Relational Mapping) là gì?
A. Một kỹ thuật để ánh xạ các đối tượng trong ứng dụng Java với các bản ghi trong cơ sở dữ liệu quan hệ.
B. Một kỹ thuật để tạo ra các đối tượng.
C. Một kỹ thuật để quản lý bộ nhớ.
D. Một kỹ thuật để xử lý ngoại lệ.
44. Ngoại lệ (Exception) nào sau đây là một checked exception trong Java?
A. NullPointerException
B. ArrayIndexOutOfBoundsException
C. IOException
D. IllegalArgumentException
45. Trong Java, cơ chế nào cho phép một lớp kế thừa các thuộc tính và phương thức của 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)
46. Trong Java, Design Pattern Factory được sử dụng để làm gì?
A. Tạo đối tượng mà không chỉ định lớp cụ thể của đối tượng sẽ được tạo.
B. Đảm bảo rằng chỉ có một đối tượng duy nhất của một lớp được tạo ra.
C. Định nghĩa một interface cho việc tạo đối tượng, nhưng để các lớp con quyết định lớp nào sẽ khởi tạo.
D. Định nghĩa một họ các thuật toán, đóng gói mỗi thuật toán lại, và làm cho chúng có thể hoán đổi cho nhau.
47. Trong Java, JRE là gì?
A. Java Runtime Environment
B. Java Repository Environment
C. Java Reporting Engine
D. Java Resource Editor
48. JDBC (Java Database Connectivity) được sử dụng để làm gì?
A. Kết nối và tương tác với cơ sở dữ liệu từ ứng dụng Java.
B. Xây dựng giao diện người dùng (GUI) cho ứng dụng Java.
C. Thực hiện các phép toán số học trong Java.
D. Quản lý bộ nhớ trong Java.
49. Trong Java, thread là gì?
A. Một chương trình độc lập
B. Một tiến trình (process) của hệ điều hành
C. Một luồng thực thi (execution) trong một chương trình
D. Một đối tượng (object) trong bộ nhớ
50. Trong Java, Spring Framework là gì?
A. Một framework ứng dụng (application framework) toàn diện cho việc phát triển các ứng dụng Java enterprise.
B. Một thư viện để xây dựng giao diện người dùng.
C. Một công cụ để quản lý bộ nhớ.
D. Một API để xử lý ngoại lệ.
51. Singleton pattern trong Java là gì?
A. Một pattern để tạo ra nhiều đối tượng của một lớp.
B. Một pattern để đảm bảo rằng chỉ có một đối tượng duy nhất của một lớp được tạo ra.
C. Một pattern để quản lý bộ nhớ.
D. Một pattern để xử lý ngoại lệ.
52. Từ khóa nào sau đây được sử dụng để khai báo một hằng số trong Java?
A. static
B. const
C. final
D. immutable
53. Đâu là sự khác biệt chính giữa ArrayList và LinkedList trong Java?
A. ArrayList nhanh hơn trong việc chèn/xóa phần tử ở giữa danh sách.
B. LinkedList nhanh hơn trong việc truy cập ngẫu nhiên các phần tử.
C. ArrayList sử dụng mảng động, LinkedList sử dụng danh sách liên kết.
D. LinkedList sử dụng mảng động, ArrayList sử dụng danh sách liên kết.
54. Trong Java, Stream API được sử dụng để làm gì?
A. Xử lý dữ liệu tuần tự một cách hiệu quả.
B. Kết nối với cơ sở dữ liệu.
C. Xây dựng giao diện người dùng.
D. Quản lý bộ nhớ.
55. Trong Java, JPA (Java Persistence API) là gì?
A. Một đặc tả (specification) cho việc quản lý dữ liệu bền vững (persistent data) trong các ứng dụng Java.
B. Một thư viện để xây dựng giao diện người dùng.
C. Một công cụ để quản lý bộ nhớ.
D. Một API để xử lý ngoại lệ.
56. Trong Java, Collection nào sau đây KHÔNG cho phép chứa các phần tử trùng lặp?
A. List
B. Set
C. ArrayList
D. LinkedList
57. Trong Java, lambda expression là gì?
A. Một cách để tạo ra các đối tượng vô danh.
B. Một cách để định nghĩa các hàm vô danh (anonymous functions).
C. Một cách để quản lý bộ nhớ.
D. Một cách để xử lý ngoại lệ.
58. Trong Java, AOP (Aspect-Oriented Programming) là gì?
A. Một phương pháp lập trình tập trung vào việc định nghĩa các aspect (khía cạnh) để xử lý các mối quan tâm cắt ngang (cross-cutting concerns).
B. Một phương pháp lập trình tập trung vào việc tạo ra các đối tượng.
C. Một phương pháp lập trình tập trung vào việc quản lý bộ nhớ.
D. Một phương pháp lập trình tập trung vào việc xử lý ngoại lệ.
59. Trong Java, Garbage Collection (GC) là gì?
A. Một công cụ để dọn dẹp các file tạm thời.
B. Một tiến trình tự động giải phóng bộ nhớ không còn được sử dụng bởi các đối tượng.
C. Một cơ chế để quản lý bộ nhớ thủ công.
D. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
60. Sự khác biệt giữa ‘==’ và ‘.equals()’ trong Java là gì?
A. ‘==’ so sánh giá trị của hai đối tượng, ‘.equals()’ so sánh tham chiếu.
B. ‘==’ so sánh tham chiếu của hai đối tượng, ‘.equals()’ so sánh giá trị.
C. Cả hai đều so sánh tham chiếu.
D. Cả hai đều so sánh giá trị.
61. HttpServlet trong Java được sử dụng để làm gì?
A. Xử lý các yêu cầu HTTP
B. Kết nối với cơ sở dữ liệu
C. Tạo giao diện người dùng
D. Quản lý bộ nhớ
62. Phương thức `hashCode()` được sử dụng để làm gì trong Java?
A. So sánh hai đối tượng
B. Tạo một bản sao của đối tượng
C. Trả về một giá trị hash code cho đối tượng
D. Giải phóng bộ nhớ của đối tượng
63. Trong Java, garbage collection là gì?
A. Một kỹ thuật tối ưu hóa code
B. Một cơ chế quản lý bộ nhớ tự động
C. Một loại virus máy tính
D. Một công cụ debug
64. JDBC được sử dụng để làm gì trong Java?
A. Tạo giao diện người dùng
B. Kết nối và tương tác với cơ sở dữ liệu
C. Quản lý bộ nhớ
D. Xử lý ngoại lệ
65. Đâu là một design pattern thường được sử dụng để tạo ra các đối tượng?
A. Singleton
B. Observer
C. Strategy
D. Template Method
66. Từ khóa nào được sử dụng để đảm bảo rằng một khối code chỉ được thực thi bởi một thread tại một thời điểm?
A. volatile
B. synchronized
C. threadsafe
D. atomic
67. Trong Java, phương thức `wait()`, `notify()` và `notifyAll()` được sử dụng để làm gì?
A. Quản lý bộ nhớ
B. Đồng bộ hóa các thread
C. Xử lý ngoại lệ
D. Tạo các đối tượng
68. Java Stream API được sử dụng để làm gì?
A. Xử lý dữ liệu tuần tự
B. Xử lý dữ liệu song song
C. Cả hai, xử lý dữ liệu tuần tự và song song
D. Không xử lý dữ liệu
69. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật để giảm sự phụ thuộc giữa các lớp
B. Một cách để tạo các đối tượng singleton
C. Một phương pháp tối ưu hóa hiệu suất
D. Một loại thuật toán sắp xếp
70. Đâu là mục đích của từ khóa `transient` trong Java?
A. Khai báo một biến là hằng số
B. Ngăn chặn một biến được serialized
C. Khai báo một biến là static
D. Cho phép một biến được truy cập từ mọi nơi
71. Trong Java, Serialization là gì?
A. Quá trình chuyển đổi một đối tượng thành một chuỗi byte
B. Quá trình chuyển đổi một chuỗi byte thành một đối tượng
C. Quá trình mã hóa dữ liệu
D. Quá trình giải mã dữ liệu
72. Phương thức nào sau đây được gọi tự động khi một đối tượng được tạo ra trong Java?
A. finalize()
B. start()
C. main()
D. Constructor
73. Trong Java, Spring Framework là gì?
A. Một thư viện để tạo giao diện người dùng
B. Một framework ứng dụng Java để phát triển các ứng dụng doanh nghiệp
C. Một công cụ để quản lý bộ nhớ
D. Một API để kết nối với cơ sở dữ liệu
74. Annotation trong Java được sử dụng để làm gì?
A. Thêm comments vào code
B. Cung cấp metadata cho code
C. Tối ưu hóa hiệu suất
D. Bảo mật code
75. 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. float
C. boolean
D. String
76. Trong Java, JRE là viết tắt của?
A. Java Runtime Environment
B. Java Resource Editor
C. Java Report Engine
D. Java Revolution Enterprise
77. Sự khác biệt chính giữa List và Set trong Java Collections Framework là gì?
A. List cho phép các phần tử trùng lặp, Set thì không
B. Set cho phép các phần tử trùng lặp, List thì không
C. List là interface, Set là class
D. Không có sự khác biệt
78. Sự khác biệt chính giữa ‘==’ và ‘.equals()’ trong Java là gì?
A. ‘==’ so sánh giá trị, ‘.equals()’ so sánh tham chiếu
B. ‘==’ so sánh tham chiếu, ‘.equals()’ so sánh giá trị (nếu được override)
C. ‘==’ dùng cho số, ‘.equals()’ dùng cho chuỗi
D. Không có sự khác biệt
79. Đâu là cách chính xác để tạo một instance của một inner class non-static từ bên ngoài outer class?
A. InnerClass ic = new InnerClass();
B. OuterClass.InnerClass ic = new OuterClass.InnerClass();
C. OuterClass.InnerClass ic = new OuterClass().new InnerClass();
D. OuterClass oc = new OuterClass(); InnerClass ic = oc.new InnerClass();
80. Trong Java, interface có thể chứa những gì?
A. Chỉ các phương thức trừu tượng (abstract methods)
B. Chỉ các biến static final
C. Các phương thức trừu tượng và các biến static final
D. Các phương thức concrete và các biến instance
81. Một trong những lợi ích chính của việc sử dụng Java Reflection là gì?
A. Tăng hiệu suất
B. Giảm mức tiêu thụ bộ nhớ
C. Khả năng kiểm tra và thao tác các lớp và đối tượng tại runtime
D. Đơn giản hóa việc quản lý bộ nhớ
82. Trong Java, đặc điểm nào sau đây KHÔNG phải là một đặc điểm của lập trình hướng đối tượng (OOP)?
A. Tính đa hình (Polymorphism)
B. Tính đóng gói (Encapsulation)
C. Tính kế thừa (Inheritance)
D. Sử dụng con trỏ trực tiếp (Direct pointer manipulation)
83. JSP (JavaServer Pages) được sử dụng để làm gì?
A. Tạo các ứng dụng desktop
B. Tạo các trang web động
C. Quản lý cơ sở dữ liệu
D. Xử lý ngoại lệ
84. Trong Java, SOLID là viết tắt của những nguyên tắc thiết kế hướng đối tượng nào?
A. Single responsibility, Open/closed, Liskov substitution, Interface segregation, Dependency inversion
B. Simple, Obvious, Logical, Intuitive, Detailed
C. Secure, Organized, Lightweight, Independent, Durable
D. Scalable, Observable, Available, Logical, Dependable
85. Đâu là một lợi ích của việc sử dụng multithreading trong Java?
A. Giảm mức tiêu thụ bộ nhớ
B. Tăng hiệu suất bằng cách thực hiện song song
C. Đơn giản hóa code
D. Loại bỏ tất cả các lỗi
86. ClassLoader trong Java có vai trò gì?
A. Kiểm tra cú pháp của code
B. Tải các lớp vào JVM
C. Biên dịch code
D. Chạy code
87. Trong Java, thuật ngữ ‘immutable’ có nghĩa là gì?
A. Không thể thay đổi sau khi tạo
B. Có thể thay đổi sau khi tạo
C. Chỉ có thể đọc
D. Chỉ có thể ghi
88. Từ khóa nào được sử dụng để khai báo một hằng số trong Java?
A. static
B. const
C. final
D. immutable
89. Ngoại lệ (Exception) nào sau đây là một checked exception trong Java?
A. NullPointerException
B. ArrayIndexOutOfBoundsException
C. IOException
D. IllegalArgumentException
90. Trong Java, ORM (Object-Relational Mapping) là gì?
A. Một kỹ thuật để ánh xạ các đối tượng Java với các bảng trong cơ sở dữ liệu
B. Một cách để tối ưu hóa hiệu suất
C. Một loại thuật toán sắp xếp
D. Một kỹ thuật để mã hóa dữ liệu
91. ClassLoader trong Java có chức năng gì?
A. Tải các lớp vào bộ nhớ khi cần thiết.
B. Tối ưu hóa hiệu suất của chương trình.
C. Quản lý bộ nhớ.
D. Kết nối với cơ sở dữ liệu.
92. Phương thức `hashCode()` trong Java được sử dụng để làm gì?
A. Để trả về một mã băm (hash code) cho một đối tượng.
B. Để so sánh hai đối tượng.
C. Để tạo một bản sao của một đối tượng.
D. Để chuyển đổi một đối tượng thành một chuỗi.
93. Annotation trong Java được sử dụng để làm gì?
A. Để cung cấp siêu dữ liệu về chương trình.
B. Để thực hiện các phép toán số học.
C. Để tạo giao diện người dùng đồ họa.
D. Để quản lý bộ nhớ.
94. Trong Java, Observer Pattern là gì?
A. Một design pattern cho phép một đối tượng (subject) thông báo thay đổi trạng thái của nó cho các đối tượng phụ thuộc (observers).
B. Một pattern để tạo các đối tượng bất biến.
C. Một pattern để quản lý bộ nhớ.
D. Một pattern để kết nối với cơ sở dữ liệu.
95. Đâu là cách tốt nhất để tạo một chuỗi bất biến (immutable) trong Java?
A. Sử dụng lớp `StringBuilder`.
B. Sử dụng lớp `StringBuffer`.
C. Sử dụng lớp `String`.
D. Sử dụng lớp `StringTokenizer`.
96. Serialization trong Java là gì?
A. 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.
B. Quá trình mã hóa dữ liệu để bảo mật.
C. Quá trình tạo nhiều bản sao của một đối tượng.
D. Quá trình giải phóng bộ nhớ được sử dụng bởi một đối tượng.
97. Lớp nào sau đây là lớp cha của tất cả các lớp trong Java?
A. `Class`
B. `Object`
C. `System`
D. `Main`
98. Trong Java, cơ chế xử lý ngoại lệ (exception handling) được thực hiện thông qua các khối `try`, `catch` và `finally`. Khối `finally` luôn được thực thi khi nào?
A. Chỉ khi một ngoại lệ được ném ra.
B. Chỉ khi không có ngoại lệ nào được ném ra.
C. Luôn luôn, bất kể có ngoại lệ được ném ra hay không.
D. Chỉ khi chương trình kết thúc thành công.
99. Trong Java, thuật ngữ ‘Covariance’ và ‘Contravariance’ liên quan đến vấn đề gì?
A. Xử lý ngoại lệ.
B. Generic và kiểu trả về của phương thức.
C. Quản lý bộ nhớ.
D. Kết nối cơ sở dữ liệu.
100. Đâu là sự khác biệt chính giữa `==` và phương thức `equals()` khi so sánh các đối tượng String trong Java?
A. `==` so sánh nội dung của chuỗi, trong khi `equals()` so sánh tham chiếu.
B. `==` so sánh tham chiếu của chuỗi, trong khi `equals()` so sánh nội dung.
C. Cả hai đều so sánh nội dung của chuỗi.
D. Cả hai đều so sánh tham chiếu của chuỗi.
101. Đâu là sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java?
A. `ArrayList` lưu trữ các phần tử trong bộ nhớ liền kề, trong khi `LinkedList` lưu trữ các phần tử trong các nút được liên kết.
B. `ArrayList` hỗ trợ truy cập ngẫu nhiên nhanh hơn, trong khi `LinkedList` hỗ trợ chèn và xóa phần tử ở giữa danh sách nhanh hơn.
C. Cả hai đáp án trên.
D. `ArrayList` là bất biến, trong khi `LinkedList` là khả biến.
102. Trong Java, Dependency Inversion Principle (DIP) là gì?
A. Các module cấp cao không nên phụ thuộc vào các module cấp thấp. Cả hai nên phụ thuộc vào abstraction.
B. Các module cấp thấp không nên phụ thuộc vào các module cấp cao. Cả hai nên phụ thuộc vào implementation.
C. Các module cấp cao nên phụ thuộc vào các module cấp thấp. Cả hai nên phụ thuộc vào implementation.
D. Không có sự phụ thuộc giữa các module.
103. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật để tạo các đối tượng độc lập.
B. Một kỹ thuật để cung cấp các phụ thuộc 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. Một kỹ thuật để quản lý bộ nhớ.
D. Một kỹ thuật để tối ưu hóa hiệu suất.
104. Functional Interface trong Java 8 là gì?
A. Một interface chỉ có một phương thức trừu tượng.
B. Một interface có nhiều phương thức trừu tượng.
C. Một interface không có phương thức nào.
D. Một interface chỉ chứa các biến hằng.
105. Đâu là điểm khác biệt chính giữa interface và abstract class trong Java?
A. Một lớp có thể triển khai nhiều interface, nhưng chỉ có thể kế thừa một abstract class.
B. Interface chỉ có thể chứa các phương thức trừu tượng, trong khi abstract class có thể chứa cả phương thức trừu tượng và phương thức cụ thể.
C. Các biến trong interface mặc định là `final` và `static`, trong khi các biến trong abstract class có thể là bất kỳ loại nào.
D. Tất cả các đáp án trên.
106. Trong Java, phương thức `equals()` được sử dụng để so sánh hai đối tượng. Điều gì xảy ra nếu bạn không ghi đè phương thức `equals()` trong một lớp?
A. Hai đối tượng sẽ luôn được coi là bằng nhau.
B. Hai đối tượng sẽ luôn được coi là khác nhau.
C. Phương thức `equals()` sẽ so sánh tham chiếu của hai đối tượng, tương đương với toán tử `==`.
D. Một ngoại lệ sẽ được ném ra.
107. Trong Java, JRE, JDK và JVM là gì? Mối quan hệ giữa chúng như thế nào?
A. JVM là một phần của JRE, và JRE là một phần của JDK.
B. JDK là một phần của JRE, và JRE là một phần của JVM.
C. JRE là một phần của JDK, và JDK là một phần của JVM.
D. Chúng là ba khái niệm hoàn toàn độc lập.
108. Đâu là mục đích của garbage collection trong Java?
A. Để tối ưu hóa hiệu suất của chương trình.
B. Để giải phóng bộ nhớ mà các đối tượng không còn được tham chiếu đến.
C. Để ngăn chặn tràn bộ nhớ.
D. Tất cả các đáp án trên.
109. Trong Java 8, Stream API được sử dụng để làm gì?
A. Để tạo giao diện người dùng đồ họa.
B. Để thực hiện các thao tác trên tập hợp dữ liệu theo kiểu hàm.
C. Để kết nối với cơ sở dữ liệu.
D. Để quản lý bộ nhớ.
110. Java Reflection là gì?
A. Khả năng kiểm tra và sửa đổi hành vi của một lớp hoặc đối tượng tại thời gian chạy.
B. Kỹ thuật tạo bản sao của đối tượng.
C. Phương pháp tối ưu hóa mã nguồn.
D. Cách thức bảo mật ứng dụng Java.
111. Mục đích chính của từ khóa `static` trong Java là gì?
A. Để ngăn chặn một lớp được khởi tạo.
B. Để tạo một biến hoặc phương thức thuộc về lớp chứ không phải một thể hiện của lớp.
C. Để chỉ định rằng một biến là hằng số.
D. Để cho phép đa kế thừa.
112. Trong Java, thuật ngữ ‘garbage’ trong ‘garbage collection’ dùng để chỉ điều gì?
A. Các đối tượng không hợp lệ.
B. Các đối tượng không còn được chương trình sử dụng.
C. Các đối tượng gây ra lỗi trong chương trình.
D. Các đối tượng có kích thước quá lớn.
113. Trong Java, Singleton pattern là gì?
A. Một pattern để tạo nhiều thể hiện của một lớp.
B. Một pattern để đảm bảo rằng một lớp chỉ có một thể hiện duy nhất và cung cấp một điểm truy cập toàn cục đến thể hiện đó.
C. Một pattern để tạo các lớp con của một lớp.
D. Một pattern để quản lý bộ nhớ.
114. Trong Java, mục đích của từ khóa `volatile` là gì?
A. Để đảm bảo rằng một biến được lưu trữ trong bộ nhớ cache.
B. Để đảm bảo rằng một biến được đọc trực tiếp từ bộ nhớ chính, không phải từ cache của thread.
C. Để tạo một biến hằng số.
D. Để tạo một thread.
115. EJB (Enterprise JavaBeans) là gì?
A. Một framework để phát triển ứng dụng web.
B. Một kiến trúc thành phần phía máy chủ cho việc xây dựng các ứng dụng doanh nghiệp.
C. Một thư viện để tạo giao diện người dùng đồ họa.
D. Một công cụ để quản lý bộ nhớ.
116. ORM (Object-Relational Mapping) là gì và nó được sử dụng để làm gì trong Java?
A. Một kỹ thuật để ánh xạ các đối tượng Java với các bảng trong cơ sở dữ liệu quan hệ.
B. Một kỹ thuật để tối ưu hóa hiệu suất của chương trình.
C. Một kỹ thuật để bảo mật ứng dụng.
D. Một kỹ thuật để tạo giao diện người dùng đồ họa.
117. Trong Java, thread là gì?
A. Một chương trình độc lập có thể chạy song song với các chương trình khác.
B. Một luồng thực thi duy nhất trong một chương trình.
C. Một cách để tạo nhiều bản sao của một đối tượng.
D. Một kỹ thuật để nén dữ liệu.
118. Trong Java, final class là gì?
A. Một lớp không thể có bất kỳ phương thức nào.
B. Một lớp không thể được kế thừa.
C. Một lớp chỉ có thể có các biến final.
D. Một lớp không thể được sửa đổi sau khi được tạo.
119. Đâu là sự khác biệt giữa checked exception và unchecked exception trong Java?
A. Checked exception phải được xử lý hoặc khai báo trong phương thức, trong khi unchecked exception thì không.
B. Unchecked exception phải được xử lý hoặc khai báo trong phương thức, trong khi checked exception thì không.
C. Checked exception xảy ra khi có lỗi cú pháp, trong khi unchecked exception xảy ra khi có lỗi logic.
D. Không có sự khác biệt giữa hai loại exception này.
120. JDBC (Java Database Connectivity) được sử dụng để làm gì?
A. Để tạo giao diện người dùng đồ họa.
B. Để kết nối và tương tác với cơ sở dữ liệu.
C. Để thực hiện các phép toán số học.
D. Để quản lý bộ nhớ.
121. Phương thức nào sau đây được gọi tự động khi một đối tượng được tạo ra?
A. main()
B. finalize()
C. constructor()
D. toString()
122. Trong Java, kiểu dữ liệu nào được sử dụng để lưu trữ giá trị boolean?
A. int
B. char
C. boolean
D. string
123. Trong Java, Stream API được sử dụng để làm gì?
A. Để quản lý bộ nhớ.
B. Để xử lý dữ liệu tuần tự (sequentially) hoặc song song (in parallel) từ các nguồn dữ liệu khác nhau.
C. Để tạo giao diện người dùng.
D. Để kết nối với cơ sở dữ liệu.
124. Đâu là đặc điểm của một phương thức `static` trong Java?
A. Nó có thể truy cập các biến instance của lớp.
B. Nó có thể được gọi trực tiếp trên lớp mà không cần tạo đối tượng.
C. Nó chỉ có thể được gọi từ bên trong lớp.
D. Nó không thể trả về giá trị.
125. Đâu là sự khác biệt giữa `StringBuilder` và `StringBuffer` trong Java?
A. `StringBuilder` an toàn luồng, trong khi `StringBuffer` thì không.
B. `StringBuffer` an toàn luồng, trong khi `StringBuilder` thì không.
C. `StringBuilder` chậm hơn `StringBuffer`.
D. Không có sự khác biệt.
126. Đâu là sự khác biệt giữa `throw` và `throws` trong Java?
A. `throw` dùng để khai báo một exception, còn `throws` dùng để ném một exception.
B. `throw` dùng để ném một exception, còn `throws` dùng để khai báo một exception có thể được ném bởi một phương thức.
C. Cả hai đều có thể sử dụng thay thế cho nhau.
D. `throw` dùng để xử lý exception, còn `throws` dùng để khai báo exception.
127. Mục đích của từ khóa `transient` trong Java là gì?
A. Để khai báo một biến là hằng số.
B. Để ngăn một biến được tuần tự hóa (serialized).
C. Để khai báo một biến chỉ có thể truy cập từ bên trong lớp.
D. Để khai báo một biến có thể truy cập từ bất kỳ đâu.
128. Đâu là cách khai báo một hằng số (constant) trong Java?
A. static int NUMBER = 10;
B. const int NUMBER = 10;
C. final int NUMBER = 10;
D. immutable int NUMBER = 10;
129. Exception nào sau đây là một checked exception trong Java?
A. NullPointerException
B. ArrayIndexOutOfBoundsException
C. IOException
D. IllegalArgumentException
130. Trong Java, phương thức `finalize()` được sử dụng để làm gì?
A. Để khởi tạo các biến instance.
B. Để giải phóng tài nguyên trước khi đối tượng bị garbage collected.
C. Để tạo một bản sao của đối tượng.
D. Để so sánh hai đối tượng.
131. Sự khác biệt chính giữa `==` và phương thức `.equals()` trong Java là gì?
A. `==` so sánh giá trị của các đối tượng, trong khi `.equals()` so sánh địa chỉ bộ nhớ.
B. `==` so sánh địa chỉ bộ nhớ của các đối tượng, trong khi `.equals()` so sánh nội dung của các đối tượng (nếu được ghi đè).
C. `==` chỉ có thể được sử dụng cho các kiểu dữ liệu nguyên thủy, trong khi `.equals()` chỉ có thể được sử dụng cho các đối tượng.
D. Không có sự khác biệt, cả hai đều thực hiện cùng một chức năng.
132. Trong Java, vòng lặp `do-while` khác với vòng lặp `while` như thế nào?
A. Vòng lặp `do-while` thực thi ít nhất một lần, trong khi vòng lặp `while` có thể không thực thi lần nào.
B. Vòng lặp `while` thực thi ít nhất một lần, trong khi vòng lặp `do-while` có thể không thực thi lần nào.
C. Vòng lặp `do-while` không cần điều kiện.
D. Không có sự khác biệt giữa hai loại vòng lặp này.
133. Trong Java, đặc điểm nào sau đây KHÔNG phải là một lợi ích của tính đóng gói (encapsulation)?
A. Tăng tính bảo mật bằng cách ẩn dữ liệu.
B. Cho phép kiểm soát quyền truy cập vào các thành viên của lớp.
C. Giảm sự phức tạp của mã bằng cách hiển thị tất cả các chi tiết triển khai.
D. Dễ dàng thay đổi triển khai bên trong của một lớp mà không ảnh hưởng đến các lớp khác.
134. Trong Java, từ khóa nào được sử dụng để ngăn một lớp bị kế thừa?
A. static
B. final
C. abstract
D. private
135. Interface trong Java có thể chứa những gì?
A. Chỉ các phương thức trừu tượng.
B. Chỉ các biến final static.
C. Các phương thức trừu tượng và các biến final static.
D. Các phương thức trừu tượng, các biến final static và các phương thức default (từ Java 8 trở lên).
136. Đâu là sự khác biệt giữa `HashSet` và `TreeSet` trong Java?
A. `HashSet` duy trì thứ tự chèn, trong khi `TreeSet` không.
B. `HashSet` không duy trì thứ tự, trong khi `TreeSet` duy trì thứ tự tăng dần của các phần tử.
C. `HashSet` cho phép các phần tử trùng lặp, trong khi `TreeSet` thì không.
D. `HashSet` an toàn luồng, trong khi `TreeSet` thì không.
137. Đâu là cách đúng để tạo một đối tượng `String` trong Java?
A. String str = ‘Hello’;
B. String str = new String(‘Hello’);
C. String str = “Hello”;
D. string str = “Hello”;
138. Trong Java, lambda expressions được giới thiệu từ phiên bản nào?
A. Java 5
B. Java 6
C. Java 7
D. Java 8
139. Phương thức `equals()` mặc định trong lớp `Object` so sánh hai đối tượng dựa trên điều gì?
A. Giá trị của các thuộc tính của đối tượng.
B. Địa chỉ bộ nhớ của đối tượng.
C. Loại của đối tượng.
D. Số lượng thuộc tính của đối tượng.
140. Đâu là lợi ích của việc sử dụng đa luồng (multithreading) trong Java?
A. Giảm mức tiêu thụ bộ nhớ.
B. Tăng tốc độ thực thi chương trình bằng cách thực hiện song song các tác vụ.
C. Đơn giản hóa việc gỡ lỗi.
D. Ngăn chặn lỗi tràn bộ nhớ.
141. Trong Java, ORM (Object-Relational Mapping) là gì?
A. Một kỹ thuật để tối ưu hóa truy vấn cơ sở dữ liệu.
B. Một kỹ thuật để ánh xạ dữ liệu giữa các đối tượng trong ứng dụng và các bảng trong cơ sở dữ liệu quan hệ.
C. Một kỹ thuật để tạo giao diện người dùng.
D. Một kỹ thuật để quản lý bộ nhớ.
142. Đâu là mục đích của annotations trong Java?
A. Để thêm comments vào mã.
B. Để cung cấp siêu dữ liệu (metadata) về mã, có thể được sử dụng bởi trình biên dịch hoặc runtime.
C. Để tối ưu hóa hiệu suất của mã.
D. Để mã hóa mã nguồn.
143. Trong Java, Dependency Injection (DI) là gì?
A. Một kỹ thuật để giảm sự phụ thuộc giữa các lớp bằng cách cung cấp các phụ thuộc của một lớp từ bên ngoài.
B. Một kỹ thuật để tăng sự phụ thuộc giữa các lớp.
C. Một kỹ thuật để tạo các đối tượng singleton.
D. Một kỹ thuật để quản lý bộ nhớ.
144. Trong Java, Mockito là gì?
A. Một framework để tạo giao diện người dùng.
B. Một thư viện mocking để viết unit test dễ dàng hơn.
C. Một công cụ để quản lý dự án.
D. Một công cụ để phân tích hiệu suất.
145. Lớp nào sau đây là lớp cha của tất cả các lớp trong Java?
A. Class
B. Object
C. System
D. Main
146. Đâu là mục đích chính của garbage collection trong Java?
A. Tối ưu hóa hiệu suất của chương trình.
B. Giải phóng bộ nhớ không còn được sử dụng bởi chương trình.
C. Ngăn chặn lỗi tràn bộ nhớ.
D. Quản lý các luồng (threads) trong chương trình.
147. Trong Java, từ khóa `synchronized` được sử dụng để làm gì?
A. Để tạo một luồng mới.
B. Để đồng bộ hóa việc truy cập vào một khối mã hoặc phương thức, ngăn chặn tình trạng race condition.
C. Để tạm dừng một luồng.
D. Để kết thúc một luồng.
148. Đâu là mục đích của phương thức `hashCode()` trong Java?
A. Để so sánh hai đối tượng.
B. Để trả về một mã băm (hash code) cho đối tượng, được sử dụng trong các cấu trúc dữ liệu hash-based như HashMap và HashSet.
C. Để in ra thông tin về đối tượng.
D. Để tạo một bản sao của đối tượng.
149. Trong Java, nguyên tắc SOLID nào nói về việc một lớp chỉ nên có một lý do duy nhất để thay đổi?
A. Single Responsibility Principle (SRP)
B. Open/Closed Principle (OCP)
C. Liskov Substitution Principle (LSP)
D. Interface Segregation Principle (ISP)
150. Đâu là sự khác biệt chính giữa `ArrayList` và `LinkedList` trong Java?
A. `ArrayList` nhanh hơn trong việc thêm/xóa phần tử ở đầu danh sách, trong khi `LinkedList` nhanh hơn trong việc truy cập phần tử ngẫu nhiên.
B. `ArrayList` sử dụng mảng động, trong khi `LinkedList` sử dụng danh sách liên kết đôi.
C. `ArrayList` có thể chứa các phần tử trùng lặp, trong khi `LinkedList` thì không.
D. `ArrayList` an toàn luồng, trong khi `LinkedList` thì không.