1. Trong Java web application, làm thế nào để xử lý ngoại lệ (exceptions) một cách hiệu quả để cung cấp thông tin hữu ích cho người dùng và ghi lại lỗi cho mục đích gỡ lỗi?
A. Chỉ cần in stack trace ra console.
B. Sử dụng trang lỗi tùy chỉnh (custom error page) để hiển thị thông báo thân thiện cho người dùng và ghi lại thông tin chi tiết về lỗi vào log file.
C. Bỏ qua tất cả các ngoại lệ.
D. Chỉ hiển thị mã lỗi HTTP cho người dùng.
2. 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. ORM là một kỹ thuật để tối ưu hóa hiệu suất cơ sở dữ liệu.
B. ORM là một kỹ thuật ánh xạ các đối tượng trong ứng dụng Java với các bảng trong cơ sở dữ liệu, giúp đơn giản hóa việc truy cập và quản lý dữ liệu.
C. ORM là một kỹ thuật để bảo mật ứng dụng web.
D. ORM là một kỹ thuật để tạo giao diện người dùng.
3. Servlet container, chẳng hạn như Tomcat, có vai trò chính 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. Cung cấp môi trường runtime cho servlets, quản lý vòng đời và xử lý các yêu cầu HTTP.
C. Quản lý kết nối cơ sở dữ liệu.
D. Xử lý các tác vụ front-end như rendering HTML và JavaScript.
4. Load balancing là gì và tại sao nó quan trọng trong việc triển khai ứng dụng web Java quy mô lớn?
A. Load balancing là một kỹ thuật để nén dữ liệu.
B. Load balancing là một kỹ thuật để phân phối lưu lượng truy cập đến ứng dụng web trên nhiều server, giúp cải thiện hiệu suất, độ tin cậy và khả năng mở rộng.
C. Load balancing là một kỹ thuật để mã hóa dữ liệu.
D. Load balancing là một kỹ thuật để kiểm thử ứng dụng.
5. WebSockets khác gì so với HTTP trong việc phát triển ứng dụng web Java?
A. WebSockets là một giao thức một chiều, HTTP là giao thức hai chiều.
B. WebSockets cung cấp giao tiếp full-duplex (hai chiều) liên tục giữa client và server, trong khi HTTP là giao thức request-response (yêu cầu-phản hồi).
C. WebSockets chỉ được sử dụng cho các ứng dụng thời gian thực, HTTP được sử dụng cho tất cả các ứng dụng khác.
D. WebSockets không hỗ trợ mã hóa, HTTP có hỗ trợ mã hóa.
6. RESTful API là gì và tại sao nó lại phổ biến trong phát triển ứng dụng web Java?
A. RESTful API là một loại giao diện người dùng.
B. RESTful API là một kiến trúc thiết kế cho các ứng dụng mạng, sử dụng các phương thức HTTP (GET, POST, PUT, DELETE) để truy cập và thao tác với tài nguyên, giúp ứng dụng dễ dàng tích hợp và mở rộng.
C. RESTful API là một loại cơ sở dữ liệu.
D. RESTful API là một công cụ để kiểm thử ứng dụng.
7. Sự khác biệt chính giữa Filter và Interceptor trong Spring MVC là gì?
A. Filter hoạt động ở tầng Servlet container, Interceptor hoạt động ở tầng Spring MVC.
B. Filter có thể truy cập request và response, Interceptor chỉ có thể truy cập request.
C. Filter chỉ có thể được sử dụng cho các yêu cầu tĩnh, Interceptor chỉ có thể được sử dụng cho các yêu cầu động.
D. Filter nhanh hơn Interceptor.
8. CSRF token hoạt động như thế nào để bảo vệ ứng dụng web?
A. CSRF token là một mật khẩu ngẫu nhiên được tạo ra bởi server và lưu trữ trên client.
B. CSRF token là một giá trị ngẫu nhiên duy nhất được tạo ra bởi server và nhúng vào form hoặc URL, được sử dụng để xác minh rằng yêu cầu đến từ người dùng hợp lệ.
C. CSRF token là một cookie được sử dụng để theo dõi người dùng.
D. CSRF token là một chứng chỉ số để xác thực server.
9. Ưu điểm chính của việc sử dụng framework Spring MVC so với việc phát triển ứng dụng web Java bằng servlets và JSPs thuần là gì?
A. Spring MVC nhanh hơn và tiêu thụ ít tài nguyên hơn.
B. Spring MVC cung cấp cấu trúc rõ ràng, dễ bảo trì, tích hợp sẵn các tính năng như dependency injection và AOP.
C. Spring MVC hỗ trợ nhiều loại cơ sở dữ liệu hơn.
D. Spring MVC không yêu cầu cấu hình XML.
10. Sự khác biệt giữa `forward()` và `sendRedirect()` trong Servlet là gì?
A. `forward()` thực hiện chuyển hướng trên client, còn `sendRedirect()` thực hiện chuyển hướng trên server.
B. `forward()` giữ nguyên request và response, chuyển yêu cầu đến một servlet hoặc JSP khác trên server, còn `sendRedirect()` tạo một yêu cầu HTTP mới đến một URL khác.
C. `forward()` chỉ có thể chuyển hướng đến các trang JSP, còn `sendRedirect()` có thể chuyển hướng đến bất kỳ URL nào.
D. `forward()` nhanh hơn `sendRedirect()`.
11. 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
12. Dependency Injection (DI) là gì và nó giúp ích như thế nào trong phát triển ứng dụng web Java sử dụng Spring?
A. DI là một kỹ thuật để tối ưu hóa hiệu suất cơ sở dữ liệu.
B. DI là một kỹ thuật mà các dependencies của một đối tượng được cung cấp cho đối tượng đó thay vì đối tượng tự tạo hoặc tìm kiếm chúng, giúp giảm sự phụ thuộc, tăng tính linh hoạt và khả năng kiểm thử.
C. DI là một kỹ thuật để bảo mật ứng dụng web.
D. DI là một kỹ thuật để tạo giao diện người dùng.
13. CDN (Content Delivery Network) là gì và nó giúp ích như thế nào cho ứng dụng web Java?
A. CDN là một loại cơ sở dữ liệu.
B. CDN là một mạng lưới các server phân tán trên toàn cầu, lưu trữ các bản sao của nội dung tĩnh (ví dụ: hình ảnh, CSS, JavaScript) và phân phối chúng cho người dùng từ server gần nhất, giúp giảm độ trễ và tăng tốc độ tải trang.
C. CDN là một công cụ để kiểm thử ứng dụng web.
D. CDN là một ngôn ngữ lập trình.
14. Cookie và Session khác nhau như thế nào trong ứng dụng web Java?
A. Cookie được lưu trữ trên server, Session được lưu trữ trên client.
B. Cookie có thể lưu trữ dữ liệu phức tạp hơn Session.
C. Cookie được lưu trữ trên client, Session được lưu trữ trên server.
D. Cookie chỉ có thể lưu trữ thông tin đăng nhập, Session lưu trữ thông tin khác.
15. Trong Spring Boot, annotation `@RestController` kết hợp những annotation nào?
A. `@Controller` và `@ResponseBody`
B. `@Controller` và `@RequestMapping`
C. `@Service` và `@Component`
D. `@Component` và `@ResponseBody`
16. JPA (Java Persistence API) là gì và nó liên quan đến Hibernate như thế nào?
A. JPA là một thư viện giao diện người dùng, Hibernate là một framework để xây dựng giao diện người dùng.
B. JPA là một đặc tả (specification) cho việc quản lý dữ liệu bền vững trong Java, Hibernate là một implementation của JPA.
C. JPA là một công cụ để kiểm thử ứng dụng, Hibernate là một công cụ để triển khai ứng dụng.
D. JPA là một ngôn ngữ lập trình, Hibernate là một IDE.
17. Connection pooling là gì và tại sao nó quan trọng trong các ứng dụng web Java truy cập cơ sở dữ liệu?
A. Connection pooling là một kỹ thuật để mã hóa kết nối cơ sở dữ liệu.
B. Connection pooling là một kỹ thuật để tái sử dụng các kết nối cơ sở dữ liệu đã được tạo sẵn, giúp giảm thời gian thiết lập và giải phóng kết nối, cải thiện hiệu suất ứng dụng.
C. Connection pooling là một kỹ thuật để nén dữ liệu trước khi gửi đến cơ sở dữ liệu.
D. Connection pooling là một kỹ thuật để kiểm thử kết nối cơ sở dữ liệu.
18. AOP (Aspect-Oriented Programming) là gì và nó được sử dụng để giải quyết vấn đề gì trong phát triển ứng dụng web Java?
A. AOP là một kỹ thuật để tối ưu hóa hiệu suất cơ sở dữ liệu.
B. AOP là một kỹ thuật cho phép tách các cross-cutting concerns (ví dụ: logging, authentication) ra khỏi logic nghiệp vụ chính, giúp mã nguồn dễ bảo trì và tái sử dụng hơn.
C. AOP là một kỹ thuật để bảo mật ứng dụng web.
D. AOP là một kỹ thuật để tạo giao diện người dùng.
19. CSRF (Cross-Site Request Forgery) là gì và làm thế nào để phòng tránh nó trong ứng dụng web Java?
A. CSRF là một loại tấn công từ chối dịch vụ (DoS), phòng tránh bằng cách sử dụng firewall.
B. CSRF là một loại tấn công mà kẻ tấn công thực hiện các yêu cầu thay mặt cho người dùng mà không được phép, phòng tránh bằng cách sử dụng CSRF token.
C. CSRF là một loại tấn công SQL injection, phòng tránh bằng cách sử dụng parameterized queries.
D. CSRF là một loại tấn công XSS, phòng tránh bằng cách encode dữ liệu đầu vào.
20. Trong ngữ cảnh của Spring Security, `Authentication` và `Authorization` khác nhau như thế nào?
A. `Authentication` là quá trình xác định người dùng, `Authorization` là quá trình xác định người dùng có quyền truy cập vào tài nguyên nào.
B. `Authentication` là quá trình cấp quyền cho người dùng, `Authorization` là quá trình xác định danh tính người dùng.
C. `Authentication` và `Authorization` là hai khái niệm giống nhau.
D. `Authentication` là quá trình mã hóa dữ liệu, `Authorization` là quá trình giải mã dữ liệu.
21. Mục đích của việc sử dụng `web.xml` (deployment descriptor) trong một ứng dụng web Java là gì?
A. Để định nghĩa các bean trong Spring.
B. Để cấu hình các servlets, filters, listeners và các thành phần khác của ứng dụng web.
C. Để định nghĩa các entity trong JPA.
D. Để cấu hình cơ sở dữ liệu.
22. Annotation `@WebServlet` trong Java được sử dụng để làm gì?
A. Định nghĩa một bean trong Spring.
B. Khai báo một servlet và ánh xạ nó đến một URL pattern.
C. Khai báo một filter.
D. Định nghĩa một entity trong JPA.
23. Sự khác biệt chính giữa `ServletContext` và `HttpSession` trong Java Servlet là gì?
A. `ServletContext` dùng để lưu trữ dữ liệu cho một phiên người dùng, còn `HttpSession` dùng để lưu trữ dữ liệu cho toàn bộ ứng dụng.
B. `ServletContext` dùng để lưu trữ dữ liệu cho toàn bộ ứng dụng, còn `HttpSession` dùng để lưu trữ dữ liệu cho một phiên người dùng.
C. Không có sự khác biệt, cả hai đều dùng để lưu trữ dữ liệu cho một phiên người dùng.
D. Không có sự khác biệt, cả hai đều dùng để lưu trữ dữ liệu cho toàn bộ ứng dụng.
24. JSP (JavaServer Pages) được biên dịch thành gì trước khi được thực thi trên server?
A. HTML
B. JavaScript
C. Servlet
D. XML
25. Trong ngữ cảnh của Spring, `@Controller`, `@Service` và `@Repository` là gì và chúng khác nhau như thế nào?
A. Chúng là các annotation để định nghĩa các bean trong Spring, `@Controller` xử lý các yêu cầu HTTP, `@Service` chứa logic nghiệp vụ, `@Repository` truy cập dữ liệu.
B. Chúng là các annotation để định nghĩa các bean trong Spring, `@Controller` truy cập dữ liệu, `@Service` xử lý các yêu cầu HTTP, `@Repository` chứa logic nghiệp vụ.
C. Chúng là các annotation để định nghĩa các bean trong Spring, `@Controller` chứa logic nghiệp vụ, `@Service` truy cập dữ liệu, `@Repository` xử lý các yêu cầu HTTP.
D. Chúng là các annotation để định nghĩa các bean trong Spring, chúng có chức năng giống nhau.
26. XSS (Cross-Site Scripting) là gì và các biện pháp phòng tránh nó trong ứng dụng web Java?
A. XSS là một loại tấn công từ chối dịch vụ (DoS), phòng tránh bằng cách sử dụng firewall.
B. XSS là một loại tấn công mà kẻ tấn công chèn mã độc (thường là JavaScript) vào trang web để thực thi trên trình duyệt của người dùng khác, phòng tránh bằng cách encode dữ liệu đầu vào và đầu ra.
C. XSS là một loại tấn công SQL injection, phòng tránh bằng cách sử dụng parameterized queries.
D. XSS là một loại tấn công CSRF, phòng tránh bằng cách sử dụng CSRF token.
27. JWT (JSON Web Token) là gì và nó được sử dụng như thế nào trong việc xác thực người dùng trong ứng dụng web Java?
A. JWT là một định dạng để lưu trữ dữ liệu trong cơ sở dữ liệu.
B. JWT là một tiêu chuẩn mở dựa trên JSON để tạo ra các token truy cập, cho phép truyền thông tin giữa các bên một cách an toàn và xác minh danh tính người dùng.
C. JWT là một giao thức để tạo giao diện người dùng.
D. JWT là một công cụ để kiểm thử ứng dụng.
28. Thế nào là một `session fixation attack` và làm thế nào để phòng tránh nó trong ứng dụng web Java?
A. Session fixation attack là một loại tấn công từ chối dịch vụ.
B. Session fixation attack là một loại tấn công mà kẻ tấn công cố gắng ép người dùng sử dụng một session ID đã biết, phòng tránh bằng cách tạo session ID mới sau khi người dùng đăng nhập.
C. Session fixation attack là một loại tấn công SQL injection.
D. Session fixation attack là một loại tấn công XSS.
29. Sự khác biệt giữa `GET` và `POST` method trong HTTP là gì và khi nào nên sử dụng mỗi loại?
A. `GET` dùng để lấy dữ liệu, dữ liệu được truyền qua URL, còn `POST` dùng để gửi dữ liệu, dữ liệu được truyền trong body của request.
B. `GET` dùng để gửi dữ liệu, dữ liệu được truyền qua URL, còn `POST` dùng để lấy dữ liệu, dữ liệu được truyền trong body của request.
C. `GET` và `POST` có chức năng giống nhau, chỉ khác nhau về tên.
D. `GET` nhanh hơn `POST`.
30. OAuth 2.0 là gì và nó được sử dụng để làm gì trong ứng dụng web Java?
A. OAuth 2.0 là một giao thức xác thực và ủy quyền cho phép ứng dụng truy cập tài nguyên của người dùng trên một dịch vụ khác (ví dụ: Google, Facebook) mà không cần người dùng chia sẻ mật khẩu.
B. OAuth 2.0 là một giao thức mã hóa dữ liệu.
C. OAuth 2.0 là một giao thức để tối ưu hóa hiệu suất cơ sở dữ liệu.
D. OAuth 2.0 là một giao thức để tạo giao diện người dùng.