1. Maven hoặc Gradle là công cụ gì trong phát triển ứng dụng web Java?
A. Framework phát triển giao diện người dùng.
B. Công cụ quản lý build, dependency và lifecycle của project.
C. Servlet container.
D. Công cụ quản lý cơ sở dữ liệu.
2. Công nghệ nào sau đây thường được dùng để xây dựng RESTful API trong Java?
A. Java Applet.
B. Java Server Faces (JSF).
C. JAX-RS (Java API for RESTful Web Services).
D. Java Message Service (JMS).
3. JDBC (Java Database Connectivity) API được dùng để làm gì trong ứng dụng web Java?
A. Tạo giao diện người dùng web.
B. Xử lý các yêu cầu HTTP.
C. Kết nối và tương tác với cơ sở dữ liệu.
D. Quản lý session người dùng.
4. ViewState trong Java Server Faces (JSF) dùng để làm gì?
A. Lưu trữ cấu hình giao diện người dùng trên server.
B. Duy trì trạng thái của component và dữ liệu form giữa các request trong JSF.
C. Quản lý session người dùng.
D. Xác thực người dùng.
5. Filter trong Servlet dùng để làm gì?
A. Tạo giao diện người dùng động.
B. Thực hiện các xử lý trước và sau khi request đến Servlet, ví dụ: logging, authentication, compression.
C. Quản lý session.
D. Kết nối cơ sở dữ liệu.
6. ORM (Object-Relational Mapping) framework như Hibernate giúp ích gì cho việc phát triển ứng dụng web Java?
A. Tăng tốc độ xử lý CSS và JavaScript.
B. Giảm độ phức tạp khi làm việc với cơ sở dữ liệu bằng cách ánh xạ đối tượng Java với bảng trong database.
C. Cải thiện hiệu suất của Servlet container.
D. Tự động tạo giao diện người dùng từ database schema.
7. Trong phát triển ứng dụng web Java, Servlet container (như Tomcat) đóng vai trò chính nào?
A. Biên dịch mã nguồn Java thành bytecode.
B. Quản lý vòng đời Servlet và xử lý các yêu cầu HTTP.
C. Cung cấp giao diện người dùng cho ứng dụng web.
D. Kết nối ứng dụng web với cơ sở dữ liệu.
8. Microservices architecture có ưu điểm gì so với monolithic architecture trong phát triển ứng dụng web?
A. Đơn giản hóa quá trình phát triển ban đầu.
B. Tăng tốc độ build ứng dụng.
C. Tính linh hoạt, khả năng mở rộng và khả năng chịu lỗi cao hơn do các service độc lập có thể được phát triển, triển khai và scale riêng lẻ.
D. Giảm độ phức tạp của việc quản lý cơ sở dữ liệu.
9. XSS (Cross-Site Scripting) là loại tấn công web nguy hiểm như thế nào?
A. Gây ra mất dữ liệu trên server.
B. Cho phép kẻ tấn công chèn script độc hại vào trang web, thực thi trên trình duyệt của người dùng khác.
C. Làm sập server web.
D. Đánh cắp thông tin đăng nhập của server.
10. Trong ngữ cảnh RESTful API, phương thức HTTP nào thường được sử dụng để cập nhật một resource hiện có?
A. GET.
B. POST.
C. PUT.
D. DELETE.
11. Load balancer có vai trò gì trong kiến trúc ứng dụng web Java quy mô lớn?
A. Tăng tốc độ biên dịch mã Java.
B. Cung cấp giao diện người dùng cho ứng dụng.
C. Phân phối request đến các server khác nhau, cải thiện khả năng chịu tải và độ tin cậy của ứng dụng.
D. Quản lý cơ sở dữ liệu.
12. Ưu điểm của việc sử dụng JSP tag libraries (JSTL) trong JSP là gì?
A. Tăng tốc độ biên dịch JSP.
B. Cho phép nhúng trực tiếp mã Java vào JSP.
C. Cung cấp các tag dựng sẵn cho các tác vụ phổ biến như lặp, điều kiện, định dạng dữ liệu, giúp code JSP dễ đọc và bảo trì hơn.
D. Tự động tạo form HTML.
13. Trong Spring Security, `Authentication` và `Authorization` khác nhau như thế nào?
A. Authentication là xác thực người dùng là ai, Authorization là xác định người dùng được phép làm gì.
B. Authentication là xác định người dùng được phép làm gì, Authorization là xác thực người dùng là ai.
C. Authentication và Authorization là giống nhau, đều là xác thực người dùng.
D. Authentication và Authorization đều là quản lý session.
14. CDN (Content Delivery Network) giúp cải thiện hiệu suất ứng dụng web như thế nào?
A. Tăng tốc độ xử lý logic nghiệp vụ server-side.
B. Giảm tải cho cơ sở dữ liệu.
C. Phân phối nội dung tĩnh (ví dụ: hình ảnh, CSS, JavaScript) từ các server gần người dùng hơn, giảm latency và tăng tốc độ tải trang.
D. Cải thiện bảo mật cho ứng dụng web.
15. JSON (JavaScript Object Notation) thường được sử dụng cho mục đích gì trong ứng dụng web?
A. Định nghĩa layout trang web.
B. Trao đổi dữ liệu giữa client và server, đặc biệt trong AJAX và REST APIs.
C. Biên dịch mã nguồn Java.
D. Quản lý phiên làm việc.
16. Cookie và Session khác nhau cơ bản ở điểm nào?
A. Cookie được lưu ở server, Session lưu ở client.
B. Cookie dùng cho bảo mật, Session dùng cho quản lý trạng thái.
C. Cookie lưu ở client, Session lưu ở server.
D. Cookie chỉ dùng cho HTTP, Session cho HTTPS.
17. Web Service và RESTful API khác nhau như thế nào?
A. Web Service chỉ dùng XML, RESTful API chỉ dùng JSON.
B. Web Service là một khái niệm rộng hơn, RESTful API là một kiểu kiến trúc Web Service tuân theo các nguyên tắc của REST.
C. Web Service nhanh hơn RESTful API.
D. Web Service dễ bảo mật hơn RESTful API.
18. Session trong ứng dụng web Java thường được sử dụng để làm gì?
A. Lưu trữ dữ liệu cố định của ứng dụng.
B. Chia sẻ dữ liệu giữa các Servlet khác nhau.
C. Duy trì trạng thái của người dùng giữa các request.
D. Tăng tốc độ truy cập cơ sở dữ liệu.
19. JPA (Java Persistence API) là gì?
A. API để xây dựng giao diện người dùng web.
B. Một đặc tả (specification) cho ORM trong Java, định nghĩa cách các framework ORM nên hoạt động.
C. API cho RESTful web services.
D. API để quản lý session.
20. JSP (JavaServer Pages) được biên dịch thành gì trước khi thực thi trên server?
A. File HTML tĩnh.
B. Servlet.
C. Applet.
D. File JavaScript.
21. CSRF token được sử dụng để phòng chống loại tấn công nào?
A. SQL Injection.
B. Cross-Site Scripting (XSS).
C. Cross-Site Request Forgery (CSRF).
D. Denial of Service (DoS).
22. JDBC Connection Pool mang lại lợi ích gì cho ứng dụng web Java?
A. Tăng cường bảo mật kết nối cơ sở dữ liệu.
B. Cải thiện hiệu suất truy cập cơ sở dữ liệu bằng cách tái sử dụng kết nối đã được tạo sẵn.
C. Giảm tải cho server ứng dụng.
D. Đơn giản hóa cấu hình kết nối cơ sở dữ liệu.
23. CSRF (Cross-Site Request Forgery) là loại tấn công nào trong bảo mật web?
A. Tấn công từ chối dịch vụ (DoS).
B. Tấn công chèn mã SQL (SQL Injection).
C. Tấn công giả mạo yêu cầu từ người dùng đã xác thực.
D. Tấn công leo thang đặc quyền.
24. Docker containerization mang lại lợi ích gì trong việc triển khai ứng dụng web Java?
A. Tăng tốc độ phát triển giao diện người dùng.
B. Đóng gói ứng dụng và môi trường chạy của nó vào một container, đảm bảo tính nhất quán giữa các môi trường phát triển, test và production, đơn giản hóa quá trình triển khai.
C. Tự động tối ưu hóa truy vấn cơ sở dữ liệu.
D. Cải thiện bảo mật cho code Java.
25. HTTP Session hijacking là gì?
A. Tấn công từ chối dịch vụ (DoS) vào server.
B. Tấn công chiếm đoạt phiên làm việc của người dùng bằng cách đánh cắp session ID.
C. Tấn công chèn mã SQL.
D. Tấn công XSS.
26. Ưu điểm chính của việc sử dụng framework Spring MVC trong phát triển ứng dụng web Java là gì?
A. Tăng tốc độ biên dịch mã nguồn Java.
B. Cung cấp khả năng quản lý bộ nhớ tự động.
C. Phân tách rõ ràng các lớp Model, View, Controller, giúp code dễ bảo trì và mở rộng.
D. Hỗ trợ trực tiếp các truy vấn SQL phức tạp.
27. Annotation `@WebServlet` trong Servlet được sử dụng để làm gì?
A. Khai báo biến toàn cục trong Servlet.
B. Đăng ký Servlet với một URL pattern cụ thể mà không cần web.xml.
C. Chỉ định phương thức HTTP mà Servlet sẽ xử lý.
D. Xác định thời gian tồn tại của Servlet.
28. Trong RESTful API, status code `201 Created` có ý nghĩa gì?
A. Yêu cầu thành công.
B. Resource đã được tạo thành công.
C. Resource không tìm thấy.
D. Lỗi server.
29. Thành phần nào trong Spring MVC chịu trách nhiệm xử lý logic nghiệp vụ và tương tác với Model?
A. View.
B. Controller.
C. DispatcherServlet.
D. HandlerInterceptor.
30. Dependency Injection (DI) là gì và nó mang lại lợi ích gì trong Spring Framework?
A. Kỹ thuật để tối ưu hóa truy vấn cơ sở dữ liệu.
B. Một design pattern giúp giảm sự phụ thuộc giữa các component, tăng tính module hóa và khả năng test.
C. Cơ chế bảo mật để ngăn chặn tấn công XSS.
D. Công cụ để quản lý phiên làm việc của người dùng.