Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Phát Triển Ứng Dụng Web Với Java - Đề 02
Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Phát Triển Ứng Dụng Web Với Java - Đề 02 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Trong phát triển ứng dụng web Java, Servlet đóng vai trò trung tâm trong việc xử lý yêu cầu từ client. Vòng đời (lifecycle) của một Servlet bao gồm những giai đoạn nào theo thứ tự chính xác?
- A. Khởi tạo (Initialization) -> Xử lý yêu cầu (Service) -> Hủy bỏ (Destruction)
- B. Khởi tạo (Initialization) -> Xử lý yêu cầu (Service) -> Hủy bỏ (Destruction)
- C. Xử lý yêu cầu (Service) -> Khởi tạo (Initialization) -> Hủy bỏ (Destruction)
- D. Khởi tạo (Initialization) -> Phản hồi (Response) -> Xử lý yêu cầu (Service) -> Hủy bỏ (Destruction)
Câu 2: Xét đoạn mã Servlet sau:
```java
@WebServlet(
- A. doGet()
- B. doPost()
- C. service()
- D. init()
Câu 3: JSP implicit object `session` được sử dụng để quản lý trạng thái của người dùng giữa các request. Phát biểu nào sau đây mô tả đúng nhất về phạm vi (scope) của đối tượng `session`?
- A. Có sẵn cho tất cả các trang JSP trong cùng một ứng dụng web.
- B. Chỉ có sẵn trong trang JSP hiện tại.
- C. Có sẵn cho tất cả các request từ cùng một trình duyệt của người dùng trong một khoảng thời gian nhất định.
- D. Chỉ có sẵn trong request hiện tại và sẽ bị hủy sau khi response được gửi đi.
Câu 4: Trong JSP, thẻ `
A. Chuyển hướng (redirect) trình duyệt đến trang `header.jsp`.
B. Chèn nội dung của trang `header.jsp` vào trang JSP hiện tại tại thời điểm request.
C. Truyền tham số đến trang `header.jsp`.
D. Import các class Java được định nghĩa trong `header.jsp`.
Câu 5: Mô hình MVC (Model-View-Controller) là một pattern thiết kế phổ biến trong phát triển ứng dụng web. Thành phần "Controller" trong MVC có trách nhiệm chính nào?
- A. Lưu trữ và quản lý dữ liệu của ứng dụng.
- B. Hiển thị dữ liệu cho người dùng và tương tác với người dùng.
- C. Xử lý các yêu cầu liên quan đến database.
- D. Xử lý yêu cầu từ người dùng, tương tác với Model để lấy dữ liệu, và chọn View phù hợp để trả về response.
Câu 6: HTTP method nào sau đây thường được sử dụng khi client gửi dữ liệu lên server để tạo mới một tài nguyên (ví dụ: đăng ký tài khoản mới)?
- A. GET
- B. POST
- C. PUT
- D. DELETE
Câu 7: HTTP status code `404 Not Found` có nghĩa là gì?
- A. Lỗi server xảy ra khi xử lý yêu cầu.
- B. Yêu cầu từ client không hợp lệ.
- C. Server đã nhận được yêu cầu, nhưng không tìm thấy tài nguyên được yêu cầu trên server.
- D. Client không có quyền truy cập vào tài nguyên được yêu cầu.
Câu 8: Cơ chế Session trong HTTP là stateless, vậy cookie được sử dụng để làm gì trong quản lý session?
- A. Lưu trữ session ID trên trình duyệt của client để server có thể nhận biết các request từ cùng một session.
- B. Theo dõi hành vi người dùng trên website.
- C. Tăng tốc độ tải trang bằng cách lưu trữ cache trên client.
- D. Xác thực người dùng và bảo mật thông tin.
Câu 9: JDBC (Java Database Connectivity) API đượ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 (UI) cho ứng dụng web.
- B. Triển khai logic nghiệp vụ (business logic) trên server.
- C. Kết nối và tương tác với các hệ quản trị cơ sở dữ liệu (DBMS) từ ứng dụng Java.
- D. Đảm bảo an ninh cho ứng dụng web.
Câu 10: ORM (Object-Relational Mapping) framework như Hibernate giúp giải quyết vấn đề gì trong phát triển ứng dụng web Java?
- A. Tăng hiệu năng (performance) của ứng dụng web.
- B. Giảm sự phức tạp khi làm việc với database bằng cách ánh xạ các đối tượng Java với các bảng trong database.
- C. Cải thiện tính bảo mật của ứng dụng web.
- D. Đơn giản hóa việc thiết kế giao diện người dùng.
Câu 11: Trong ngữ cảnh bảo mật ứng dụng web, thuật ngữ "SQL Injection" đề cập đến 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 giả mạo request (Cross-Site Request Forgery).
- C. Tấn công cross-site scripting (XSS).
- D. Tấn công bằng cách chèn mã SQL độc hại vào các truy vấn database.
Câu 12: Web server (ví dụ: Tomcat, Jetty) có vai trò gì trong kiến trúc ứng dụng web Java?
- A. Lưu trữ dữ liệu của ứng dụng web.
- B. Tiếp nhận request từ client, xử lý request, và trả về response, đồng thời cung cấp môi trường để chạy ứng dụng web Java.
- C. Hiển thị giao diện người dùng cho ứng dụng web.
- D. Công cụ để phát triển và debug ứng dụng web.
Câu 13: JPA (Java Persistence API) là một specification trong Java EE (Jakarta EE). JPA cung cấp giải pháp cho vấn đề nào?
- A. Xây dựng web services RESTful.
- B. Đảm bảo an ninh cho ứng dụng web Java EE.
- C. Quản lý persistence (lưu trữ dữ liệu) trong ứng dụng Java EE, cung cấp một ORM standard.
- D. Xây dựng giao diện người dùng web động.
Câu 14: Dependency Injection (DI) là một nguyên tắc thiết kế quan trọng trong Spring Framework. DI mang lại lợi ích chính nào?
- A. Tăng hiệu năng (performance) của ứng dụng.
- B. Giảm sự phụ thuộc (coupling) giữa các thành phần và tăng khả năng kiểm thử (testability).
- C. Tăng cường bảo mật cho ứng dụng.
- D. Đơn giản hóa việc phát triển giao diện người dùng.
Câu 15: Spring MVC framework là một module của Spring Framework, được sử dụng để phát triển ứng dụng web theo mô hình MVC. Thành phần nào trong Spring MVC đóng vai trò là Controller?
- A. @Controller class
- B. ViewResolver
- C. DispatcherServlet
- D. HandlerInterceptor
Câu 16: RESTful web services thường sử dụng định dạng dữ liệu nào để trao đổi thông tin giữa client và server?
- A. HTML
- B. JSON hoặc XML
- C. CSV
- D. Dữ liệu binary thuần túy
Câu 17: Asynchronous request (ví dụ: AJAX) trong ứng dụng web có lợi ích chính nào đối với trải nghiệm người dùng?
- A. Tăng hiệu năng (performance) của server.
- B. Tăng cường bảo mật cho ứng dụng.
- C. Cải thiện trải nghiệm người dùng bằng cách cho phép cập nhật một phần trang web mà không cần tải lại toàn bộ trang.
- D. Giảm tải cho server.
Câu 18: Trong ngữ cảnh Java web application deployment, file WAR (Web Application Archive) là gì?
- A. Một file archive chứa tất cả các thành phần của một ứng dụng web Java (Servlets, JSPs, class files, resources, etc.) để deployment.
- B. Một file chứa thư viện Java (Java Archive).
- C. Một file nén dữ liệu thông thường (ZIP).
- D. Một file archive chứa các thành phần của ứng dụng enterprise Java (Enterprise Application Archive).
Câu 19: Servlet container (ví dụ: Tomcat) cung cấp môi trường runtime cho Servlets. Servlet container quản lý những khía cạnh nào của Servlet?
- A. Quản lý database connections.
- B. Quản lý bảo mật ứng dụng.
- C. Quản lý giao diện người dùng.
- D. Quản lý vòng đời của Servlets, cung cấp môi trường runtime, và xử lý request/response.
Câu 20: Annotation `@WebServlet` trong Servlet 3.0+ được sử dụng để làm gì?
- A. Định nghĩa một filter cho Servlet.
- B. Khai báo và cấu hình URL mapping cho Servlet.
- C. Định nghĩa một listener cho Servlet context.
- D. Xử lý các lỗi xảy ra trong Servlet.
Câu 21: Trong JSP, Expression Language (EL) `${user.name}` được sử dụng để làm gì?
- A. Viết mã Java scriptlet.
- B. Khai báo biến trong JSP.
- C. Truy cập và hiển thị giá trị của thuộc tính `name` của đối tượng `user`.
- D. Định nghĩa một directive trong JSP.
Câu 22: Tag libraries trong JSP (ví dụ: JSTL) cung cấp lợi ích chính nào?
- A. Tăng hiệu năng (performance) của trang JSP.
- B. Cung cấp các thẻ tùy chỉnh để thực hiện các tác vụ phổ biến (ví dụ: lặp, điều kiện) trong JSP, giúp giảm mã Java trong JSP và tăng tính tái sử dụng.
- C. Cải thiện bảo mật cho trang JSP.
- D. Kết nối đến database từ trang JSP.
Câu 23: Servlet filter được sử dụng để làm gì trong ứng dụng web Java?
- A. Quản lý session của người dùng.
- B. Kết nối đến database.
- C. Intercepter các request và response để thực hiện các xử lý tiền/hậu xử lý (ví dụ: logging, authentication, encoding).
- D. Định tuyến request đến Servlet phù hợp.
Câu 24: Listener trong Servlet API (ví dụ: ServletContextListener) được sử dụng để làm gì?
- A. Lọc các request đến Servlet.
- B. Quản lý session.
- C. Đảm bảo an ninh cho ứng dụng.
- D. Lắng nghe và phản ứng với các sự kiện lifecycle của ứng dụng web (ví dụ: khởi tạo và hủy bỏ Servlet context, session).
Câu 25: Cross-Site Scripting (XSS) là một lỗ hổng bảo mật web. Biện pháp phòng ngừa XSS phổ biến nhất là gì?
- A. Sử dụng tường lửa (firewall) để chặn các request độc hại.
- B. Validate và encode output dữ liệu người dùng trước khi hiển thị trên trang web.
- C. Sử dụng HTTPS để mã hóa giao tiếp.
- D. Xác thực người dùng trước khi cho phép truy cập tài nguyên.
Câu 26: Trong Spring Security, khái niệm "Authentication" và "Authorization" khác nhau như thế nào?
- A. Authentication là xác thực danh tính người dùng (là ai), Authorization là xác định quyền truy cập của người dùng (được phép làm gì).
- B. Authentication là xác định quyền truy cập, Authorization là xác thực danh tính.
- C. Authentication và Authorization đều là quá trình mã hóa dữ liệu.
- D. Authentication và Authorization đều là cơ chế chống tấn công XSS.
Câu 27: Giả sử bạn có một ứng dụng web Java cần xử lý đồng thời nhiều request từ người dùng. Mô hình lập trình nào phù hợp nhất để đạt hiệu quả cao trong môi trường này?
- B. Multi-threading (đa luồng)
- C. Sequential processing (xử lý tuần tự)
- D. Batch processing (xử lý theo lô)
Câu 28: WebSockets cung cấp giao thức giao tiếp nào giữa client và server?
- A. Request-Response (yêu cầu-phản hồi) đơn hướng.
- B. Request-Response (yêu cầu-phản hồi) hai hướng.
- C. Song công (bidirectional), real-time.
- D. Truyền file (file transfer).
Câu 29: Trong kiến trúc microservices, mỗi microservice thường được thiết kế để đảm nhận một chức năng nghiệp vụ (business capability) cụ thể. Lợi ích chính của kiến trúc microservices là gì?
- A. Tăng hiệu năng (performance) tổng thể của ứng dụng.
- B. Tăng cường bảo mật toàn diện cho ứng dụng.
- C. Đơn giản hóa việc phát triển giao diện người dùng.
- D. Tăng tính linh hoạt, khả năng mở rộng (scalability), và dễ bảo trì (maintainability) của ứng dụng.
Câu 30: Containerization (ví dụ: Docker) mang lại lợi ích gì trong quá trình phát triển và triển khai ứng dụng web Java?
- A. Tăng tốc độ xử lý của ứng dụng web.
- B. Đảm bảo tính nhất quán của môi trường triển khai, đơn giản hóa quá trình deployment, và tăng tính cô lập giữa các ứng dụng.
- C. Cải thiện giao diện người dùng của ứng dụng web.
- D. Tăng cường bảo mật cho mã nguồn ứng dụng.