1. Để đồng bộ hóa truy cập vào một khối mã trong Java, từ khóa nào thường được sử dụng?
A. volatile
B. transient
C. synchronized
D. final
2. Trong ngữ cảnh bảo mật Java web application, CSRF (Cross-Site Request Forgery) là loại tấn công nào?
A. Tấn công từ chối dịch vụ (Denial of Service).
B. Tấn công chèn mã độc SQL (SQL Injection).
C. Tấn công giả mạo yêu cầu, lợi dụng phiên đăng nhập của người dùng để thực hiện các hành động không mong muốn trên web application.
D. Tấn công leo thang đặc quyền (Privilege Escalation).
3. ORM (Object-Relational Mapping) trong Java, ví dụ như Hibernate, giải quyết vấn đề gì?
A. Tăng tốc độ truy cập cơ sở dữ liệu.
B. Ánh xạ giữa đối tượng trong ngôn ngữ lập trình hướng đối tượng (Java) và bảng trong cơ sở dữ liệu quan hệ, giúp lập trình viên làm việc với cơ sở dữ liệu một cách tự nhiên hơn.
C. Bảo mật dữ liệu trong cơ sở dữ liệu.
D. Quản lý kết nối cơ sở dữ liệu.
4. Microservices architecture (kiến trúc vi dịch vụ) mang lại lợi ích chính nào so với monolithic architecture (kiến trúc nguyên khối)?
A. Giảm chi phí phần cứng.
B. Tăng tính ổn định và khả năng mở rộng, cho phép phát triển, triển khai và mở rộng các dịch vụ độc lập.
C. Đơn giản hóa việc phát triển và triển khai ứng dụng.
D. Tăng cường bảo mật hệ thống.
5. Trong Java, interface khác biệt với abstract class chủ yếu ở điểm nào?
A. Interface có thể chứa các phương thức có thân, abstract class thì không.
B. Một lớp có thể implements nhiều interface nhưng chỉ extends một abstract class.
C. Abstract class nhanh hơn interface về hiệu năng thực thi.
D. Interface hỗ trợ đa kế thừa, abstract class thì không.
6. Trong lập trình đa luồng Java, vấn đề 'race condition' xảy ra khi nào?
A. Khi hai hoặc nhiều luồng cố gắng truy cập vào cùng một tài nguyên dùng chung một cách không đồng bộ, và kết quả phụ thuộc vào thứ tự thực thi của các luồng.
B. Khi một luồng chờ đợi một tài nguyên mà không bao giờ được giải phóng.
C. Khi có quá nhiều luồng được tạo ra gây quá tải hệ thống.
D. Khi một luồng bị gián đoạn do ngoại lệ.
7. Mục đích chính của từ khóa `static` trong Java là gì?
A. Tạo ra các biến cục bộ.
B. Khai báo các biến hằng số.
C. Tạo ra các thành viên lớp (class members) thuộc về lớp chứ không phải đối tượng.
D. Ngăn chặn việc kế thừa lớp.
8. Phương thức nào sau đây được gọi tự động khi một đối tượng của lớp được tạo ra trong Java?
A. finalize()
B. toString()
C. constructor
D. getter()
9. Docker và Kubernetes thường được sử dụng trong Java microservices để làm gì?
A. Phát triển giao diện người dùng.
B. Quản lý cơ sở dữ liệu.
C. Containerization và orchestration các ứng dụng vi dịch vụ, giúp đóng gói, triển khai và quản lý các dịch vụ một cách hiệu quả.
D. Tối ưu hóa mã nguồn Java.
10. Phương thức `equals()` và `hashCode()` trong Java được sử dụng để làm gì trong các Collection như `HashSet` và `HashMap`?
A. So sánh tốc độ truy cập và bộ nhớ sử dụng.
B. Xác định thứ tự sắp xếp của các phần tử.
C. Xác định tính bằng nhau của các đối tượng và tối ưu hóa việc tìm kiếm trong Collection.
D. Kiểm tra kiểu dữ liệu của các phần tử trong Collection.
11. Phương thức `main()` trong Java có kiểu trả về nào?
A. int
B. String
C. void
D. boolean
12. Trong Java, từ khóa nào được sử dụng để tạo một đối tượng từ một lớp?
A. extends
B. implements
C. new
D. this
13. Servlet trong Java EE được sử dụng để phát triển loại ứng dụng web nào?
A. Ứng dụng web phía client.
B. Ứng dụng web phía server, xử lý request và response HTTP.
C. Ứng dụng desktop.
D. Ứng dụng mobile.
14. Annotation (chú thích) trong Java được sử dụng để làm gì?
A. Thay thế cho comment trong mã nguồn.
B. Cung cấp siêu dữ liệu (metadata) về mã nguồn, có thể được sử dụng bởi compiler, JVM hoặc các framework.
C. Tối ưu hóa hiệu suất chương trình.
D. Kiểm soát truy cập vào các thành viên của lớp.
15. Sự khác biệt giữa `ArrayList` và `LinkedList` trong Java là gì về hiệu suất khi thực hiện thao tác chèn/xóa phần tử ở giữa danh sách?
A. `ArrayList` nhanh hơn vì truy cập phần tử bằng chỉ số nhanh.
B. `LinkedList` nhanh hơn vì chỉ cần thay đổi liên kết giữa các nút, không cần dịch chuyển phần tử.
C. Cả hai đều có hiệu suất tương đương.
D. Tùy thuộc vào kích thước của danh sách.
16. Trong Java, kiểu dữ liệu nguyên thủy nào sau đây được sử dụng để lưu trữ số nguyên?
A. float
B. double
C. int
D. char
17. Framework Spring trong Java được biết đến với tính năng chính nào?
A. Phát triển ứng dụng mobile đa nền tảng.
B. Hỗ trợ dependency injection (DI) và aspect-oriented programming (AOP) để xây dựng ứng dụng doanh nghiệp linh hoạt và dễ bảo trì.
C. Tối ưu hóa hiệu suất JVM.
D. Quản lý bộ nhớ tự động.
18. Đoạn mã Java sau in ra kết quả gì: `System.out.println(5 + '5');`
A. 10
B. 55
C. Lỗi biên dịch
D. 5 + '5'
19. Serialization trong Java là quá trình gì?
A. Chuyển đổi mã nguồn Java sang bytecode.
B. Chuyển đổi một đối tượng Java thành một chuỗi byte để lưu trữ hoặc truyền tải.
C. Mã hóa dữ liệu để bảo mật.
D. Giải nén dữ liệu để tiết kiệm bộ nhớ.
20. Phương thức `toString()` trong Java có mục đích chính là gì?
A. Chuyển đổi một đối tượng thành kiểu String.
B. So sánh hai đối tượng String.
C. Trả về mã hash code của đối tượng.
D. Kiểm tra xem một đối tượng có phải là String hay không.
21. Trong Java, toán tử nào được sử dụng để gán giá trị cho một biến?
22. Khái niệm nào sau đây mô tả việc một lớp con kế thừa các thuộc tính và phương thức từ lớp cha trong Java?
A. Đóng gói (Encapsulation)
B. Đa hình (Polymorphism)
C. Kế thừa (Inheritance)
D. Trừu tượng (Abstraction)
23. Java Stream API được thiết kế để làm gì?
A. Quản lý luồng vào/ra (I/O streams).
B. Xử lý dữ liệu tuần tự (sequential data processing).
C. Xử lý dữ liệu song song (parallel data processing) và các thao tác tập hợp (collection operations) một cách hiệu quả.
D. Xây dựng giao diện người dùng đồ họa.
24. Lambda expression trong Java 8 giúp đơn giản hóa việc viết mã cho loại nào sau đây?
A. Vòng lặp for.
B. Xử lý ngoại lệ.
C. Functional interface (interface hàm).
D. Đa luồng.
25. Trong Java Collection Framework, interface nào là gốc của cấu trúc phân cấp?
A. List
B. Set
C. Map
D. Collection
26. JDBC (Java Database Connectivity) được sử dụng để làm gì?
A. Xây dựng 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 từ ứng dụng Java.
C. Phát triển ứng dụng web phía server.
D. Quản lý bộ nhớ trong Java.
27. Trong Java, garbage collection là gì?
A. Một tiến trình dọn dẹp mã nguồn không sử dụng.
B. Một cơ chế quản lý bộ nhớ tự động, giải phóng bộ nhớ không còn được tham chiếu.
C. Một kỹ thuật tối ưu hóa hiệu suất chương trình.
D. Một loại exception được ném ra khi hết bộ nhớ.
28. Trong Java, exception handling được thực hiện thông qua các khối lệnh nào?
A. if-else
B. for-loop
C. try-catch-finally
D. switch-case
29. JSP (JavaServer Pages) khác biệt với Servlet ở điểm nào chính?
A. JSP nhanh hơn Servlet về hiệu suất.
B. JSP dễ dàng hơn trong việc tạo giao diện người dùng web (view) vì cho phép nhúng mã Java trực tiếp vào HTML.
C. Servlet hỗ trợ tốt hơn cho mô hình MVC.
D. Servlet có thể chạy trên nhiều server web hơn JSP.
30. Từ khóa nào trong Java được sử dụng để khai báo một lớp?
A. interface
B. class
C. package
D. import