1. Sự khác biệt chính giữa synchronous và asynchronous request processing trong Servlet là gì?
A. Synchronous nhanh hơn asynchronous.
B. Synchronous xử lý request trên một thread duy nhất, block thread cho đến khi response trả về, asynchronous cho phép thread trả về pool và xử lý response sau khi có kết quả.
C. Synchronous an toàn hơn asynchronous về bảo mật.
D. Synchronous dễ cấu hình hơn asynchronous.
2. Trong ngữ cảnh bảo mật web, `Same-Origin Policy` (SOP) là gì và mục đích của nó là gì?
A. Chính sách giới hạn kích thước file được upload lên server.
B. Chính sách trình duyệt web ngăn chặn JavaScript code từ một origin (domain, protocol, port) truy cập tài nguyên từ một origin khác.
C. Chính sách server-side về việc xác thực request từ client.
D. Chính sách về việc mã hóa dữ liệu truyền giữa client và server.
3. Dependency Injection (DI) là gì và lợi ích của nó trong Spring Framework?
A. Kỹ thuật nén dữ liệu để giảm băng thông.
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à dễ test.
C. Cơ chế quản lý bộ nhớ tự động trong Java.
D. Phương pháp mã hóa dữ liệu để bảo mật.
4. Load balancing là gì và tại sao nó quan trọng trong ứng dụng web Java có lượng truy cập lớn?
A. Một kỹ thuật nén dữ liệu để giảm băng thông.
B. Phân phối traffic đến nhiều server để cải thiện hiệu suất, khả năng chịu lỗi và khả năng mở rộng.
C. Một phương pháp bảo mật để chống lại tấn công DDoS.
D. Một kỹ thuật cache dữ liệu để tăng tốc độ truy cập.
5. Thẻ `` trong JSP dùng để làm gì?
A. Khai báo một biến cục bộ trong JSP page.
B. Tạo hoặc truy cập một JavaBean instance và gán nó vào một biến.
C. Nhúng một file JSP khác vào trang hiện tại.
D. Định nghĩa một custom tag library.
6. Trong Spring MVC, DispatcherServlet đóng vai trò gì?
A. Quản lý kết nối cơ sở dữ liệu.
B. Là front controller, tiếp nhận tất cả requests và điều phối chúng đến các handlers phù hợp.
C. Xử lý logic nghiệp vụ chính của ứng dụng.
D. Render giao diện người dùng (view).
7. OAuth 2.0 là gì và nó giải quyết vấn đề gì trong bảo mật ứng dụng web?
A. Một thuật toán mã hóa dữ liệu.
B. Một framework ủy quyền (authorization framework), cho phép ứng dụng của bên thứ ba truy cập tài nguyên người dùng trên một dịch vụ khác mà không cần biết thông tin đăng nhập của người dùng.
C. Một giao thức xác thực (authentication protocol) mạnh mẽ.
D. Một phương pháp phòng chống tấn công XSS.
8. WebSockets khác biệt như thế nào so với HTTP truyền thống trong ứng dụng web Java?
A. WebSockets chỉ dùng cho bảo mật, HTTP cho truyền dữ liệu thông thường.
B. WebSockets cung cấp full-duplex communication (kênh giao tiếp hai chiều liên tục), HTTP là half-duplex (request-response).
C. WebSockets nhanh hơn HTTP về tốc độ truyền dữ liệu.
D. WebSockets chỉ hoạt động trên server-side Java, HTTP trên client-side.
9. Annotation `@WebServlet` trong Servlet Java dùng để làm gì?
A. Khai báo một class là một JavaBean.
B. Đánh dấu một class là một Servlet và định nghĩa URL mapping cho nó.
C. Chỉ định dependency injection cho Servlet.
D. Cấu hình kết nối cơ sở dữ liệu cho Servlet.
10. CSRF (Cross-Site Request Forgery) là loại tấn công web nào và làm thế nào để phòng tránh trong ứng dụng Java?
A. Tấn công từ chối dịch vụ (DoS).
B. Tấn công giả mạo request từ người dùng đã xác thực.
C. Tấn công SQL injection.
D. Tấn công XSS (Cross-Site Scripting).
11. Cookie trong ứng dụng web Java thường được sử dụng để làm gì?
A. Lưu trữ code JavaScript phía client.
B. Lưu trữ thông tin phía client (trên trình duyệt) để server có thể nhận biết và theo dõi người dùng.
C. Tăng tốc độ tải trang web bằng cách cache dữ liệu.
D. Quản lý phiên làm việc (session) trên server.
12. JSON (JavaScript Object Notation) thường được sử dụng để làm gì trong web services và RESTful APIs?
A. Định nghĩa cấu trúc cơ sở dữ liệu.
B. Trao đổi dữ liệu giữa client và server, đặc biệt là trong RESTful APIs.
C. Viết logic nghiệp vụ phía server.
D. Thiết kế giao diện người dùng web.
13. ViewState trong JSF (JavaServer Faces) dùng để giải quyết vấn đề gì của giao thức HTTP?
A. Bảo mật thông tin truyền trên mạng.
B. HTTP là giao thức stateless.
C. Tăng tốc độ truyền dữ liệu HTTP.
D. Kiểm soát truy cập vào tài nguyên server.
14. 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. Cung cấp môi trường runtime cho Servlets và quản lý lifecycle của chúng.
C. Quản lý kết nối cơ sở dữ liệu cho ứng dụng.
D. Xử lý các yêu cầu từ phía client và trả về giao diện người dùng.
15. RESTful API là gì và nguyên tắc thiết kế chính của nó là gì?
A. Một loại cơ sở dữ liệu NoSQL.
B. Một kiến trúc thiết kế cho web services, tập trung vào tài nguyên (resources) và các HTTP methods (GET, POST, PUT, DELETE).
C. Một framework để xây dựng giao diện người dùng web.
D. Một giao thức bảo mật cho truyền dữ liệu web.
16. Session trong ứng dụng web Java thường được dùng để làm gì?
A. Lưu trữ dữ liệu giao diện người dùng (UI).
B. Duy trì trạng thái của người dùng giữa các request.
C. Tăng tốc độ truy cập cơ sở dữ liệu.
D. Xác thực người dùng khi đăng nhập.
17. Sự khác biệt chính giữa `RequestDispatcher.forward()` và `RequestDispatcher.include()` trong Servlet là gì?
A. `forward()` chuyển quyền xử lý request sang resource khác, còn `include()` nhúng nội dung của resource khác vào response hiện tại.
B. `forward()` dùng cho HTTP GET request, `include()` dùng cho POST request.
C. `forward()` nhanh hơn `include()` về hiệu suất.
D. Không có sự khác biệt về chức năng, chỉ khác nhau về syntax.
18. Content Delivery Network (CDN) 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.
B. Cache nội dung tĩnh (images, CSS, JavaScript files) trên các server phân tán địa lý, giảm độ trễ và tăng tốc độ tải trang cho người dùng ở nhiều vị trí khác nhau.
C. Tối ưu hóa truy vấn cơ sở dữ liệu.
D. Bảo vệ ứng dụng khỏi tấn công SQL injection.
19. JSP (JavaServer Pages) được biên dịch thành gì trước khi thực thi trên server?
A. Applet Java.
B. Servlet Java.
C. Ứng dụng Web tĩnh.
D. Thư viện Java (JAR).
20. HTTP method nào thường được sử dụng để gửi dữ liệu lên server để tạo một tài nguyên mới?
A. GET
B. POST
C. PUT
D. DELETE
21. Spring Boot Actuator được sử dụng để làm gì trong ứng dụng Spring Boot?
A. Triển khai ứng dụng Spring Boot lên cloud.
B. Cung cấp endpoints để giám sát và quản lý ứng dụng Spring Boot (health checks, metrics, info).
C. Tự động cấu hình cơ sở dữ liệu cho ứng dụng Spring Boot.
D. Bảo mật ứng dụng Spring Boot.
22. ViewState có thể gây ra vấn đề gì về hiệu suất trong JSF nếu không được quản lý cẩn thận?
A. Tăng thời gian biên dịch JSP.
B. Tăng kích thước request/response, ảnh hưởng đến băng thông và thời gian tải trang.
C. Gây ra lỗi bảo mật XSS.
D. Làm chậm tốc độ kết nối cơ sở dữ liệu.
23. JPA (Java Persistence API) là gì và nó liên quan đến Hibernate như thế nào?
A. JPA là một framework ORM, Hibernate là một implementation của JPA.
B. Hibernate là một chuẩn API, JPA là một implementation của Hibernate.
C. JPA và Hibernate là hai framework ORM độc lập, không liên quan đến nhau.
D. JPA là một công cụ testing, Hibernate là framework để deploy ứng dụng.
24. ORM (Object-Relational Mapping) framework (như Hibernate) giúp ích gì trong phát triển ứng dụng Web Java?
A. Tăng tốc độ render trang web ở phía client.
B. Giảm độ phức tạp khi làm việc với cơ sở dữ liệu quan hệ bằng cách map object Java với bảng trong database.
C. Tự động scale ứng dụng web khi lượng truy cập tăng cao.
D. Cung cấp cơ chế bảo mật cho ứng dụng web.
25. Dependency Injection Container (ví dụ: Spring Container) quản lý lifecycle của các bean như thế nào?
A. Container chỉ tạo bean khi cần thiết và không quản lý lifecycle.
B. Container chịu trách nhiệm tạo, cấu hình, và hủy bỏ bean, quản lý toàn bộ lifecycle của bean.
C. Lifecycle của bean do developer tự quản lý, container không can thiệp.
D. Container chỉ quản lý dependency injection, còn lifecycle do garbage collector quản lý.
26. Sự khác biệt chính giữa JSP và Servlet là gì?
A. JSP dùng để xử lý logic nghiệp vụ, Servlet dùng để hiển thị giao diện.
B. JSP là Servlet đã được biên dịch, Servlet là mã nguồn cần biên dịch.
C. JSP tập trung vào presentation (view), Servlet tập trung vào control logic.
D. Không có sự khác biệt, JSP và Servlet là hoàn toàn giống nhau.
27. JDBC (Java Database Connectivity) được sử dụng để làm gì trong ứng dụng Web Java?
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.
C. Quản lý session của người dùng.
D. Triển khai ứng dụng web lên server.
28. Ưu điểm chính của việc sử dụng framework (như Spring MVC) trong phát triển ứng dụng Web Java là gì?
A. Tăng tốc độ biên dịch code Java.
B. Giảm kích thước file WAR khi deploy.
C. Cung cấp cấu trúc rõ ràng, giảm boilerplate code và tăng tốc độ phát triển.
D. Tự động tối ưu hóa hiệu suất cơ sở dữ liệu.
29. Transaction management trong Spring Framework giúp đảm bảo điều gì?
A. Bảo mật dữ liệu giao dịch.
B. Tính toàn vẹn dữ liệu (ACID properties) khi thực hiện các thao tác cơ sở dữ liệu.
C. Tăng tốc độ giao dịch cơ sở dữ liệu.
D. Quản lý session của người dùng trong giao dịch.
30. Ưu điểm của việc sử dụng template engine (ví dụ: Thymeleaf, FreeMarker) so với JSP trong Spring MVC là gì?
A. Template engine nhanh hơn JSP trong việc biên dịch.
B. Template engine thường dễ đọc và bảo trì hơn, tách biệt logic và presentation tốt hơn, và hỗ trợ tốt hơn cho non-web environments.
C. Template engine có thể tự động tối ưu hóa truy vấn cơ sở dữ liệu.
D. Template engine tích hợp sẵn các tính năng bảo mật mạnh mẽ hơn.