1. Trong phát triển ứng dụng web với Java, Servlet đóng vai trò gì?
A. Là một tài nguyên tĩnh như file HTML hoặc CSS được gửi trực tiếp đến trình duyệt.
B. Là một giao thức mạng dùng để truyền tải dữ liệu giữa client và server.
C. Là một chương trình chạy trên máy chủ, nhận và xử lý yêu cầu từ client, sau đó gửi phản hồi trở lại.
D. Là một thư viện JavaScript giúp tạo hiệu ứng động trên trang web.
2. Đâu là vòng đời (lifecycle) đúng của một Servlet, theo thứ tự?
A. init() -> service() -> destroy()
B. start() -> run() -> stop()
C. create() -> execute() -> terminate()
D. load() -> process() -> unload()
3. Phương thức nào trong Servlet được sử dụng để xử lý các yêu cầu HTTP GET?
A. doPost()
B. doPut()
C. doGet()
D. doDelete()
4. JSP (JavaServer Pages) được sử dụng chủ yếu cho mục đích gì trong ứng dụng web Java?
A. Thực hiện logic nghiệp vụ phức tạp ở phía máy chủ.
B. Tạo giao diện người dùng động và dễ dàng nhúng mã Java vào HTML.
C. Quản lý kết nối cơ sở dữ liệu và các giao dịch.
D. Định nghĩa các dịch vụ RESTful API.
5. Trong JSP, cú pháp ‘${expression}’ được gọi là gì và dùng để làm gì?
A. Scriptlet, dùng để viết mã Java trực tiếp.
B. Declaration, dùng để khai báo biến hoặc phương thức.
C. Expression Language (EL), dùng để truy cập dữ liệu từ các scope đối tượng.
D. Directive, dùng để cung cấp thông tin cho JSP container.
6. Đâu là một lợi ích chính của việc sử dụng Spring Framework trong phát triển ứng dụng web Java?
A. Bắt buộc sử dụng một cơ sở dữ liệu cụ thể.
B. Giảm sự phụ thuộc giữa các thành phần thông qua Dependency Injection (DI) và Inversion of Control (IoC).
C. Tăng cường sự phức tạp của cấu hình dự án.
D. Chỉ hỗ trợ phát triển các ứng dụng desktop.
7. Trong Spring MVC, ‘DispatcherServlet’ có vai trò gì?
A. Là nơi chứa toàn bộ logic nghiệp vụ của ứng dụng.
B. Là một bộ lọc bảo mật để xác thực người dùng.
C. Là Front Controller nhận tất cả các yêu cầu và điều phối chúng đến các handler phù hợp.
D. Là một lớp để quản lý các bean trong Spring Container.
8. Để định nghĩa một RESTful API endpoint trong Spring Boot, chúng ta thường sử dụng annotation nào?
A. @Service
B. @Repository
C. @Controller
D. @RestController
9. Sự khác biệt chính giữa @Controller và @RestController trong Spring là gì?
A. @Controller chỉ dùng cho ứng dụng web truyền thống, @RestController chỉ dùng cho REST API.
B. @RestController tự động thêm @ResponseBody, trong khi @Controller thì không.
C. @Controller tự động thêm @ResponseBody, trong khi @RestController thì không.
D. Không có sự khác biệt nào đáng kể.
10. Công cụ xây dựng (build tool) nào phổ biến nhất cho các dự án Java và sử dụng file ‘pom.xml’ để cấu hình?
A. Gradle
B. Ant
C. Maven
D. NPM
11. Mục đích chính của file ‘application.properties’ hoặc ‘application.yml’ trong Spring Boot là gì?
A. Chứa mã nguồn Java của ứng dụng.
B. Định nghĩa các dependency của dự án.
C. Cung cấp các cấu hình cho ứng dụng, như cổng server, kết nối cơ sở dữ liệu.
D. Chỉ dùng để khai báo các bean của Spring.
12. JPA (Java Persistence API) được sử dụng để làm gì trong phát triển ứng dụng Java web?
A. Tạo giao diện người dùng đồ họa (GUI).
B. Định nghĩa các giao thức mạng cho ứng dụng.
C. Chuẩn hóa việc ánh xạ đối tượng Java sang cơ sở dữ liệu quan hệ (ORM).
D. Quản lý các sự kiện trong ứng dụng web.
13. Trong Spring Data JPA, interface ‘JpaRepository’ cung cấp những tính năng cơ bản nào?
A. Chỉ cung cấp các phương thức CRUD (Create, Read, Update, Delete).
B. Chỉ cho phép định nghĩa các truy vấn tùy chỉnh.
C. Cung cấp các phương thức CRUD cơ bản và các tính năng phân trang, sắp xếp.
D. Không cung cấp bất kỳ phương thức nào, chỉ là một marker interface.
14. Để quản lý trạng thái phiên (session) trong ứng dụng web Java, kỹ thuật nào sau đây thường được sử dụng?
A. Chỉ sử dụng các biến cục bộ trong phương thức.
B. Lưu trữ dữ liệu trong URL của mỗi yêu cầu.
C. Sử dụng đối tượng ‘HttpSession’ trên server.
D. Chỉ sử dụng cookies trên client.
15. HTTP status code 200 có ý nghĩa gì?
A. Tài nguyên không tìm thấy.
B. Yêu cầu đã được nhận và xử lý thành công.
C. Yêu cầu cần xác thực.
D. Lỗi máy chủ nội bộ.
16. HTTP method nào nên được sử dụng để tạo một tài nguyên mới trên server theo nguyên tắc RESTful?
A. GET
B. PUT
C. DELETE
D. POST
17. Đâu là ưu điểm chính của Spring Boot so với Spring Framework truyền thống?
A. Yêu cầu cấu hình XML phức tạp hơn.
B. Cung cấp khả năng tự động cấu hình (Auto-configuration) và embedded servers để phát triển nhanh hơn.
C. Chỉ hỗ trợ phát triển các ứng dụng nhỏ.
D. Loại bỏ hoàn toàn khái niệm Dependency Injection.
18. Để xác thực và ủy quyền (authentication and authorization) trong ứng dụng web Java, framework nào sau đây được sử dụng rộng rãi cùng với Spring?
A. Apache Commons Lang
B. Google Guava
C. Spring Security
D. Jackson Databind
19. Mục đích của annotation ‘@Autowired’ trong Spring là gì?
A. Để khai báo một phương thức là main method.
B. Để đánh dấu một lớp là một Component của Spring.
C. Để tự động tiêm (inject) các dependencies vào các bean của Spring.
D. Để định nghĩa một request mapping cho một controller.
20. Trong một ứng dụng Java web, ‘Filter’ được sử dụng cho mục đích gì?
A. Tạo giao diện người dùng động.
B. Xử lý logic nghiệp vụ chính của ứng dụng.
C. Thực hiện các tác vụ tiền xử lý hoặc hậu xử lý trên request/response trước khi nó đến hoặc sau khi rời khỏi Servlet.
D. Quản lý kết nối cơ sở dữ liệu.
21. Web server nhúng (embedded web server) trong Spring Boot có nghĩa là gì?
A. Web server phải được cài đặt thủ công và cấu hình riêng.
B. Web server (như Tomcat hoặc Jetty) được đóng gói cùng với ứng dụng và chạy trong cùng một tiến trình.
C. Ứng dụng web được triển khai trên một máy chủ web từ xa.
D. Chỉ dùng để kiểm thử ứng dụng, không dùng cho production.
22. Để truyền dữ liệu từ Controller sang View (JSP) trong Spring MVC, đối tượng nào thường được sử dụng?
A. HttpServletRequest
B. HttpServletResponse
C. Model hoặc ModelAndView
D. ServletConfig
23. Annotation nào được sử dụng để đánh dấu một lớp là một bean của Spring và có vai trò là repository (ví dụ: truy cập cơ sở dữ liệu)?
A. @Service
B. @Component
C. @Controller
D. @Repository
24. Cổng mặc định mà một ứng dụng Spring Boot chạy với embedded Tomcat server là gì?
A. 80
B. 443
C. 8080
D. 3306
25. Để xử lý các ngoại lệ (exceptions) một cách tập trung trong Spring MVC, kỹ thuật nào sau đây là phổ biến nhất?
A. Sử dụng khối ‘try-catch’ trong mọi phương thức.
B. Sử dụng annotation ‘@ExceptionHandler’ hoặc ‘@ControllerAdvice’.
C. Cho phép các ngoại lệ được ném ra và không xử lý.
D. Ghi tất cả các ngoại lệ vào console.
26. File ‘web.xml’ (Deployment Descriptor) trong một ứng dụng Servlet/JSP truyền thống có vai trò gì?
A. Chứa mã nguồn Java của ứng dụng.
B. Cung cấp cấu hình cho các Servlet, Filter, Listener và các tài nguyên khác của ứng dụng web.
C. Định nghĩa các lớp giao diện người dùng.
D. Là nơi lưu trữ dữ liệu người dùng.
27. JAR (Java Archive) và WAR (Web Archive) khác nhau chủ yếu ở điểm nào trong bối cảnh ứng dụng web Java?
A. JAR dùng cho thư viện, WAR dùng cho ứng dụng console.
B. WAR là định dạng đóng gói cho các ứng dụng web để triển khai trên các Servlet container, còn JAR thường dùng cho thư viện hoặc ứng dụng độc lập.
C. JAR nhỏ hơn WAR về kích thước file.
D. WAR có thể chạy độc lập mà không cần web server bên ngoài, JAR thì không.
28. Trong Spring Security, đối tượng ‘UserDetails’ dùng để làm gì?
A. Lưu trữ thông tin chi tiết về sản phẩm.
B. Đại diện cho thông tin về người dùng đã được xác thực (username, password, roles).
C. Định nghĩa cấu hình cơ sở dữ liệu.
D. Là một giao diện để định nghĩa các dịch vụ RESTful.
29. Thiết kế một ứng dụng RESTful API trong Java thường sử dụng định dạng dữ liệu nào để trao đổi giữa client và server?
A. XML và HTML
B. CSV và TXT
C. JSON và XML
D. PDF và DOCX
30. Mục đích của việc sử dụng Connection Pool (nhóm kết nối) trong ứng dụng web Java là gì?
A. Để mã hóa các truy vấn cơ sở dữ liệu.
B. Để giảm thiểu thời gian tạo và đóng kết nối cơ sở dữ liệu, cải thiện hiệu suất.
C. Để lưu trữ toàn bộ dữ liệu từ cơ sở dữ liệu vào bộ nhớ.
D. Để quản lý các phiên người dùng.
31. Trong phát triển ứng dụng web với Java, Servlet đóng vai trò gì trong việc xử lý các yêu cầu từ trình duyệt?
A. Servlet là một giao diện người dùng để hiển thị dữ liệu.
B. Servlet là một thành phần phía máy chủ để xử lý các yêu cầu HTTP động và tạo ra các phản hồi.
C. Servlet là một công cụ để quản lý các phiên làm việc của cơ sở dữ liệu.
D. Servlet là một thư viện JavaScript để thực hiện các thao tác phía client.
32. Công nghệ JSP (JavaServer Pages) được sử dụng chủ yếu cho mục đích gì trong kiến trúc MVC của ứng dụng web Java?
A. Xử lý logic nghiệp vụ và tương tác với cơ sở dữ liệu.
B. Định tuyến các yêu cầu HTTP đến các controller phù hợp.
C. Tạo ra giao diện người dùng động (View) bằng cách nhúng mã Java vào HTML.
D. Quản lý các đối tượng bean và dependency injection.
33. Để kết nối ứng dụng Java với cơ sở dữ liệu quan hệ, API nào được sử dụng phổ biến nhất?
A. JMS (Java Message Service).
B. JNDI (Java Naming and Directory Interface).
C. JDBC (Java Database Connectivity).
D. JAX-RS (Java API for RESTful Web Services).
34. Trong ngữ cảnh phát triển web Java, thuật ngữ ‘Dependency Injection’ (DI) trong Spring Framework đề cập đến khái niệm nào?
A. Một kỹ thuật để tự động tạo và quản lý các cơ sở dữ liệu trong ứng dụng.
B. Một mẫu thiết kế mà trong đó các đối tượng được cung cấp các dependency của chúng thay vì tự tạo hoặc tìm kiếm chúng.
C. Một phương pháp để mã hóa và giải mã dữ liệu nhạy cảm trong ứng dụng web.
D. Một cơ chế để đảm bảo tính toàn vẹn của dữ liệu giữa các module khác nhau.
35. Lợi ích chính của việc sử dụng Spring Boot trong phát triển ứng dụng web Java là gì?
A. Giảm thiểu kích thước của mã nguồn Java bằng cách loại bỏ các thư viện không cần thiết.
B. Cung cấp một môi trường phát triển ứng dụng web không cần Java.
C. Đơn giản hóa việc cấu hình, đóng gói và chạy ứng dụng Spring độc lập với máy chủ nhúng.
D. Tăng cường bảo mật cho các ứng dụng web bằng cách tự động mã hóa tất cả dữ liệu.
36. Mục đích chính của công cụ Maven hoặc Gradle trong một dự án phát triển web Java là gì?
A. Để quản lý các phiên làm việc của người dùng trên ứng dụng web.
B. Để biên dịch mã nguồn, quản lý các thư viện phụ thuộc và đóng gói dự án.
C. Để triển khai ứng dụng lên các máy chủ đám mây tự động.
D. Để tạo ra các tài liệu API tự động từ mã nguồn.
37. Trong Spring MVC, ‘DispatcherServlet’ có vai trò gì?
A. Nó xử lý tất cả các yêu cầu từ người dùng và chuyển tiếp chúng đến các controller phù hợp.
B. Nó là một lớp tiện ích để hiển thị các trang JSP.
C. Nó là một bean để quản lý các kết nối cơ sở dữ liệu.
D. Nó cung cấp các phương thức để xử lý lỗi trong ứng dụng.
38. Sự khác biệt cơ bản giữa Servlet và JSP là gì?
A. Servlet chỉ có thể xử lý các yêu cầu GET, trong khi JSP có thể xử lý cả GET và POST.
B. Servlet là mã Java nhúng trong HTML, còn JSP là HTML nhúng trong Java.
C. Servlet được sử dụng để xử lý logic phía máy chủ, trong khi JSP chủ yếu được dùng để tạo giao diện người dùng.
D. Servlet chỉ chạy trên Tomcat, còn JSP có thể chạy trên bất kỳ máy chủ nào.
39. Cơ chế ‘Object-Relational Mapping’ (ORM) như Hibernate/JPA mang lại lợi ích gì trong phát triển ứng dụng web Java?
A. Nó loại bỏ hoàn toàn nhu cầu sử dụng cơ sở dữ liệu trong các ứng dụng web.
B. Nó cho phép nhà phát triển tương tác với cơ sở dữ liệu bằng các đối tượng Java mà không cần viết SQL trực tiếp.
C. Nó cung cấp một giao thức bảo mật mới để truyền dữ liệu giữa client và server.
D. Nó tự động tạo ra giao diện người dùng cho các ứng dụng web dựa trên cấu trúc cơ sở dữ liệu.
40. Khi xây dựng một API RESTful với Spring Boot, Annotation nào thường được sử dụng để đánh dấu một lớp là Controller mà các phương thức của nó trả về dữ liệu trực tiếp dưới dạng JSON/XML?
A. ‘@Controller’.
B. ‘@Service’.
C. ‘@Repository’.
D. ‘@RestController’.
41. Authentication và Authorization trong Spring Security có ý nghĩa gì?
A. Authentication là xác định người dùng là ai, còn Authorization là xác định người dùng có quyền làm gì.
B. Authentication là kiểm tra quyền truy cập, còn Authorization là xác thực danh tính.
C. Cả hai đều là các thuật ngữ dùng để chỉ quá trình mã hóa dữ liệu.
D. Authentication chỉ liên quan đến đăng nhập, còn Authorization liên quan đến ghi nhật ký hoạt động.
42. Trong mô hình request-response của ứng dụng web Java, ‘HttpSession’ được dùng để làm gì?
A. Lưu trữ dữ liệu tạm thời trên máy khách (client) giữa các yêu cầu HTTP.
B. Lưu trữ thông tin trạng thái cụ thể của một người dùng trên máy chủ giữa nhiều yêu cầu HTTP.
C. Xử lý các lỗi xảy ra trong quá trình truyền dữ liệu giữa client và server.
D. Thực hiện việc mã hóa các yêu cầu và phản hồi HTTP.
43. Sự khác biệt chính giữa ‘GET’ và ‘POST’ trong HTTP là gì khi phát triển ứng dụng web?
A. GET dùng để gửi dữ liệu lớn, còn POST dùng để gửi dữ liệu nhỏ.
B. GET dùng để truy xuất tài nguyên, dữ liệu được truyền trong URL, còn POST dùng để gửi dữ liệu tạo/cập nhật, dữ liệu được truyền trong phần thân của yêu cầu.
C. GET là một phương thức an toàn, còn POST là một phương thức không an toàn.
D. GET yêu cầu xác thực, còn POST không yêu cầu xác thực.
44. Mẫu thiết kế MVC (Model-View-Controller) được áp dụng trong phát triển ứng dụng web Java nhằm mục đích gì?
A. Để mã hóa tất cả dữ liệu được truyền giữa client và server.
B. Để tách biệt logic nghiệp vụ, giao diện người dùng và điều khiển luồng, giúp ứng dụng dễ bảo trì và mở rộng.
C. Để tự động tạo ra cơ sở dữ liệu từ các đối tượng Java.
D. Để tối ưu hóa hiệu suất của cơ sở dữ liệu bằng cách sử dụng các chỉ mục.
45. Annotation nào của Spring thường được sử dụng để đánh dấu một lớp là một ‘service’ trong tầng dịch vụ của một ứng dụng?
A. ‘@Component’.
B. ‘@Repository’.
C. ‘@Service’.
D. ‘@Controller’.
46. Trong JDBC, PreparedStatement được sử dụng để làm gì, đặc biệt trong việc ngăn chặn các cuộc tấn công SQL Injection?
A. Để tự động tạo các truy vấn SQL dựa trên các đối tượng Java.
B. Để chuẩn bị một câu lệnh SQL đã được biên dịch trước và có thể sử dụng lại với các tham số được an toàn truyền vào.
C. Để kết nối với nhiều cơ sở dữ liệu cùng một lúc.
D. Để ghi nhật ký tất cả các truy vấn SQL được thực thi trong ứng dụng.
47. Cấu trúc file ‘.war’ (Web Archive) được sử dụng để làm gì trong phát triển ứng dụng web Java?
A. Là một định dạng file để lưu trữ mã nguồn Java chưa biên dịch.
B. Là một file lưu trữ các cài đặt cấu hình cho máy chủ web.
C. Là một định dạng nén chuẩn để đóng gói toàn bộ một ứng dụng web Java để triển khai lên máy chủ ứng dụng.
D. Là một loại cơ sở dữ liệu nhúng được sử dụng trong các ứng dụng web nhỏ.
48. Thành phần ‘Model’ trong mẫu thiết kế MVC (Model-View-Controller) của ứng dụng web Java chịu trách nhiệm gì?
A. Hiển thị thông tin cho người dùng.
B. Chứa logic nghiệp vụ, dữ liệu và các thao tác liên quan đến dữ liệu.
C. Điều khiển luồng của ứng dụng và xử lý các yêu cầu từ người dùng.
D. Định tuyến các yêu cầu HTTP đến các thành phần khác.
49. Trong Spring Data JPA, Annotation nào được sử dụng để đánh dấu một giao diện (interface) là một repository để tương tác với cơ sở dữ liệu?
A. ‘@Service’.
B. ‘@Controller’.
C. ‘@Repository’.
D. ‘@Component’.
50. Khái niệm ‘Cross-Origin Resource Sharing’ (CORS) liên quan đến vấn đề gì trong phát triển ứng dụng web Java?
A. Cách các máy chủ Java chia sẻ tài nguyên phần cứng với nhau.
B. Một cơ chế bảo mật trình duyệt cho phép hoặc chặn các yêu cầu tài nguyên từ một origin (nguồn gốc) khác.
C. Một phương pháp để tối ưu hóa việc tải tài nguyên trên các mạng phân tán.
D. Một giao thức để đồng bộ hóa dữ liệu giữa các cơ sở dữ liệu khác nhau.
51. Để triển khai một ứng dụng web Java lên một máy chủ như Apache Tomcat, file nào thường được tạo và đặt trong thư mục ‘webapps’ của Tomcat?
A. Một file ‘.jar’.
B. Một file ‘.exe’.
C. Một file ‘.zip’.
D. Một file ‘.war’.
52. Ưu điểm chính của việc sử dụng các máy chủ ứng dụng (Application Servers) như WildFly hoặc GlassFish so với chỉ sử dụng Tomcat là gì?
A. Chúng nhẹ hơn và tiêu tốn ít tài nguyên hơn.
B. Chúng cung cấp đầy đủ các dịch vụ của Java EE (EJB, JMS, JTA, v.v.), phù hợp cho các ứng dụng doanh nghiệp lớn.
C. Chúng chỉ hỗ trợ triển khai các ứng dụng bằng ngôn ngữ Java.
D. Chúng không yêu cầu cấu hình và có thể chạy ngay lập tức.
53. Trong Spring Framework, IoC Container (Inversion of Control Container) có vai trò gì?
A. Nó là một công cụ để kiểm tra lỗi cú pháp trong mã nguồn Java.
B. Nó chịu trách nhiệm khởi tạo, cấu hình và quản lý vòng đời của các đối tượng (beans) trong ứng dụng.
C. Nó là một máy chủ web nhúng để chạy các ứng dụng Spring Boot.
D. Nó cung cấp một giao diện người dùng đồ họa để thiết kế các ứng dụng web.
54. Khi xây dựng các API RESTful, HTTP status code 200 (OK) thường được sử dụng trong trường hợp nào?
A. Khi có lỗi ở phía máy chủ.
B. Khi tài nguyên đã được tạo thành công.
C. Khi yêu cầu thành công và máy chủ đã trả về dữ liệu được yêu cầu.
D. Khi người dùng không có quyền truy cập vào tài nguyên.
55. Khi nào nên sử dụng JWT (JSON Web Tokens) trong một ứng dụng web Java, đặc biệt là với các API RESTful?
A. Để lưu trữ dữ liệu phiên (session data) trên máy chủ.
B. Để truyền thông tin xác thực và ủy quyền giữa client và server một cách an toàn và không trạng thái (stateless).
C. Để mã hóa tất cả dữ liệu được lưu trữ trong cơ sở dữ liệu.
D. Để quản lý các thư viện phụ thuộc của dự án Java.
56. Sự khác biệt chính giữa ‘ArrayList’ và ‘LinkedList’ trong Java Collections Framework là gì, đặc biệt về hiệu suất truy cập và chèn/xóa?
A. ArrayList tốt hơn cho việc chèn/xóa ở giữa, còn LinkedList tốt hơn cho việc truy cập ngẫu nhiên.
B. ArrayList tốt hơn cho việc truy cập ngẫu nhiên vì nó dựa trên mảng, còn LinkedList tốt hơn cho việc chèn/xóa ở giữa vì nó dựa trên danh sách liên kết.
C. ArrayList có kích thước cố định, còn LinkedList có thể thay đổi kích thước.
D. Cả hai đều có hiệu suất như nhau cho mọi thao tác.
57. Thành phần ‘Filter’ trong Servlet API được sử dụng với mục đích gì?
A. Để chặn và chuyển hướng tất cả các yêu cầu đến các trang web bên ngoài.
B. Để thực hiện các tác vụ tiền xử lý hoặc hậu xử lý trên các yêu cầu và phản hồi trước khi chúng đến Servlet hoặc sau khi chúng rời khỏi Servlet.
C. Để lọc bỏ các ký tự đặc biệt trong dữ liệu người dùng nhập vào.
D. Để nén kích thước của các phản hồi HTTP trước khi gửi về client.
58. Trong ngữ cảnh của các ứng dụng đa luồng (multithreaded) Java, ‘thread safety’ đề cập đến điều gì?
A. Đảm bảo rằng một luồng không bao giờ bị dừng giữa chừng.
B. Đảm bảo rằng mã sẽ hoạt động chính xác khi được thực thi bởi nhiều luồng đồng thời mà không gây ra lỗi dữ liệu hoặc hành vi không mong muốn.
C. Đảm bảo rằng mỗi luồng có đủ tài nguyên CPU để hoạt động.
D. Đảm bảo rằng các luồng chỉ được phép truy cập vào dữ liệu của riêng chúng.
59. Phương pháp nào sau đây là cách tốt nhất để xử lý các thông tin nhạy cảm như mật khẩu trong các file cấu hình ứng dụng web Java?
A. Lưu trữ chúng dưới dạng văn bản thuần túy trong file ‘application.properties’.
B. Mã hóa chúng và lưu trữ khóa giải mã trong cùng file cấu hình.
C. Sử dụng các công cụ quản lý bí mật (secret management tools) như HashiCorp Vault hoặc các dịch vụ của nhà cung cấp đám mây để lưu trữ và truy xuất an toàn.
D. Đặt chúng trực tiếp vào mã nguồn Java dưới dạng hằng số.
60. Mục đích của ‘DataSource’ và ‘Connection Pool’ trong JDBC là gì?
A. Để tạo ra một cơ sở dữ liệu mới mỗi khi ứng dụng khởi động.
B. Để quản lý và tái sử dụng các kết nối cơ sở dữ liệu, cải thiện hiệu suất và độ ổn định của ứng dụng.
C. Để kiểm tra tính hợp lệ của các truy vấn SQL trước khi thực thi.
D. Để cung cấp một cách an toàn để truyền dữ liệu giữa client và cơ sở dữ liệu.
61. Đâu là thành phần cốt lõi của Java EE (nay là Jakarta EE) dùng để xử lý các yêu cầu HTTP từ client và tạo ra phản hồi động?
A. JMS (Java Message Service)
B. Servlet
C. EJB (Enterprise JavaBeans)
D. JSP (JavaServer Pages)
62. Trong mô hình MVC, thành phần nào chịu trách nhiệm hiển thị dữ liệu cho người dùng?
A. Controller
B. View
C. Model
D. Service
63. Để lưu trữ thông tin về một phiên làm việc của người dùng trên web, chẳng hạn như giỏ hàng hoặc trạng thái đăng nhập, đối tượng nào của Servlet API thường được sử dụng?
A. HttpSession
B. HttpServletResponse
C. ServletContext
D. HttpServletRequest
64. Điểm khác biệt chính giữa Servlet và JSP là gì?
A. Servlet chạy trên client, JSP chạy trên server.
B. JSP yêu cầu biên dịch, Servlet thì không.
C. Servlet tập trung vào logic xử lý, JSP tập trung vào hiển thị giao diện.
D. Servlet là công nghệ cũ, JSP là công nghệ mới hơn.
65. Để cấu hình một Servlet trong ứng dụng web Java, phương pháp nào phổ biến nhất được sử dụng trong các ứng dụng hiện đại (Java EE 6+ trở lên)?
A. Tạo đối tượng Servlet một cách thủ công trong phương thức ‘main()’.
B. Sử dụng chú thích ‘@WebServlet’ trên lớp Servlet.
C. Sử dụng cú pháp ‘‘ trực tiếp trong file JSP.
D. Khai báo trong file ‘web.xml’ (Deployment Descriptor).
66. Phương thức vòng đời nào của Servlet được gọi khi Servlet được khởi tạo lần đầu tiên và chỉ một lần duy nhất?
A. ‘doGet()’
B. ‘destroy()’
C. ‘service()’
D. ‘init()’
67. Trong kiến trúc Spring MVC, thành phần nào đóng vai trò là điểm vào duy nhất (front controller) để xử lý tất cả các yêu cầu gửi đến ứng dụng web?
A. ‘ViewResolver’
B. ‘ModelAndView’
C. ‘DispatcherServlet’
D. ‘Controller’
68. Để ánh xạ một phương thức trong Spring MVC Controller tới một yêu cầu HTTP GET với URL ‘/users’, chú thích nào sau đây là phù hợp nhất?
A. ‘@Path(‘/users’)’
B. ‘@GetMapping(‘/users’)’
C. ‘@RequestMapping(value = ‘/users’, method = RequestMethod.POST)’
D. ‘@PostMapping(‘/users’)’
69. Đối tượng nào trong JDBC chịu trách nhiệm thực thi các câu lệnh SQL và trả về kết quả?
A. ‘ResultSet’
B. ‘Statement’
C. ‘DriverManager’
D. ‘Connection’
70. Khi làm việc với JDBC trong Java, cách tiếp cận hiện đại và được khuyến nghị nhất để đảm bảo các tài nguyên cơ sở dữ liệu (như ‘Connection’, ‘Statement’, ‘ResultSet’) được giải phóng một cách an toàn và tự động, ngay cả khi có lỗi, là gì?
A. Chỉ cần đóng đối tượng ‘Connection’, các đối tượng khác sẽ được đóng theo.
B. Để JVM tự động dọn dẹp các tài nguyên sau khi ứng dụng kết thúc.
C. Đóng thủ công các tài nguyên trong khối ‘finally’.
D. Sử dụng cấu trúc ‘try-with-resources’.
71. Để tạo một ứng dụng web độc lập, có thể chạy được (executable JAR) với máy chủ nhúng (embedded server) như Tomcat hoặc Jetty mà không cần cấu hình phức tạp, công nghệ nào của Spring được ưu tiên sử dụng hiện nay?
A. Spring Boot
B. Spring Data JPA
C. Spring MVC
D. Spring Core
72. Đặc điểm ‘Stateless’ (phi trạng thái) trong kiến trúc RESTful Web Services có ý nghĩa gì?
A. Server có thể lưu trữ trạng thái của client nhưng không được sử dụng.
B. Ứng dụng không bao giờ sử dụng cookie hoặc session.
C. Mỗi yêu cầu từ client phải chứa đủ thông tin để server xử lý, server không lưu trữ trạng thái của client.
D. Client phải luôn duy trì trạng thái của server.
73. Để tạo một endpoint RESTful trong Spring Boot trả về dữ liệu dưới dạng JSON từ một phương thức, chú thích nào sau đây thường được sử dụng ở cấp độ lớp hoặc phương thức?
A. ‘@Service’
B. ‘@Repository’
C. ‘@Controller’
D. ‘@RestController’
74. Trong Java Persistence API (JPA) và Hibernate, ‘Entity’ là gì?
A. Một đối tượng hiển thị (View Object) trong JSP.
B. Một dịch vụ SOAP.
C. Một lớp Java đại diện cho một bảng trong cơ sở dữ liệu.
D. Một phương thức trong controller.
75. Để đánh dấu một trường trong lớp Entity là khóa chính (Primary Key) trong JPA, chú thích nào được sử dụng?
A. ‘@GeneratedValue’ (dùng kết hợp với @Id)
B. ‘@Table’
C. ‘@Id’
D. ‘@Column’
76. Một trong những lỗ hổng bảo mật web phổ biến nhất mà Spring Security có thể giúp giảm thiểu là gì?
A. Tấn công Brute Force vào hệ thống mạng.
B. Lỗi phần cứng máy chủ.
C. Tấn công DDoS (Distributed Denial of Service).
D. Tấn công CSRF (Cross-Site Request Forgery).
77. Lợi ích chính của việc sử dụng Dependency Injection (DI) trong phát triển ứng dụng web Java (ví dụ, với Spring Framework) là gì?
A. Tự động hóa việc tạo cơ sở dữ liệu.
B. Giảm sự phụ thuộc giữa các thành phần, tăng tính mô đun và dễ kiểm thử.
C. Tăng tốc độ thực thi của ứng dụng.
D. Đơn giản hóa việc triển khai ứng dụng lên server.
78. Trong Spring Boot, file cấu hình mặc định nào thường được sử dụng để định nghĩa các thuộc tính ứng dụng như cổng server, kết nối cơ sở dữ liệu, v.v.?
A. ‘web.xml’
B. ‘build.gradle’
C. ‘application.properties’ hoặc ‘application.yml’
D. ‘pom.xml’
79. Mã trạng thái HTTP ‘200 OK’ có ý nghĩa gì trong phản hồi của server?
A. Tài nguyên không tìm thấy.
B. Yêu cầu đã thành công và dữ liệu đã được trả về.
C. Yêu cầu đã được chấp nhận nhưng chưa hoàn thành.
D. Có lỗi xảy ra trên server.
80. Để lặp qua một danh sách các đối tượng trong JSP và hiển thị chúng, thư viện thẻ tiêu chuẩn JSP (JSTL) nào thường được sử dụng?
81. Trong một dự án web Java, công cụ xây dựng (build tool) nào được sử dụng phổ biến nhất để quản lý các dependency (thư viện phụ thuộc), biên dịch mã nguồn và đóng gói ứng dụng?
A. Maven hoặc Gradle.
B. Eclipse IDE
C. Ant
D. IntelliJ IDEA
82. Chức năng chính của một Servlet Container (như Apache Tomcat) là gì?
A. Cung cấp môi trường chạy cho các ứng dụng desktop Java.
B. Biên dịch mã Java thành bytecode.
C. Quản lý vòng đời của Servlet và JSP, xử lý yêu cầu HTTP.
D. Cung cấp cơ sở dữ liệu cho ứng dụng.
83. Trong phát triển ứng dụng web Java, ‘Data Transfer Object’ (DTO) thường được sử dụng với mục đích gì?
A. Lưu trữ dữ liệu trong cơ sở dữ liệu.
B. Thực hiện các phép tính toán phức tạp.
C. Đại diện cho các lớp dịch vụ (Service layer).
D. Truyền dữ liệu giữa các lớp hoặc các tầng khác nhau của ứng dụng.
84. Để xác thực người dùng dựa trên tên người dùng và mật khẩu trong Spring Security, interface cốt lõi nào cần được triển khai để tải thông tin người dùng?
A. ‘UserDetailsService’
B. ‘GrantedAuthority’
C. ‘PasswordEncoder’
D. ‘AuthenticationManager’
85. Để truy cập các tham số được gửi từ một form HTML thông qua phương thức POST trong một Servlet, phương thức nào của đối tượng ‘HttpServletRequest’ được sử dụng?
A. ‘request.getSession().getAttribute(‘paramName’)’
B. ‘request.getReader()’
C. ‘request.getAttribute(‘paramName’)’
D. ‘request.getParameter(‘paramName’)’
86. Cookies trong ứng dụng web Java được sử dụng chủ yếu để làm gì?
A. Thực hiện các giao dịch cơ sở dữ liệu.
B. Duy trì trạng thái người dùng hoặc lưu trữ thông tin nhỏ trên client.
C. Tăng tốc độ tải trang web bằng cách nén dữ liệu.
D. Bảo mật toàn bộ ứng dụng web.
87. Trong phát triển ứng dụng web hiện đại với Java, định dạng nào thường được sử dụng để trao đổi dữ liệu giữa client (ví dụ: JavaScript) và server (ví dụ: RESTful API)?
A. CSV (Comma Separated Values)
B. HTML (HyperText Markup Language)
C. XML (Extensible Markup Language)
D. JSON (JavaScript Object Notation)
88. Khi một ngoại lệ (exception) xảy ra trong quá trình xử lý yêu cầu HTTP trong một ứng dụng web Java, cơ chế nào thường được sử dụng để chuyển hướng người dùng đến một trang lỗi thân thiện?
A. Bỏ qua ngoại lệ và tiếp tục xử lý.
B. Chỉ đơn giản là in stack trace ra console.
C. Gửi một email thông báo lỗi cho quản trị viên mà không thông báo cho người dùng.
D. Sử dụng cơ chế xử lý ngoại lệ toàn cục hoặc cấu hình trang lỗi trong ‘web.xml’.
89. Trong Servlet API, ‘Filter’ được sử dụng để làm gì?
A. Quản lý kết nối cơ sở dữ liệu.
B. Chặn và xử lý yêu cầu/phản hồi trước khi đến Servlet hoặc gửi về client.
C. Thực hiện các logic nghiệp vụ chính của ứng dụng.
D. Tạo giao diện người dùng động.
90. Trong Spring Framework, phạm vi (scope) mặc định của một bean được định nghĩa bằng chú thích ‘@Component’ hoặc ‘@Service’ là gì?
A. Session
B. Prototype
C. Request
D. Singleton
91. Trong phát triển ứng dụng web với Java, Servlet đóng vai trò chính là gì?
A. Servlet là một tập tin cấu hình XML để triển khai ứng dụng.
B. Servlet chịu trách nhiệm xử lý các yêu cầu từ phía client và tạo ra phản hồi động.
C. Servlet được sử dụng để định nghĩa cấu trúc cơ sở dữ liệu của ứng dụng.
D. Servlet cung cấp giao diện người dùng frontend cho ứng dụng web.
92. Để quản lý trạng thái phiên làm việc (session) của người dùng trong ứng dụng web Java, cơ chế nào sau đây thường được sử dụng?
A. Mỗi yêu cầu HTTP độc lập và không có cách nào để duy trì trạng thái phiên.
B. Sử dụng đối tượng ‘HttpServletRequest’ để lưu trữ dữ liệu phiên.
C. Sử dụng đối tượng ‘HttpSession’ được cung cấp bởi Servlet API.
D. Lưu trữ tất cả dữ liệu phiên trong cơ sở dữ liệu cho mỗi lần tương tác.
93. Sự khác biệt chính giữa phương thức HTTP GET và POST khi gửi dữ liệu từ client đến server là gì?
A. GET dùng để gửi dữ liệu nhạy cảm, POST dùng cho dữ liệu công khai.
B. GET giới hạn kích thước dữ liệu và hiển thị trên URL, POST không giới hạn và gửi trong phần thân yêu cầu.
C. GET luôn yêu cầu xác thực, POST thì không.
D. GET chỉ được dùng để tải trang, POST chỉ được dùng để gửi biểu mẫu.
94. Trong kiến trúc MVC (Model-View-Controller) cho ứng dụng web Java, ‘Controller’ có vai trò chính là gì?
A. Hiển thị dữ liệu cho người dùng cuối.
B. Đại diện cho dữ liệu và logic nghiệp vụ của ứng dụng.
C. Xử lý các yêu cầu từ người dùng, tương tác với Model và chọn View phù hợp.
D. Lưu trữ dữ liệu ứng dụng một cách bền vững.
95. File ‘web.xml’ (Deployment Descriptor) trong ứng dụng web Java EE có mục đích gì?
A. Là nơi chứa toàn bộ mã nguồn Java của ứng dụng.
B. Cung cấp cấu hình triển khai cho ứng dụng web, như định nghĩa Servlet, bộ lọc, và ánh xạ URL.
C. Lưu trữ dữ liệu cấu hình cho cơ sở dữ liệu.
D. Là file CSS chính để định dạng giao diện người dùng.
96. Cổng mặc định mà hầu hết các máy chủ ứng dụng web Java (như Apache Tomcat) lắng nghe các yêu cầu HTTP là bao nhiêu?
A. Port 21
B. Port 80
C. Port 443
D. Port 8080
97. Công nghệ nào sau đây là một khuôn khổ (framework) phổ biến nhất để xây dựng các ứng dụng web với Java, cung cấp hỗ trợ toàn diện từ MVC đến truy cập dữ liệu?
A. Node.js
B. Django
C. Spring Framework
D. Ruby on Rails
98. Spring Boot làm cho việc phát triển ứng dụng Spring trở nên dễ dàng hơn chủ yếu bằng cách nào?
A. Yêu cầu cấu hình XML phức tạp hơn để kiểm soát hoàn toàn.
B. Cung cấp các phụ thuộc ‘starter’ và tự động cấu hình (autoconfiguration) cho nhiều thành phần phổ biến.
C. Buộc nhà phát triển phải viết tất cả logic server-side từ đầu.
D. Chỉ hỗ trợ phát triển các ứng dụng desktop, không phải web.
99. Để kết nối ứng dụng Java với cơ sở dữ liệu quan hệ, API chuẩn nào được sử dụng?
A. JMS (Java Message Service)
B. JNDI (Java Naming and Directory Interface)
C. JDBC (Java Database Connectivity)
D. JPA (Java Persistence API)
100. Khi xây dựng một RESTful API với Spring Boot, annotation nào thường được sử dụng để đánh dấu một lớp là một controller xử lý các yêu cầu REST?
A. ‘@Controller’
B. ‘@Service’
C. ‘@Repository’
D. ‘@RestController’
101. ORM (Object-Relational Mapping) như Hibernate hoặc JPA có lợi ích chính gì trong phát triển ứng dụng web Java?
A. Giảm bớt nhu cầu tương tác với cơ sở dữ liệu.
B. Chuyển đổi dữ liệu giữa đối tượng Java và bảng cơ sở dữ liệu, giúp nhà phát triển làm việc với các đối tượng thay vì SQL thuần.
C. Cải thiện hiệu suất của JavaScript trên client-side.
D. Tự động tạo giao diện người dùng dựa trên cấu trúc cơ sở dữ liệu.
102. Trong Spring Security, mục đích chính của ‘Authentication’ là gì?
A. Xác định quyền truy cập của người dùng vào các tài nguyên cụ thể.
B. Xác minh danh tính của người dùng (ai là người dùng).
C. Mã hóa dữ liệu nhạy cảm trước khi lưu trữ.
D. Quản lý các phiên làm việc của người dùng.
103. Để đóng gói ứng dụng web Java (bao gồm mã nguồn, tài nguyên, thư viện) thành một file triển khai duy nhất, định dạng file nào thường được sử dụng?
A. .JAR (Java Archive)
B. .ZIP (Compressed Archive)
C. .WAR (Web Application Archive)
D. .EAR (Enterprise Archive)
104. Khi sử dụng Maven để quản lý dự án Java web, file ‘pom.xml’ có vai trò gì?
A. Chứa mã nguồn chính của ứng dụng.
B. Mô tả cấu trúc dự án, các phụ thuộc (dependencies), và cách xây dựng dự án.
C. Là file cấu hình cho cơ sở dữ liệu.
D. Chứa các đoạn mã JavaScript cho giao diện người dùng.
105. Trong ngữ cảnh phát triển web Java, JSP (JavaServer Pages) có mục đích chính là gì?
A. Thực hiện các tác vụ xử lý nghiệp vụ phức tạp trên server.
B. Tạo các thành phần giao diện người dùng tương tác trên client-side.
C. Giúp nhúng mã Java vào các trang HTML để tạo nội dung web động.
D. Quản lý kết nối cơ sở dữ liệu một cách hiệu quả.
106. Sự khác biệt cơ bản giữa Servlet và JSP là gì?
A. Servlet chỉ dùng cho logic, JSP chỉ dùng cho view.
B. Servlet là mã Java thuần để xử lý yêu cầu, JSP là trang HTML chứa mã Java để tạo giao diện.
C. Servlet được biên dịch trên client, JSP được biên dịch trên server.
D. Servlet đã lỗi thời, JSP là công nghệ hiện đại hơn.
107. Công nghệ nào thường được sử dụng để tạo ra các trang web động thay thế cho JSP trong các framework hiện đại như Spring Boot, ví dụ như Thymeleaf?
A. Swing
B. JavaFX
C. Template Engines (như Thymeleaf, FreeMarker)
D. Applets
108. Để xử lý ngoại lệ toàn cục trong ứng dụng web Spring MVC/Spring Boot, cơ chế nào thường được sử dụng để cung cấp phản hồi lỗi thân thiện cho người dùng?
A. Sử dụng khối ‘try-catch’ trong mọi phương thức controller.
B. Sử dụng ‘@ExceptionHandler’ hoặc ‘@ControllerAdvice’.
C. Chỉ dựa vào máy chủ ứng dụng để xử lý lỗi mặc định.
D. Ghi tất cả lỗi vào console và không thông báo cho người dùng.
109. Trong phát triển Microservices với Spring Boot, lợi ích chính của việc sử dụng một API Gateway là gì?
A. Giảm số lượng microservices cần thiết.
B. Cung cấp một điểm truy cập duy nhất cho các client, xử lý định tuyến, bảo mật, và hợp nhất các phản hồi từ nhiều service.
C. Thay thế hoàn toàn cơ sở dữ liệu của các microservices.
D. Chỉ dùng để triển khai các ứng dụng frontend.
110. Mối quan hệ ‘Many-to-Many’ trong JPA/Hibernate thường được quản lý bằng cách nào trong cơ sở dữ liệu quan hệ?
A. Thêm một cột khóa ngoại vào một trong hai bảng chính.
B. Tạo một bảng trung gian (junction table) với hai khóa ngoại trỏ đến hai bảng chính.
C. Gộp dữ liệu của cả hai thực thể vào cùng một bảng.
D. Sử dụng một trường dữ liệu JSON để lưu trữ mối quan hệ.
111. Khi xây dựng một ứng dụng web Java cần tải lên file, đối tượng nào trong Servlet API được sử dụng để xử lý dữ liệu từ biểu mẫu có ‘enctype=”multipart/form-data”‘?
A. ‘HttpServletRequest.getParameter()’
B. ‘HttpServletRequest.getInputStream()’
C. Đối tượng ‘Part’ (Servlet 3.0+ API)
D. Đối tượng ‘Cookie’
112. Lỗ hổng bảo mật ‘SQL Injection’ xảy ra khi nào trong ứng dụng web Java?
A. Người dùng nhập mã HTML độc hại vào trường văn bản.
B. Ứng dụng hiển thị thông báo lỗi quá chi tiết cho người dùng.
C. Kẻ tấn công chèn mã SQL độc hại vào các trường input để thao túng truy vấn cơ sở dữ liệu.
D. Mật khẩu của người dùng được lưu trữ dưới dạng văn bản thuần.
113. Để đảm bảo các kết nối cơ sở dữ liệu được tái sử dụng hiệu quả và giảm chi phí khởi tạo, ứng dụng web Java thường sử dụng kỹ thuật nào?
A. Mở và đóng kết nối cho mỗi truy vấn.
B. Sử dụng Connection Pooling.
C. Lưu trữ kết nối toàn cục trong một biến static.
D. Chỉ dùng một kết nối duy nhất cho toàn bộ ứng dụng.
114. Trong Spring MVC, annotation nào được sử dụng để liên kết một tham số phương thức của controller với một giá trị từ URL path (ví dụ: ‘/users/{id}’)?
A. ‘@RequestParam’
B. ‘@RequestBody’
C. ‘@PathVariable’
D. ‘@ModelAttribute’
115. Khi muốn tạo một ứng dụng web Java đơn giản, độc lập (standalone) với máy chủ nhúng và cấu hình tối thiểu, lựa chọn nào sau đây là phù hợp nhất?
A. Java Servlet API truyền thống với file ‘web.xml’.
B. Spring Boot.
C. JavaServer Faces (JSF).
D. Enterprise JavaBeans (EJB).
116. JSON (JavaScript Object Notation) được sử dụng phổ biến trong phát triển ứng dụng web Java cho mục đích gì?
A. Là ngôn ngữ lập trình chính cho logic backend.
B. Định nghĩa cấu trúc cơ sở dữ liệu quan hệ.
C. Trao đổi dữ liệu giữa server và client (đặc biệt trong RESTful API).
D. Viết các tập lệnh phía client để điều khiển UI.
117. CSRF (Cross-Site Request Forgery) là một lỗ hổng bảo mật mà kẻ tấn công lợi dụng để làm gì?
A. Đánh cắp thông tin nhạy cảm của người dùng từ trình duyệt.
B. Tiêm mã độc vào trang web để người dùng khác bị ảnh hưởng.
C. Buộc trình duyệt của người dùng gửi một yêu cầu HTTP không mong muốn đến một trang web mà người dùng đã xác thực.
D. Thực hiện tấn công từ chối dịch vụ (DoS) vào máy chủ.
118. Để xác thực người dùng trong một ứng dụng Spring Boot, interface ‘UserDetailsService’ được sử dụng để làm gì?
A. Định nghĩa các vai trò (roles) và quyền (permissions) của người dùng.
B. Tải thông tin người dùng dựa trên tên người dùng, thường từ cơ sở dữ liệu hoặc nguồn khác.
C. Mã hóa mật khẩu của người dùng trước khi lưu trữ.
D. Quản lý các phiên đăng nhập đang hoạt động của người dùng.
119. Lợi ích chính của việc sử dụng các Bean Managed Transactions (BMT) trong Java EE là gì?
A. Cho phép container quản lý hoàn toàn các giao dịch một cách tự động.
B. Cung cấp cho nhà phát triển quyền kiểm soát tường minh và chi tiết hơn đối với ranh giới giao dịch.
C. Chỉ dùng cho các ứng dụng web đơn giản, không có cơ sở dữ liệu.
D. Giảm thiểu nhu cầu về giao dịch, tăng hiệu suất mà không cần quản lý.
120. Mục đích chính của ‘dependency injection’ (DI) trong Spring Framework là gì?
A. Giảm sự phụ thuộc giữa các thành phần phần mềm bằng cách quản lý và cung cấp các phụ thuộc tự động.
B. Tạo ra các đối tượng mới mỗi khi chúng được yêu cầu.
C. Biến đổi code Java thành HTML để hiển thị trên trình duyệt.
D. Kết nối trực tiếp đến cơ sở dữ liệu mà không cần driver.
121. Trong phát triển ứng dụng web Java, phương thức nào dưới đây được gọi chỉ một lần khi một Servlet được khởi tạo lần đầu tiên bởi bộ chứa web?
A. `doGet()`
B. `destroy()`
C. `init()`
D. `service()`
122. Điểm khác biệt chính giữa phương thức HTTP GET và POST khi gửi dữ liệu từ trình duyệt đến máy chủ là gì?
A. POST được dùng cho các yêu cầu chỉ đọc.
B. GET truyền dữ liệu qua URL, POST truyền trong phần thân yêu cầu.
C. GET an toàn hơn POST.
D. GET chỉ có thể gửi dữ liệu số, POST hỗ trợ gửi file lớn qua URL.
123. Trong một ứng dụng Spring Boot, annotation nào được sử dụng để đánh dấu một lớp là bộ điều khiển RESTful, xử lý các yêu cầu web và trả về dữ liệu trực tiếp trong phần thân phản hồi?
A. `@Service`
B. `@Controller`
C. `@Repository`
D. `@RestController`
124. Tập tin `pom.xml` trong một dự án Maven dùng để làm gì trong quá trình phát triển ứng dụng web Java?
A. Lưu trữ mã nguồn Java của ứng dụng.
B. Định nghĩa các route API của ứng dụng.
C. Định nghĩa cấu hình dự án, bao gồm các dependency và plugin.
D. Chứa các tệp tài nguyên tĩnh của ứng dụng.
125. Để duy trì trạng thái người dùng giữa các yêu cầu HTTP trong một ứng dụng Servlet, đối tượng nào thường được sử dụng?
A. `ServletContext`
B. `HttpServletResponse`
C. `HttpSession`
D. `HttpServletRequest`
126. Lợi ích chính của việc sử dụng Spring Boot trong phát triển ứng dụng web Java là gì so với Spring Framework truyền thống?
A. Chỉ hỗ trợ phát triển các ứng dụng desktop.
B. Cung cấp hiệu suất chạy nhanh hơn đáng kể so với các framework khác.
C. Đơn giản hóa cấu hình và triển khai với cấu hình tự động và máy chủ nhúng.
D. Yêu cầu cấu hình thủ công phức tạp hơn.
127. Công nghệ JavaServer Pages (JSP) chủ yếu được sử dụng cho mục đích gì trong phát triển ứng dụng web Java?
A. Định nghĩa các API RESTful.
B. Tạo các trang web động bằng cách nhúng mã Java vào HTML.
C. Quản lý cơ sở dữ liệu.
D. Thực thi logic nghiệp vụ phía máy chủ.
128. JDBC (Java Database Connectivity) đóng vai trò gì trong ứng dụng web Java?
A. Là một thư viện để xử lý dữ liệu JSON.
B. Là một framework để xây dựng giao diện người dùng.
C. Cung cấp API để ứng dụng Java kết nối và tương tác với cơ sở dữ liệu.
D. Dùng để triển khai ứng dụng lên máy chủ.
129. Trong Servlet, sự khác biệt cơ bản giữa việc sử dụng ‘RequestDispatcher.forward()’ và ‘HttpServletResponse.sendRedirect()’ là gì?
A. ‘forward()’ thay đổi URL trình duyệt.
B. ‘forward()’ chỉ hoạt động với tài nguyên tĩnh, ‘sendRedirect()’ không thể gửi dữ liệu.
C. ‘forward()’ chuyển tiếp nội bộ trên máy chủ, ‘sendRedirect()’ tạo yêu cầu mới từ trình duyệt và thay đổi URL.
D. ‘sendRedirect()’ giữ nguyên yêu cầu ban đầu.
130. Trong Spring Boot, để tạo một giao diện kho lưu trữ (repository interface) cho phép tương tác với cơ sở dữ liệu một cách dễ dàng mà không cần viết các triển khai chi tiết cho các thao tác CRUD cơ bản, chúng ta thường kế thừa từ interface nào?
A. `CrudRepository`
B. `Repository`
C. `MongoRepository`
D. `JpaRepository`
131. Tập tin có phần mở rộng ‘.war’ (Web Application Archive) được sử dụng cho mục đích gì trong phát triển ứng dụng web Java?
A. Chứa các dependency của dự án.
B. Lưu trữ mã nguồn Java.
C. Đóng gói toàn bộ ứng dụng web Java để triển khai lên máy chủ.
D. Dùng để cấu hình cơ sở dữ liệu.
132. Annotation `@Autowired` trong Spring Framework được sử dụng để làm gì?
A. Đánh dấu một phương thức là điểm cuối API.
B. Khai báo một bean mới trong cấu hình Spring.
C. Tự động tiêm các dependency (dependency injection) vào một bean.
D. Định nghĩa một transaction.
133. Trong một ứng dụng web Java, đối tượng `ServletContext` có vòng đời như thế nào?
A. Được tạo cho mỗi yêu cầu HTTP.
B. Được tạo cho mỗi phiên người dùng.
C. Được tạo khi ứng dụng web khởi động và hủy khi ứng dụng dừng.
D. Được tạo cho mỗi Servlet.
134. Trong Spring MVC, để xử lý các ngoại lệ (exceptions) một cách tập trung cho nhiều phương thức trong một bộ điều khiển hoặc trên toàn bộ ứng dụng, annotation nào thường được sử dụng?
A. `@ControllerAdvice`
B. `@ErrorController`
C. `@ResponseStatus`
D. `@ExceptionHandler`
135. Mô hình kiến trúc MVC (Model-View-Controller) trong phát triển ứng dụng web Java có mục đích chính là gì?
A. Giảm thiểu việc sử dụng bộ nhớ.
B. Tách biệt logic ứng dụng thành Model, View, Controller để cải thiện tính tổ chức và bảo trì.
C. Tăng cường bảo mật cho ứng dụng web.
D. Tự động tạo mã nguồn cho ứng dụng.
136. Servlet Filter trong Java web development được sử dụng để làm gì?
A. Quản lý các kết nối cơ sở dữ liệu.
B. Chặn và xử lý yêu cầu/phản hồi HTTP trước hoặc sau khi chúng đến/rời khỏi Servlet.
C. Chỉ dùng để chuyển tiếp yêu cầu đến một Servlet khác.
D. Chỉ dùng để tạo các trang HTML động.
137. Để bảo vệ ứng dụng web Java của bạn khỏi các cuộc tấn công phổ biến như CSRF (Cross-Site Request Forgery) trong môi trường Spring, cơ chế nào thường được sử dụng để thêm một token ẩn vào các biểu mẫu và yêu cầu POST?
A. Chỉ dùng phương thức GET cho mọi yêu cầu.
B. Sử dụng HTTPS bắt buộc.
C. Mã hóa tất cả dữ liệu người dùng trong cơ sở dữ liệu.
D. Spring Security với CSRF token.
138. JAX-RS (Java API for RESTful Web Services) là một đặc tả của Java EE/Jakarta EE dùng để làm gì?
A. Tạo các trang web động với JSP.
B. Quản lý vòng đời của EJB.
C. Xây dựng giao diện người dùng dựa trên swing.
D. Phát triển các dịch vụ web RESTful trong Java.
139. Khái niệm Dependency Injection (DI) trong Spring Framework giúp đạt được điều gì trong phát triển ứng dụng?
A. Tăng tốc độ thực thi mã nguồn.
B. Giảm sự ghép nối giữa các thành phần, tăng tính mô đun hóa và khả năng kiểm thử.
C. Tự động sinh mã cho các lớp DAO.
D. Đơn giản hóa việc tạo giao diện người dùng.
140. Trong một ứng dụng Spring Boot, tập tin `application.properties` hoặc `application.yml` thường được sử dụng để làm gì?
A. Lưu trữ mã nguồn Java.
B. Chứa các dependency của dự án.
C. Định nghĩa các thuộc tính cấu hình ứng dụng như cổng máy chủ, kết nối cơ sở dữ liệu.
D. Định nghĩa các API RESTful.
141. Trong Spring MVC, annotation `@RequestMapping` được sử dụng để làm gì?
A. Chỉ định một lớp là bean cấu hình.
B. Ánh xạ các yêu cầu HTTP đến các phương thức xử lý trong bộ điều khiển.
C. Đánh dấu một lớp là một service.
D. Định nghĩa một entity trong JPA.
142. Vai trò chính của một bộ chứa web (Web container, ví dụ Tomcat) trong phát triển ứng dụng web Java là gì?
A. Là một cơ sở dữ liệu quan hệ.
B. Chỉ dùng để biên dịch mã Java.
C. Cung cấp giao diện đồ họa người dùng cho người dùng cuối.
D. Quản lý vòng đời của Servlet và JSP, xử lý yêu cầu/phản hồi HTTP.
143. Mối quan hệ giữa JPA (Java Persistence API) và Hibernate trong ngữ cảnh phát triển ứng dụng web Java là gì?
A. Hibernate là một ngôn ngữ truy vấn.
B. JPA là một framework giao diện người dùng.
C. JPA là đặc tả, Hibernate là một triển khai của JPA.
D. Hibernate là phiên bản cũ hơn của JPA, JPA chỉ dùng cho NoSQL.
144. Trong một ứng dụng Spring Boot sử dụng Spring MVC, nếu bạn muốn sử dụng một công cụ tạo mẫu (template engine) để tạo ra các trang HTML động, nào là một lựa chọn phổ biến và được tích hợp tốt với Spring?
A. Angular
B. React
C. Vue.js
D. Thymeleaf
145. Trong phát triển ứng dụng web, CORS (Cross-Origin Resource Sharing) là một cơ chế cho phép điều gì?
A. Ngăn chặn tất cả các yêu cầu từ các miền khác.
B. Là một ngôn ngữ lập trình frontend.
C. Chỉ cho phép giao tiếp giữa các ứng dụng trên cùng một máy chủ.
D. Cho phép tài nguyên trên một miền web được yêu cầu từ một miền khác một cách an toàn.
146. Trong kiến trúc Spring MVC, DispatcherServlet đóng vai trò gì?
A. Chỉ để phục vụ các tài nguyên tĩnh.
B. Là một lớp để mã hóa mật khẩu.
C. Hoạt động như bộ điều khiển mặt trước, nhận và ủy quyền yêu cầu đến các bộ điều khiển khác.
D. Là một công cụ để tạo cơ sở dữ liệu.
147. Khi sử dụng JPA (Java Persistence API) trong ứng dụng web Java, annotation nào được sử dụng để đánh dấu một lớp Java là một entity, tương ứng với một bảng trong cơ sở dữ liệu?
A. `@Id`
B. `@Table`
C. `@Column`
D. `@Entity`
148. Tại sao việc sử dụng một framework logging (ví dụ: Logback, SLF4J, Log4j) lại quan trọng trong phát triển ứng dụng web Java, thay vì chỉ sử dụng `System.out.println()`?
A. `System.out.println()` chỉ dùng cho ứng dụng desktop.
B. `System.out.println()` không được phép trong Java web.
C. Framework logging tự động sửa lỗi mã.
D. Framework logging cung cấp cấp độ log, cấu hình linh hoạt và quản lý hiệu suất tốt hơn so với `System.out.println()`.
149. Khái niệm POJO (Plain Old Java Object) thường được áp dụng như thế nào trong phát triển ứng dụng web Java hiện đại (ví dụ: với Spring/JPA)?
A. Là các đối tượng Java có chứa nhiều logic nghiệp vụ phức tạp.
B. Là một dạng đặc biệt của interface.
C. Là các đối tượng Java đơn giản không cần kế thừa từ lớp framework hoặc triển khai giao diện đặc biệt.
D. Là các lớp phải được triển khai như một Servlet.
150. Một trong những nguyên tắc cốt lõi của kiến trúc RESTful là ‘stateless’ (phi trạng thái). Điều này có nghĩa là gì đối với các yêu cầu gửi đến API?
A. Máy chủ phải duy trì phiên hoạt động của từng client.
B. Các yêu cầu phải được gửi tuần tự theo thứ tự.
C. Mỗi yêu cầu từ client phải chứa tất cả thông tin cần thiết, máy chủ không lưu trạng thái client.
D. Tất cả dữ liệu phải được mã hóa.