1. Trong phát triển ứng dụng web Java, Servlet container (ví dụ: Tomcat, Jetty) có vai trò chính nào sau đây?
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 thực thi cho Servlet.
C. Xử lý các yêu cầu từ cơ sở dữ liệu.
D. Cung cấp giao diện người dùng cho ứng dụng web.
2. Phương thức `doGet()` và `doPost()` trong Servlet được sử dụng để xử lý các loại request HTTP nào tương ứng?
A. `doGet()` cho POST request và `doPost()` cho GET request.
B. `doGet()` cho GET request và `doPost()` cho POST request.
C. Cả hai phương thức đều có thể xử lý cả GET và POST request tùy theo cấu hình.
D. `doGet()` cho request lấy dữ liệu từ server, `doPost()` cho request gửi dữ liệu lên server để xử lý.
3. JPA (Java Persistence API) là gì?
A. Một loại cơ sở dữ liệu NoSQL.
B. Một API đặc tả chuẩn cho việc quản lý persistence và ORM trong Java.
C. Một framework để xây dựng giao diện người dùng web bằng Java.
D. Một công cụ để kiểm thử hiệu năng ứng dụng web Java.
4. Maven hoặc Gradle là công cụ gì trong phát triển ứng dụng Java?
A. Công cụ để tạo giao diện người dùng.
B. Công cụ quản lý build, dependency, và project (build tools/dependency management/project management).
C. Công cụ để triển khai ứng dụng lên server.
D. Công cụ để kiểm thử hiệu năng ứng dụng.
5. JSP (JavaServer Pages) được biên dịch thành Servlet. Phát biểu nào sau đây mô tả đúng nhất mối quan hệ này?
A. Servlet được viết bằng JSP.
B. JSP là một loại Servlet đặc biệt.
C. Servlet là lớp cơ sở để xây dựng JSP.
D. JSP là một cách viết Servlet dễ dàng hơn, sau đó được chuyển đổi thành Servlet để thực thi.
6. Embedded server (ví dụ: Tomcat, Jetty embedded trong Spring Boot) có ưu điểm gì so với việc sử dụng standalone server?
A. Hiệu suất cao hơn.
B. Đơn giản hóa quá trình deployment (triển khai), ứng dụng có thể chạy độc lập (self-contained), dễ dàng đóng gói và di chuyển.
C. Bảo mật tốt hơn.
D. Dễ dàng cấu hình hơn.
7. Microservices architecture (kiến trúc microservices) có ưu điểm gì so với monolithic architecture (kiến trúc nguyên khối) trong phát triển ứng dụng web Java?
A. Đơn giản hóa việc phát triển và deployment.
B. Tăng tính độc lập, linh hoạt, khả năng mở rộng và khả năng chịu lỗi của ứng dụng; dễ dàng áp dụng công nghệ mới cho từng service.
C. Hiệu suất cao hơn do giảm overhead.
D. Bảo mật tốt hơn do phân tách thành nhiều service nhỏ.
8. Spring Boot giúp đơn giản hóa việc phát triển ứng dụng Spring như thế nào?
A. Thay thế hoàn toàn Spring MVC.
B. Cung cấp auto-configuration, embedded server và starters, giúp giảm thiểu cấu hình boilerplate.
C. Tăng cường bảo mật cho ứng dụng Spring.
D. Cung cấp công cụ debug mạnh mẽ hơn cho ứng dụng Java.
9. Logging (ghi log) quan trọng như thế nào trong ứng dụng web Java?
A. Chỉ quan trọng trong giai đoạn phát triển, không cần thiết khi ứng dụng chạy production.
B. Quan trọng trong cả phát triển và production để theo dõi hoạt động, debug lỗi, và giám sát hệ thống.
C. Chỉ cần thiết khi ứng dụng gặp lỗi, không cần logging thường xuyên.
D. Chỉ dùng để ghi lại thông tin người dùng.
10. XSS (Cross-Site Scripting) là loại tấn công web nào?
A. Tấn công từ chối dịch vụ (Denial of Service).
B. Tấn công giả mạo request (request forgery).
C. Tấn công tiêm nhiễm mã độc SQL (SQL Injection).
D. 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.
11. Unit testing và Integration testing khác nhau như thế nào trong kiểm thử ứng dụng web Java?
A. Unit testing kiểm thử toàn bộ ứng dụng, Integration testing kiểm thử từng module riêng lẻ.
B. Unit testing kiểm thử từng module/component riêng lẻ, Integration testing kiểm thử sự tương tác giữa các module.
C. Unit testing kiểm thử giao diện người dùng, Integration testing kiểm thử backend.
D. Unit testing chỉ kiểm thử lỗi syntax, Integration testing kiểm thử lỗi logic.
12. Phương thức HTTP nào thường được sử dụng để tạo mới một resource trên server trong RESTful API?
A. GET
B. POST
C. PUT
D. DELETE
13. Trong ngữ cảnh bảo mật ứng dụng web Java, `Authentication` và `Authorization` khác nhau như thế nào?
A. Authentication là xác định 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 định người dùng là ai.
C. Authentication là mã hóa dữ liệu, Authorization là giải mã dữ liệu.
D. Authentication là lưu trữ thông tin người dùng, Authorization là truy xuất thông tin người dùng.
14. Transaction trong cơ sở dữ liệu đảm bảo tính chất ACID nào?
A. Tính nhất quán (Consistency) và tính khả dụng (Availability).
B. Tính toàn vẹn (Integrity) và tính độc lập (Isolation).
C. Tính nguyên tử (Atomicity), tính nhất quán (Consistency), tính độc lập (Isolation), và tính bền vững (Durability) - ACID.
D. Tính bảo mật (Security), tính tin cậy (Reliability), tính khả mở rộng (Scalability), và tính hiệu năng (Performance).
15. Websocket được sử dụng khi nào trong phát triển ứng dụng web Java?
A. Khi cần giao tiếp HTTP thông thường.
B. Khi cần giao tiếp real-time, hai chiều (bidirectional) giữa client và server, ví dụ: chat application, game online, dashboard thời gian thực.
C. Khi cần tải file lớn từ server về client.
D. Khi cần bảo mật thông tin truyền tải.
16. ORM (Object-Relational Mapping) framework (ví dụ: Hibernate, JPA) giúp ích gì trong phát triển ứng dụng web Java?
A. Tăng tốc độ biên dịch mã Java.
B. Đơn giản hóa việc tương tác với cơ sở dữ liệu bằng cách ánh xạ đối tượng Java với bảng trong cơ sở dữ liệu.
C. Cải thiện bảo mật cho ứng dụng web.
D. Tự động tạo giao diện người dùng từ cơ sở dữ liệu.
17. CSRF (Cross-Site Request Forgery) là loại tấn công web nào?
A. Tấn công từ chối dịch vụ (Denial of Service).
B. Tấn công giả mạo request (request forgery) lợi dụng session đã xác thực của người dùng.
C. Tấn công tiêm nhiễm mã độc SQL (SQL Injection).
D. Tấn công chèn script độc hại vào trang web (Cross-Site Scripting).
18. Dependency Injection (DI) trong Spring Framework mang lại lợi ích chính nào?
A. Tăng tốc độ thực thi ứng dụng.
B. Giảm sự phụ thuộc giữa các thành phần (loose coupling), giúp code dễ bảo trì và kiểm thử hơn.
C. Tự động quản lý session và cookie.
D. Đơn giản hóa việc cấu hình cơ sở dữ liệu.
19. Load balancing (cân bằng tải) có vai trò gì trong hệ thống web quy mô lớn?
A. Tăng tốc độ truy cập cơ sở dữ liệu.
B. Phân phối traffic (lưu lượng truy cập) đến nhiều server, giúp tăng khả năng chịu tải, tính sẵn sàng và hiệu năng của ứng dụng.
C. Cải thiện bảo mật cho ứng dụng web.
D. Đơn giản hóa quá trình deployment.
20. Trong Spring MVC, DispatcherServlet đóng vai trò trung tâm. Chức năng chính của DispatcherServlet là gì?
A. Quản lý kết nối cơ sở dữ liệu.
B. Xử lý các request đến và điều phối chúng đến các handler (controller) phù hợp.
C. Biên dịch JSP pages thành Servlet.
D. Cung cấp các tính năng bảo mật cho ứng dụng.
21. JDBC (Java Database Connectivity) là API cho phép ứng dụng Java làm gì?
A. Xây dựng giao diện người dùng web.
B. Kết nối và tương tác với cơ sở dữ liệu quan hệ.
C. Quản lý session trong ứng dụng web.
D. Triển khai ứng dụng web lên server.
22. Session trong ứng dụng web Java được dùng để làm gì?
A. Lưu trữ dữ liệu cố định của ứng dụng.
B. Lưu trữ thông tin tạm thời về tương tác của một người dùng cụ thể với ứng dụng qua nhiều request.
C. Tối ưu hóa hiệu suất truy vấn cơ sở dữ liệu.
D. Quản lý quyền truy cập vào các tài nguyên của ứng dụng.
23. CDN (Content Delivery Network) giúp ích gì cho ứng dụng web?
A. Tăng cường bảo mật cho backend server.
B. Phân phối nội dung tĩnh (ví dụ: hình ảnh, CSS, JavaScript) từ các server gần với người dùng, giúp giảm độ trễ và tăng tốc độ tải trang.
C. Quản lý phiên làm việc của người dùng.
D. Cân bằng tải cho server ứng dụng.
24. Cookie và Session khác nhau cơ bản ở điểm nào?
A. Cookie được lưu ở server, Session được lưu ở client.
B. Cookie được lưu ở client, Session được lưu ở server.
C. Cookie dùng để lưu trữ dữ liệu phiên làm việc, Session dùng để lưu trữ dữ liệu người dùng.
D. Cookie chỉ dùng được trong JSP, Session chỉ dùng được trong Servlet.
25. Filter trong Servlet dùng để làm gì?
A. Tạo ra giao diện người dùng động.
B. Biên dịch JSP thành Servlet.
C. Interceptors (bộ chặn) các request và response, cho phép xử lý request trước khi đến Servlet và response trước khi gửi về client.
D. Quản lý session của người dùng.
26. Thymeleaf là gì trong ngữ cảnh phát triển web Java?
A. Một ORM framework.
B. Một template engine phía server (server-side template engine) cho phép tạo ra HTML động.
C. Một framework để xây dựng RESTful API.
D. Một thư viện JavaScript để xử lý giao diện người dùng.
27. JSON (JavaScript Object Notation) thường được sử dụng trong web service để làm gì?
A. Định nghĩa giao diện người dùng.
B. Trao đổi dữ liệu giữa client và server.
C. Truy vấn cơ sở dữ liệu.
D. Quản lý session.
28. Trong kiến trúc MVC (Model-View-Controller) áp dụng cho phát triển web Java (ví dụ: Spring MVC), thành phần `Controller` đảm nhiệm vai trò gì?
A. Hiển thị dữ liệu cho người dùng.
B. Lưu trữ và quản lý dữ liệu của ứng dụng.
C. Xử lý logic nghiệp vụ và điều phối tương tác giữa Model và View.
D. Định nghĩa giao diện người dùng của ứng dụng.
29. RESTful web service là gì?
A. Một loại cơ sở dữ liệu NoSQL.
B. Một kiến trúc thiết kế cho việc xây dựng các web service tuân theo các nguyên tắc của REST (Representational State Transfer).
C. Một framework Java để phát triển ứng dụng web.
D. Một giao thức để truyền tải dữ liệu giữa client và server, thay thế cho HTTP.
30. Annotation `@WebServlet(`/product`)` trong Servlet dùng để làm gì?
A. Khai báo Servlet này là một RESTful web service.
B. Định nghĩa URL pattern (đường dẫn) mà Servlet này sẽ xử lý các yêu cầu.
C. Khai báo Servlet này là một filter.
D. Chỉ định phương thức HTTP mà Servlet này hỗ trợ (GET, POST, ...).