1. Trong JPA, `@Entity` annotation được sử dụng để làm gì?
A. Định nghĩa một cột (column) trong bảng cơ sở dữ liệu.
B. Khai báo một class Java là một entity, tương ứng với một bảng trong cơ sở dữ liệu.
C. Xác định khóa chính (primary key) cho một entity.
D. Khai báo mối quan hệ giữa các entities.
2. 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 Java?
A. OAuth 2.0 là một giao thức mã hóa dữ liệu.
B. OAuth 2.0 là một framework 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 service 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, giúp ủy quyền truy cập một cách an toàn.
C. OAuth 2.0 là một giao thức xác thực (authentication).
D. OAuth 2.0 chỉ dùng cho ứng dụng mobile.
3. JSP (JavaServer Pages) được biên dịch thành loại file nào trước khi thực thi trên server?
A. File HTML tĩnh.
B. File JavaScript.
C. File Servlet Java.
D. File bytecode Java trực tiếp.
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à kỹ thuật nén dữ liệu để tăng tốc độ truyền tải.
B. Load balancing là kỹ thuật phân phối traffic đến nhiều server backend để cải thiện hiệu năng, khả năng chịu tải và độ tin cậy của ứng dụng.
C. Load balancing là kỹ thuật bảo mật để chống tấn công DDoS.
D. Load balancing là kỹ thuật tối ưu hóa cơ sở dữ liệu.
5. Phương thức HTTP nào thường được sử dụng để gửi dữ liệu lên server để tạo một resource mới (ví dụ: tạo một bản ghi mới trong cơ sở dữ liệu)?
A. GET.
B. PUT.
C. POST.
D. DELETE.
6. API Gateway pattern là gì và tại sao nó hữu ích trong kiến trúc microservices?
A. API Gateway là một cơ sở dữ liệu trung tâm cho microservices.
B. API Gateway là một server duy nhất đóng vai trò là điểm vào cho tất cả các request từ client đến các microservices, cung cấp các chức năng như routing, authentication, authorization, rate limiting, và composition, giúp đơn giản hóa client và quản lý microservices.
C. API Gateway chỉ dùng cho ứng dụng monolithic, không phải microservices.
D. API Gateway làm chậm tốc độ request.
7. Microservices architecture là gì và ưu điểm chính của nó so với monolithic architecture trong phát triển ứng dụng web Java?
A. Microservices là một kiến trúc mà tất cả các chức năng của ứng dụng được đóng gói vào một ứng dụng duy nhất, còn monolithic là kiến trúc chia ứng dụng thành các dịch vụ nhỏ độc lập.
B. Microservices là kiến trúc chia ứng dụng thành các dịch vụ nhỏ, độc lập, có thể phát triển, triển khai, và scale riêng lẻ, giúp tăng tính linh hoạt, khả năng mở rộng, và độ bền của ứng dụng so với monolithic architecture (ứng dụng nguyên khối).
C. Microservices chỉ phù hợp cho ứng dụng nhỏ, monolithic cho ứng dụng lớn.
D. Microservices làm tăng độ phức tạp trong phát triển và triển khai hơn monolithic.
8. Content Delivery Network (CDN) giúp cải thiện hiệu năng ứng dụng web như thế nào?
A. CDN tăng tốc độ xử lý logic nghiệp vụ phía server.
B. CDN giảm tải cho cơ sở dữ liệu.
C. CDN lưu trữ bản sao của static content (ví dụ: images, CSS, JavaScript) trên nhiều server phân tán địa lý, giúp người dùng truy cập nội dung từ server gần nhất, giảm latency và tăng tốc độ tải trang.
D. CDN mã hóa dữ liệu truyền tải giữa server và client.
9. Trong mô hình 3 lớp (3-tier architecture) thường gặp trong ứng dụng web Java, lớp Presentation tier (lớp hiển thị) chịu trách nhiệm chính cho điều gì?
A. Quản lý dữ liệu và tương tác với cơ sở dữ liệu.
B. Xử lý logic nghiệp vụ của ứng dụng.
C. Hiển thị giao diện người dùng và xử lý tương tác của người dùng.
D. Quản lý session và bảo mật.
10. Session management trong ứng dụng web Java (ví dụ: sử dụng HTTP session) chủ yếu được dùng để giải quyết vấn đề gì?
A. Tăng tốc độ xử lý request.
B. Bảo mật thông tin truyền trên mạng.
C. Duy trì trạng thái của người dùng giữa các request trong môi trường HTTP stateless.
D. Quản lý kết nối cơ sở dữ liệu.
11. Mục đích chính của việc sử dụng JSTL (JSP Standard Tag Library) trong JSP là gì?
A. Tăng hiệu năng của JSP trang.
B. Cung cấp các tag HTML mới.
C. Đơn giản hóa việc viết logic hiển thị (ví dụ: vòng lặp, điều kiện) trong JSP bằng cách sử dụng các tag chuẩn.
D. Thay thế hoàn toàn Java code trong JSP.
12. Trong phát triển ứng dụng Web Java, Servlet container (ví dụ: Tomcat, Jetty) chịu trách nhiệm chính cho điều gì?
A. Quản lý cơ sở dữ liệu và thực hiện truy vấn SQL.
B. Biên dịch mã nguồn Java thành bytecode.
C. Cung cấp môi trường runtime cho Servlets và quản lý vòng đời của chúng.
D. Xử lý các yêu cầu HTTP phía client và trả về HTML tĩnh.
13. Công nghệ nào sau đây thường được sử dụng để ánh xạ đối tượng Java tới các bảng trong cơ sở dữ liệu quan hệ (ORM) trong ứng dụng web Java?
A. JDBC Template.
B. JPA (Java Persistence API) và Hibernate.
C. Servlet API.
D. JSP Standard Tag Library (JSTL).
14. Reactive programming model (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. Đơn giản hóa việc quản lý thread.
C. Cung cấp cách tiếp cận non-blocking, asynchronous để xử lý dữ liệu streams và events, giúp ứng dụng phản ứng nhanh hơn, sử dụng tài nguyên hiệu quả hơn, đặc biệt trong các ứng dụng I/O-bound và real-time.
D. Tăng cường bảo mật ứng dụng.
15. Thành phần nào trong kiến trúc MVC của Spring MVC chịu trách nhiệm xử lý logic nghiệp vụ và tương tác với tầng dữ liệu?
A. View.
B. Controller.
C. Model.
D. DispatcherServlet.
16. Trong ngữ cảnh tối ưu hóa hiệu năng ứng dụng web Java, caching (bộ nhớ đệm) được sử dụng để làm gì?
A. Tăng tốc độ biên dịch code Java.
B. Giảm tải cho mạng.
C. Lưu trữ bản sao của dữ liệu thường xuyên được truy cập (ví dụ: dữ liệu từ database, response từ API) trong bộ nhớ đệm để phục vụ các request sau nhanh hơn, giảm độ trễ và tải cho backend systems.
D. Bảo mật dữ liệu.
17. Trong ngữ cảnh bảo mật ứng dụng web Java, CSRF (Cross-Site Request Forgery) là 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 chèn mã độc SQL (SQL Injection).
C. Tấn công giả mạo yêu cầu, lợi dụng phiên đăng nhập của người dùng để thực hiện các hành động không mong muốn.
D. Tấn công XSS (Cross-Site Scripting).
18. Logging (ghi log) đóng vai trò gì trong quá trình phát triển và vận hành ứng dụng web Java?
A. Tăng tốc độ thực thi ứng dụng.
B. Cải thiện giao diện người dùng.
C. Ghi lại thông tin về hoạt động của ứng dụng (ví dụ: lỗi, cảnh báo, thông tin debug) để giúp debug, theo dõi và giám sát ứng dụng.
D. Tự động sửa lỗi trong ứng dụng.
19. WebSockets khác biệt so với HTTP truyền thống như thế nào trong giao tiếp client-server?
A. WebSockets chỉ hỗ trợ giao tiếp một chiều từ server tới client.
B. WebSockets thiết lập kết nối song công (full-duplex) liên tục giữa client và server, cho phép giao tiếp real-time hai chiều, trong khi HTTP là giao tiếp request-response (nửa song công).
C. WebSockets sử dụng định dạng dữ liệu XML, còn HTTP sử dụng JSON.
D. WebSockets chỉ dùng cho ứng dụng mobile, còn HTTP cho ứng dụng web trên trình duyệt.
20. Annotation `@WebServlet` trong Servlet Java được sử dụng để làm gì?
A. Định nghĩa cấu hình kết nối cơ sở dữ liệu.
B. Khai báo một class là một Servlet và ánh xạ nó tới một URL pattern cụ thể.
C. Xác định quyền truy cập cho Servlet.
D. Khai báo các tham số khởi tạo cho Servlet.
21. RESTful API là gì và nó khác biệt như thế nào so với SOAP web services?
A. RESTful API là một giao thức truyền tải dữ liệu nhanh hơn SOAP.
B. RESTful API sử dụng XML làm định dạng dữ liệu chính, trong khi SOAP sử dụng JSON.
C. RESTful API là một kiến trúc thiết kế phần mềm sử dụng HTTP methods (GET, POST, PUT, DELETE) và các nguyên tắc stateless, trong khi SOAP là một giao thức dựa trên XML và có trạng thái.
D. RESTful API chỉ dùng cho ứng dụng web tĩnh, còn SOAP cho ứng dụng web động.
22. Server-Side Rendering (SSR) và Client-Side Rendering (CSR) khác nhau như thế nào trong ứng dụng web Java sử dụng JavaScript frameworks (ví dụ: React, Angular, Vue.js)?
A. SSR và CSR là hai kỹ thuật giống nhau, chỉ khác tên gọi.
B. SSR render HTML trên server và gửi HTML đã render về client, giúp cải thiện SEO và thời gian tải trang ban đầu, trong khi CSR render HTML trong trình duyệt client bằng JavaScript, giúp tạo ra trải nghiệm người dùng mượt mà hơn sau khi trang đã tải.
C. SSR chỉ dùng cho ứng dụng web tĩnh, CSR cho ứng dụng web động.
D. SSR làm tăng tải cho server, CSR làm tăng tải cho client.
23. Ưu điểm chính của việc sử dụng framework Spring MVC trong phát triển ứng dụng web Java là gì?
A. Tăng tốc độ biên dịch mã Java.
B. Cung cấp khả năng quản lý bộ nhớ tự động tốt hơn.
C. Giảm sự phức tạp trong phát triển ứng dụng web thông qua kiến trúc MVC và IoC.
D. Hỗ trợ trực tiếp cho việc phát triển ứng dụng mobile.
24. Spring Boot khác biệt với Spring MVC như thế nào?
A. Spring Boot là một framework thay thế hoàn toàn cho Spring MVC.
B. Spring Boot là một module mở rộng của Spring MVC, cung cấp khả năng auto-configuration và embedded servers để đơn giản hóa việc thiết lập và triển khai ứng dụng Spring.
C. Spring Boot chỉ hỗ trợ phát triển RESTful API, còn Spring MVC hỗ trợ cả web application truyền thống và API.
D. Spring Boot sử dụng XML configuration, còn Spring MVC sử dụng annotation-based configuration.
25. Containerization (ví dụ: Docker) mang lại lợi ích gì cho việc triển khai ứng dụng web Java?
A. Tăng tốc độ code Java.
B. Giảm kích thước file JAR/WAR.
C. Đóng gói ứng dụng và môi trường runtime của nó vào một container, đảm bảo tính nhất quán khi triển khai trên các môi trường khác nhau (dev, test, production) và đơn giản hóa quá trình deployment.
D. Thay thế máy chủ ứng dụng (application server).
26. Trong ngữ cảnh unit testing ứng dụng web Java, mock object được sử dụng để làm gì?
A. Kiểm thử hiệu năng của ứng dụng.
B. Thay thế các dependencies phức tạp hoặc bên ngoài (ví dụ: cơ sở dữ liệu, web services) bằng các object giả lập để kiểm thử một đơn vị code (ví dụ: một class, một method) một cách độc lập.
C. Kiểm thử giao diện người dùng (UI).
D. Triển khai ứng dụng lên server kiểm thử.
27. Circuit Breaker pattern là gì và nó giúp tăng độ bền của ứng dụng microservices như thế nào?
A. Circuit Breaker pattern là một pattern bảo mật.
B. Circuit Breaker pattern là một pattern thiết kế để ngăn chặn cascading failures trong hệ thống phân tán bằng cách tạm thời ngắt kết nối đến một service bị lỗi khi số lượng lỗi vượt quá ngưỡng, cho phép service đó phục hồi và tránh làm ảnh hưởng đến toàn bộ hệ thống.
C. Circuit Breaker pattern chỉ dùng để giám sát hiệu năng.
D. Circuit Breaker pattern làm tăng độ trễ của request.
28. Trong Spring Security, `FilterChain` có vai trò gì?
A. Quản lý session của người dùng.
B. Xác thực (authentication) người dùng.
C. Định nghĩa một chuỗi các filters (bộ lọc) để xử lý request bảo mật, mỗi filter thực hiện một tác vụ bảo mật cụ thể (ví dụ: xác thực, phân quyền, CSRF protection).
D. Mã hóa mật khẩu người dùng.
29. Dependency Injection (DI) là gì và tại sao nó quan trọng trong Spring Framework?
A. DI là một kỹ thuật để tăng tốc độ khởi động ứng dụng Spring.
B. DI là một design pattern cho phép một object nhận dependencies từ bên ngoài thay vì tự tạo ra chúng, giúp giảm coupling và tăng tính module hóa.
C. DI chỉ được sử dụng trong Spring Boot, không phải Spring MVC.
D. DI là một kỹ thuật bảo mật để ngăn chặn tấn công injection.
30. Công cụ build nào phổ biến nhất cho dự án Java, hỗ trợ quản lý dependencies và tự động hóa quá trình build, test, và deployment?
A. JDBC.
B. JPA.
C. Maven hoặc Gradle.
D. Servlet.