1. Thế nào là `embedded server` trong ngữ cảnh Spring Boot và nó khác gì so với việc deploy ứng dụng web truyền thống lên application server (ví dụ: Tomcat standalone)?
A. Embedded server là server ảo hóa, còn application server là server vật lý.
B. Embedded server được đóng gói cùng với ứng dụng web thành một file executable (ví dụ: JAR), còn application server cần cài đặt và cấu hình riêng biệt.
C. Embedded server chỉ dùng cho môi trường development, application server dùng cho production.
D. Embedded server có hiệu năng kém hơn application server.
2. Microservices architecture (kiến trúc microservices) là gì và nó mang lại lợi ích gì so với kiến trúc monolithic (nguyên khối) trong phát triển ứng dụng web Java?
A. Microservices là một framework Java, monolithic là một pattern thiết kế.
B. Microservices chia ứng dụng thành các dịch vụ nhỏ, độc lập, có thể phát triển, deploy, scale riêng biệt, trong khi monolithic là ứng dụng được xây dựng như một khối duy nhất.
C. Microservices chỉ dùng cho ứng dụng quy mô nhỏ, monolithic dùng cho ứng dụng lớn.
D. Microservices dễ bảo trì hơn monolithic.
3. Transaction management (quản lý giao dịch) là gì và tại sao nó quan trọng trong ứng dụng web Java tương tác với cơ sở dữ liệu?
A. Quản lý bộ nhớ cache của ứng dụng.
B. Đảm bảo tính toàn vẹn dữ liệu bằng cách nhóm các thao tác cơ sở dữ liệu thành một đơn vị logic (transaction). Nếu một thao tác trong transaction thất bại, toàn bộ transaction sẽ được rollback (quay trở lại trạng thái ban đầu).
C. Quản lý kết nối cơ sở dữ liệu.
D. Quản lý session người dùng.
4. API Gateway pattern (mô hình API Gateway) thường được sử dụng trong kiến trúc microservices để giải quyết vấn đề gì?
A. Bảo mật cơ sở dữ liệu.
B. Load balancing traffic đến các microservices.
C. Cung cấp một điểm truy cập duy nhất cho client đến các microservices, thực hiện routing, authentication, authorization, rate limiting và các cross-cutting concerns khác.
D. Quản lý configuration của microservices.
5. Công nghệ nào trong Java EE cung cấp API để truy cập và quản lý dữ liệu từ các nguồn dữ liệu khác nhau, bao gồm cả cơ sở dữ liệu quan hệ và NoSQL?
A. JPA (Java Persistence API).
B. Servlet API.
C. JMS (Java Message Service).
D. JAX-RS (Java API for RESTful Web Services).
6. Docker và containerization mang lại lợi ích gì cho việc triển khai ứng dụng web Java?
A. Giảm kích thước file WAR/JAR của ứng dụng.
B. Tăng tốc độ biên dịch code Java.
C. Đóng gói ứng dụng và các dependencies vào một container độc lập, đảm bảo tính nhất quán giữa các môi trường (development, staging, production) và đơn giản hóa việc scale ứng dụng.
D. Tự động tạo database schema cho ứng dụng.
7. Điểm khác biệt chính giữa `HttpServletRequest` và `HttpServletResponse` trong Servlet là gì?
A. `HttpServletRequest` dùng để gửi dữ liệu từ server về client, `HttpServletResponse` dùng để nhận dữ liệu từ client lên server.
B. `HttpServletRequest` đại diện cho yêu cầu từ client gửi đến server, `HttpServletResponse` đại diện cho phản hồi từ server gửi về client.
C. `HttpServletRequest` chỉ dùng cho phương thức GET, `HttpServletResponse` chỉ dùng cho phương thức POST.
D. `HttpServletRequest` chứa thông tin về session, `HttpServletResponse` chứa thông tin về cookie.
8. Server-Side Rendering (SSR) và Client-Side Rendering (CSR) là hai phương pháp rendering trang web khác nhau. Phương pháp nào thường được ưu tiên để cải thiện SEO (Search Engine Optimization) và performance ban đầu?
A. CSR vì nó tải trang nhanh hơn.
B. SSR vì nó render HTML đầy đủ trên server và gửi về client, giúp search engine crawlers dễ dàng index nội dung và cải thiện thời gian hiển thị nội dung ban đầu.
C. Cả SSR và CSR đều có hiệu quả SEO như nhau.
D. Phương pháp nào tốt hơn phụ thuộc vào framework frontend sử dụng.
9. Trong ngữ cảnh phát triển ứng dụng web Java, Servlet container (ví dụ: Tomcat) chịu trách nhiệm chính cho công việc nào?
A. Quản lý vòng đời của Servlet và cung cấp môi trường runtime cho Servlet.
B. Biên dịch mã nguồn Java thành bytecode.
C. Quản lý kết nối cơ sở dữ liệu.
D. Xử lý các yêu cầu bảo mật SSL/TLS.
10. Annotation `@RestController` trong Spring MVC khác với `@Controller` như thế nào?
A. `@RestController` chỉ dùng cho RESTful API, còn `@Controller` chỉ dùng cho web MVC truyền thống.
B. `@RestController` là một specialization của `@Controller` và tự động thêm `@ResponseBody` annotation vào tất cả các phương thức handler, giúp trả về dữ liệu trực tiếp trong response body (ví dụ: JSON, XML).
C. `@RestController` yêu cầu phải cấu hình view resolver, còn `@Controller` thì không.
D. `@RestController` chỉ hỗ trợ phương thức GET, còn `@Controller` hỗ trợ tất cả các phương thức HTTP.
11. Trong Spring Security, `FilterChain` đóng vai trò gì?
A. Xác thực người dùng (authentication).
B. Phân quyền truy cập (authorization).
C. Một chuỗi các filter bảo mật được áp dụng tuần tự cho mỗi request để thực hiện các chức năng bảo mật khác nhau (ví dụ: xác thực, phân quyền, logging).
D. Quản lý session bảo mật.
12. Cookie và Session khác nhau như thế nào trong việc quản lý trạng thái người dùng trong ứng dụng web Java?
A. Cookie lưu trữ dữ liệu trên server, Session lưu trữ dữ liệu trên client.
B. Cookie lưu trữ dữ liệu trên client (trình duyệt), Session lưu trữ dữ liệu trên server.
C. Cookie chỉ dùng để theo dõi hành vi người dùng, Session dùng để xác thực người dùng.
D. Cookie bảo mật hơn Session.
13. JSP (JavaServer Pages) được biên dịch thành loại file nào trước khi được Servlet container thực thi?
A. File HTML tĩnh.
B. File Servlet Java.
C. File JavaScript.
D. File XML cấu hình.
14. OAuth 2.0 là gì và nó thường được sử dụng để giải quyết vấn đề gì trong ứng dụng web?
A. Một giao thức mã hóa dữ liệu truyền trên mạng.
B. Một framework Java để xây dựng giao diện người dùng.
C. Một giao thức ủy quyền (authorization) cho phép ứng dụng của bên thứ ba truy cập tài nguyên của người dùng trên một server khác (ví dụ: Google, Facebook) mà không cần biết thông tin đăng nhập của người dùng.
D. Một cơ chế để chống tấn công CSRF (Cross-Site Request Forgery).
15. CSRF (Cross-Site Request Forgery) là loại tấn công bảo mật nào và làm thế nào để phòng tránh nó trong ứng dụng web Java?
A. Tấn công từ chối dịch vụ (Denial of Service).
B. Tấn công chèn mã độc SQL (SQL Injection).
C. Tấn công mà kẻ tấn công lợi dụng việc người dùng đã đăng nhập vào một website để thực hiện các hành động giả mạo người dùng đó trên website khác.
D. Tấn công XSS (Cross-Site Scripting).
16. Session trong ngữ cảnh web Java (ví dụ: HttpSession) được sử dụng để làm gì?
A. Lưu trữ cấu hình ứng dụng.
B. Lưu trữ dữ liệu tạm thời của người dùng giữa các request trên server, vì HTTP là giao thức stateless.
C. Lưu trữ dữ liệu cache.
D. Lưu trữ thông tin đăng nhập của người dùng.
17. JUnit và Mockito là các thư viện phổ biến được sử dụng cho mục đích gì trong phát triển ứng dụng web Java?
A. Quản lý dependencies của dự án.
B. Kiểm thử (testing) code Java, JUnit cho unit testing và Mockito cho mocking dependencies trong unit test.
C. Triển khai ứng dụng web lên server.
D. Xây dựng giao diện người dùng web.
18. Message queue (hàng đợi tin nhắn) như Kafka hoặc RabbitMQ được sử dụng để làm gì trong kiến trúc ứng dụng web Java?
A. Lưu trữ dữ liệu session.
B. Quản lý transaction cơ sở dữ liệu.
C. Cho phép giao tiếp asynchronous (bất đồng bộ) giữa các thành phần của ứng dụng bằng cách gửi và nhận tin nhắn qua hàng đợi, giúp decoupling và tăng khả năng mở rộng.
D. Load balancing các request HTTP.
19. CI/CD (Continuous Integration/Continuous Delivery hoặc Continuous Deployment) là gì và tại sao nó quan trọng trong phát triển ứng dụng web hiện đại?
A. Một phương pháp quản lý dự án theo mô hình Agile.
B. Một quy trình tự động hóa các bước từ build, test, đến deploy ứng dụng, giúp phát hành phần mềm nhanh chóng, thường xuyên và giảm thiểu lỗi.
C. Một công cụ giám sát hiệu năng ứng dụng.
D. Một framework bảo mật cho ứng dụng web.
20. Trong JPA, thực thể (Entity) là gì và nó được ánh xạ tới thành phần nào trong cơ sở dữ liệu?
A. Một class đại diện cho giao diện người dùng.
B. Một class Java được đánh dấu annotation `@Entity` và đại diện cho một bảng trong cơ sở dữ liệu.
C. Một component trong Spring IoC container.
D. Một service RESTful API.
21. Lazy loading và eager loading là gì trong ORM (ví dụ: Hibernate) và khi nào nên sử dụng loại loading nào?
A. Lazy loading tải dữ liệu ngay lập tức, eager loading tải dữ liệu khi cần thiết.
B. Lazy loading tải dữ liệu liên quan (related entities) khi được truy cập lần đầu, eager loading tải tất cả dữ liệu liên quan cùng một lúc.
C. Lazy loading dùng cho quan hệ one-to-one, eager loading dùng cho quan hệ one-to-many.
D. Lazy loading và eager loading là hai loại caching khác nhau.
22. WebSockets là gì và nó khác gì so với HTTP truyền thống trong giao tiếp client-server?
A. WebSockets là một phiên bản nâng cấp của HTTP.
B. WebSockets là một giao thức giao tiếp full-duplex (song công toàn phần) trên một kết nối TCP duy nhất, cho phép giao tiếp hai chiều liên tục giữa client và server, khác với HTTP là giao thức request-response (yêu cầu-phản hồi) đơn hướng.
C. WebSockets chỉ dùng cho truyền tải video và audio streaming, HTTP dùng cho dữ liệu văn bản.
D. WebSockets là một framework Java, HTTP là một giao thức.
23. RESTful API là gì và tại sao nó trở nên phổ biến trong phát triển web hiện đại?
A. Một loại cơ sở dữ liệu NoSQL.
B. Một kiến trúc thiết kế cho web service, tuân theo các nguyên tắc như stateless, client-server, cacheable, layered system, và code-on-demand (tùy chọn).
C. Một framework Java để phát triển giao diện người dùng.
D. Một giao thức bảo mật cho truyền dữ liệu web.
24. Framework Spring Boot giúp đơn giản hóa việc phát triển ứng dụng web Java bằng cách nào?
A. Bắt buộc sử dụng cấu hình XML thay vì annotation.
B. Loại bỏ hoàn toàn Servlet container.
C. Cung cấp auto-configuration, embedded servers, và dependency management, giảm thiểu cấu hình boilerplate.
D. Chỉ hỗ trợ phát triển RESTful API, không hỗ trợ web MVC truyền thống.
25. Annotation `@WebServlet` trong Servlet được sử dụng để làm gì?
A. Định nghĩa cấu hình bảo mật cho Servlet.
B. Khai báo Servlet là một component quản lý bởi Spring.
C. Ánh xạ URL pattern đến một Servlet class, thay thế cho cấu hình trong `web.xml`.
D. Chỉ định Servlet này sẽ chạy trên một thread riêng biệt.
26. Reactive programming và Reactive Streams API (ví dụ: Project Reactor, RxJava) mang lại lợi ích gì trong phát triển ứng dụng web Java hiệu năng cao?
A. Giảm dung lượng bộ nhớ sử dụng.
B. Tăng tốc độ biên dịch code Java.
C. Cho phép xử lý stream dữ liệu bất đồng bộ, non-blocking, và backpressure, giúp xây dựng ứng dụng responsive và chịu tải cao, đặc biệt trong các hệ thống event-driven hoặc real-time.
D. Đơn giản hóa việc quản lý transaction cơ sở dữ liệu.
27. XSS (Cross-Site Scripting) là loại tấn công bảo mật nào và biện pháp phòng tránh chính là gì?
A. Tấn công đánh cắp session cookie.
B. Tấn công chèn mã độc JavaScript vào website để thực thi trên trình duyệt của người dùng khác.
C. Tấn công brute-force mật khẩu.
D. Tấn công DDOS (Distributed Denial of Service).
28. Trong mô hình MVC (Model-View-Controller) áp dụng cho phát triển web Java, 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 dữ liệu?
A. View.
B. Controller.
C. Model.
D. DispatcherServlet.
29. ORM (Object-Relational Mapping) framework như Hibernate giải quyết vấn đề gì trong phát triển ứng dụng web Java?
A. Tự động tạo giao diện người dùng từ cơ sở dữ liệu.
B. Giảm sự phức tạp khi tương tác với cơ sở dữ liệu quan hệ bằng cách ánh xạ object trong code Java với bảng trong cơ sở dữ liệu.
C. Tăng tốc độ xử lý các yêu cầu HTTP.
D. Cung cấp cơ chế caching dữ liệu ở phía client.
30. Dependency Injection (DI) là gì và nó mang lại lợi ích gì trong phát triển ứng dụng web Java với Spring?
A. Kỹ thuật để tối ưu hiệu năng ứng dụng bằng cách giảm số lượng object được tạo ra.
B. Một pattern thiết kế giúp các object phụ thuộc vào nhau được tạo và `inject` (tiêm) vào nhau thay vì tự object tạo ra dependencies của nó.
C. Cơ chế bảo mật của Spring Framework để ngăn chặn truy cập trái phép.
D. Cách Spring Boot tự động cấu hình cơ sở dữ liệu.