1. Trong ngữ cảnh của Spring Framework, Dependency Injection (DI) là gì?
A. Một kỹ thuật để tạo ra các đối tượng singleton.
B. Một mẫu thiết kế trong đó các dependencies của một đối tượng được cung cấp cho nó thay vì đối tượng tự tạo ra chúng.
C. Một phương pháp để quản lý các transaction trong cơ sở dữ liệu.
D. Một cách để cấu hình bảo mật cho ứng dụng.
2. OAuth 2.0 là gì và nó được sử dụng để làm gì?
A. Là một giao thức để mã hóa dữ liệu.
B. Là một framework để phát triển ứng dụng web.
C. Là một giao thức ủy quyền cho phép ứng dụng của bên thứ ba truy cập vào tài nguyên của người dùng trên một dịch vụ khác mà không cần chia sẻ thông tin đăng nhập.
D. Là một công cụ để kiểm tra hiệu suất ứng dụng.
3. JSON (JavaScript Object Notation) thường được sử dụng để làm gì trong ứng dụng web Java?
A. Định nghĩa cấu trúc giao diện người dùng.
B. Truyền dữ liệu giữa client và server, đặc biệt trong các ứng dụng AJAX.
C. Xây dựng các truy vấn SQL.
D. Thực hiện các phép toán phức tạp.
4. Thế nào là Thymeleaf trong ngữ cảnh phát triển ứng dụng web Java?
A. Một ORM framework.
B. Một template engine cho phép tạo ra các trang web động bằng cách sử dụng các thuộc tính và biểu thức.
C. Một framework để phát triển RESTful API.
D. Một công cụ để kiểm tra hiệu suất ứng dụng.
5. CORS (Cross-Origin Resource Sharing) là gì và nó liên quan đến bảo mật ứng dụng web như thế nào?
A. Là một giao thức để mã hóa dữ liệu.
B. Là một cơ chế bảo mật trình duyệt cho phép hoặc từ chối các yêu cầu HTTP từ một origin khác, giúp ngăn chặn các tấn công XSS.
C. Là một công cụ để kiểm tra hiệu suất ứng dụng.
D. Là một framework để phát triển ứng dụng web.
6. Trong mô hình MVC (Model-View-Controller), thành phần nào chịu trách nhiệm xử lý logic nghiệp vụ và tương tác với cơ sở dữ liệu?
A. View
B. Controller
C. Model
D. DispatcherServlet
7. CSRF (Cross-Site Request Forgery) là gì và làm thế nào để ngăn chặn nó trong ứng dụng web Java?
A. Là một loại tấn công từ chối dịch vụ (DoS).
B. Là một loại tấn công mà kẻ tấn công gửi các yêu cầu giả mạo thay mặt cho người dùng đã xác thực, có thể ngăn chặn bằng cách sử dụng token đồng bộ hóa.
C. Là một loại tấn công SQL Injection.
D. Là một loại tấn công chiếm quyền điều khiển phiên (session hijacking).
8. Cookie và Session khác nhau như thế nào trong việc quản lý trạng thái của người dùng trong ứng dụng web Java?
A. Cookie được lưu trữ ở server, Session được lưu trữ ở client.
B. Cookie được lưu trữ ở client, Session được lưu trữ ở server và an toàn hơn.
C. Cookie và Session đều được lưu trữ ở client.
D. Cookie và Session đều được lưu trữ ở server.
9. JWT (JSON Web Token) là gì và nó được sử dụng để làm gì trong xác thực và ủy quyền?
A. Là một giao thức để truyền tải dữ liệu giữa client và server.
B. Là một tiêu chuẩn mở dựa trên JSON để tạo ra các token truy cập, thường được sử dụng để xác thực và ủy quyền người dùng.
C. Là một công cụ để kiểm tra bảo mật ứng dụng.
D. Là một framework để phát triển ứng dụng web.
10. CI/CD (Continuous Integration/Continuous Deployment) là gì và nó giúp ích như thế nào trong việc phát triển ứng dụng web Java?
A. Là một phương pháp để mã hóa dữ liệu.
B. Là một quy trình tự động hóa việc tích hợp, kiểm thử và triển khai ứng dụng, giúp giảm thiểu lỗi và tăng tốc độ phát hành.
C. Là một công cụ để kiểm tra bảo mật ứng dụng.
D. Là một framework để phát triển giao diện người dùng.
11. Cache (ví dụ: Redis, Memcached) được sử dụng để làm gì trong ứng dụng web Java?
A. Để lưu trữ dữ liệu người dùng.
B. Để lưu trữ dữ liệu tạm thời để tăng tốc độ truy cập và giảm tải cho cơ sở dữ liệu.
C. Để mã hóa dữ liệu.
D. Để quản lý phiên làm việc của người dùng.
12. XSS (Cross-Site Scripting) là gì và làm thế nào để ngăn chặn nó trong ứng dụng web Java?
A. Là một loại tấn công từ chối dịch vụ (DoS).
B. Là một loại tấn công mà kẻ tấn công chèn các đoạn mã độc hại vào trang web, có thể ngăn chặn bằng cách kiểm tra và mã hóa dữ liệu đầu vào và đầu ra.
C. Là một loại tấn công SQL Injection.
D. Là một loại tấn công chiếm quyền điều khiển phiên (session hijacking).
13. AOP (Aspect-Oriented Programming) là gì và nó giải quyết vấn đề gì trong phát triển ứng dụng web Java?
A. Là một kỹ thuật để tối ưu hóa hiệu suất của ứng dụng.
B. Là một phương pháp lập trình cho phép tách các mối quan tâm cắt ngang (cross-cutting concerns) như logging và authentication ra khỏi logic nghiệp vụ chính.
C. Là một cách để quản lý các phiên làm việc của người dùng.
D. Là một kỹ thuật để tạo ra các giao diện người dùng động.
14. WebSockets là gì và nó được sử dụng để làm gì trong ứng dụng web Java?
A. Là một giao thức để truyền tải dữ liệu tĩnh.
B. Là một giao thức bidirectional (full-duplex) cho phép giao tiếp thời gian thực giữa client và server.
C. Là một công cụ để kiểm tra bảo mật ứng dụng.
D. Là một framework để phát triển ứng dụng web.
15. Ưu điểm chính của việc sử dụng framework Spring trong phát triển ứng dụng web Java là gì?
A. Giảm độ phức tạp trong việc quản lý dependencies và cung cấp các tính năng như IoC và AOP.
B. Tăng tốc độ biên dịch mã nguồn.
C. Cung cấp giao diện người dùng đồ họa.
D. Hỗ trợ trực tiếp việc truy vấn cơ sở dữ liệu NoSQL.
16. Message Broker (ví dụ: RabbitMQ, Kafka) là gì và nó được sử dụng để làm gì trong kiến trúc microservices?
A. Là một công cụ để quản lý cơ sở dữ liệu.
B. Là một thành phần trung gian cho phép các microservices giao tiếp với nhau thông qua việc gửi và nhận tin nhắn.
C. Là một framework để phát triển giao diện người dùng.
D. Là một công cụ để kiểm tra hiệu suất ứng dụng.
17. Logging và Monitoring quan trọng như thế nào trong việc duy trì và gỡ lỗi ứng dụng web Java?
A. Chúng không quan trọng.
B. Logging và Monitoring cung cấp thông tin chi tiết về hoạt động của ứng dụng, giúp phát hiện và giải quyết các vấn đề một cách nhanh chóng.
C. Chúng chỉ quan trọng trong giai đoạn phát triển.
D. Chúng chỉ quan trọng đối với cơ sở dữ liệu.
18. Spring Boot khác gì so với Spring Framework?
A. Spring Boot là một phiên bản nhẹ hơn của Spring Framework.
B. Spring Boot cung cấp auto-configuration và giúp giảm cấu hình boilerplate, giúp phát triển ứng dụng nhanh chóng hơn so với Spring Framework.
C. Spring Boot là một framework hoàn toàn khác với Spring Framework.
D. Spring Boot chỉ hỗ trợ phát triển RESTful API, còn Spring Framework thì không.
19. Containerization (ví dụ: Docker) là gì và nó giúp ích như thế nào trong việc triển khai ứng dụng web Java?
A. Là một kỹ thuật để nén dữ liệu.
B. Là một phương pháp đóng gói ứng dụng và các dependencies của nó vào một container, giúp đảm bảo tính nhất quán và dễ dàng triển khai trên các môi trường khác nhau.
C. Là một công cụ để kiểm tra bảo mật ứng dụng.
D. Là một framework để phát triển ứng dụng web.
20. RESTful API là gì và nó khác gì so với SOAP?
A. RESTful là một giao thức truyền tải dữ liệu, SOAP là một kiến trúc phần mềm.
B. RESTful là một kiến trúc phần mềm sử dụng các phương thức HTTP để truy cập tài nguyên, SOAP là một giao thức dựa trên XML.
C. RESTful và SOAP đều là giao thức truyền tải dữ liệu.
D. RESTful và SOAP đều là kiến trúc phần mềm dựa trên XML.
21. JSP (JavaServer Pages) được biên dịch thành gì trước khi thực thi?
A. HTML
B. Servlet
C. JavaScript
D. XML
22. Load balancing là gì và nó được sử dụng để làm gì trong kiến trúc ứng dụng web Java?
A. Là một kỹ thuật để nén dữ liệu.
B. Là một phương pháp phân phối tải giữa nhiều server, giúp cải thiện hiệu suất và khả năng chịu tải của ứng dụng.
C. Là một công cụ để kiểm tra bảo mật ứng dụng.
D. Là một framework để phát triển giao diện người dùng.
23. Hibernate là gì và nó liên quan đến JPA như thế nào?
A. Hibernate là một container servlet.
B. Hibernate là một implementation của JPA, cung cấp các tính năng để ánh xạ các đối tượng Java vào cơ sở dữ liệu quan hệ.
C. Hibernate là một framework để phát triển giao diện người dùng.
D. Hibernate là một công cụ để quản lý dependencies.
24. Server-Sent Events (SSE) là gì và nó khác gì so với WebSockets?
A. SSE là một giao thức full-duplex, WebSockets là một giao thức half-duplex.
B. SSE là một giao thức unidirectional (server gửi dữ liệu đến client), WebSockets là một giao thức bidirectional (full-duplex).
C. SSE và WebSockets đều là giao thức full-duplex.
D. SSE và WebSockets đều là giao thức unidirectional.
25. Vai trò của DispatcherServlet trong Spring MVC là gì?
A. Quản lý kết nối cơ sở dữ liệu.
B. Xử lý các request đến, điều phối chúng đến các handler thích hợp và render view.
C. Thực hiện xác thực người dùng.
D. Cung cấp giao diện người dùng đồ họa.
26. Thế nào là REST controller trong Spring MVC?
A. Một controller chỉ có thể xử lý các request GET.
B. Một controller xử lý các request RESTful API và trả về dữ liệu ở định dạng như JSON hoặc XML.
C. Một controller chỉ có thể xử lý các request POST.
D. Một controller được sử dụng để quản lý các phiên làm việc của người dùng.
27. JPA (Java Persistence API) là gì và nó được sử dụng để làm gì?
A. Là một thư viện để tạo giao diện người dùng.
B. Là một đặc tả (specification) cho việc quản lý dữ liệu trong các ứng dụng Java, cung cấp một cách để ánh xạ các đối tượng Java vào cơ sở dữ liệu quan hệ.
C. Là một framework để phát triển ứng dụng web.
D. Là một công cụ để kiểm tra hiệu suất ứng dụng.
28. Servlet container (ví dụ: Tomcat) có vai trò gì trong việc phát triển ứng dụng web Java?
A. Biên dịch mã nguồn Java thành bytecode.
B. Quản lý vòng đời của Servlet và cung cấp môi trường runtime cho Servlet.
C. Cung cấp giao diện người dùng cho ứng dụng web.
D. Quản lý kết nối cơ sở dữ liệu.
29. ORM (Object-Relational Mapping) là gì và nó giúp ích như thế nào trong phát triển ứng dụng web Java?
A. Là kỹ thuật chuyển đổi dữ liệu giữa các định dạng khác nhau (ví dụ: JSON sang XML).
B. Là kỹ thuật ánh xạ giữa các đối tượng trong Java và các bảng trong cơ sở dữ liệu quan hệ, giúp đơn giản hóa việc truy cập và quản lý dữ liệu.
C. Là kỹ thuật tối ưu hóa hiệu suất của ứng dụng web.
D. Là kỹ thuật bảo mật ứng dụng web.
30. Thế nào là Inversion of Control (IoC) container trong Spring?
A. Một container chứa các servlet.
B. Một container quản lý các bean và dependencies của chúng, đảo ngược quyền kiểm soát việc tạo và quản lý đối tượng từ ứng dụng sang container.
C. Một container quản lý các transaction cơ sở dữ liệu.
D. Một container chứa các file cấu hình XML.