Tất cả câu hỏi
Ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết.
5.160/20.347 câuCòn 15.187
5141Thymeleaf can be used to process:4 lựa chọn
AOnly HTML files.
BHTML, XML, JavaScript, CSS, and plain text.
COnly server-side Java code.
DOnly database queries.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "HTML, XML, JavaScript, CSS, and plain text.". Thymeleaf là template engine (bộ máy mẫu) phía server cho Java, hỗ trợ sáu chế độ mẫu: HTML và XML là chế độ đánh dấu, TEXT, JAVASCRIPT và CSS là chế độ văn bản, cùng RAW để xuất nguyên văn; nhờ vậy nó sinh được trang web, tệp XML, đoạn script hay nội dung email dạng văn bản thuần. "Only HTML files." sai vì HTML chỉ là chế độ thường gặp nhất trong Spring MVC chứ không phải duy nhất. "Only server-side Java code." sai vì Thymeleaf không xử lý mã Java, nó xử lý mẫu và chỉ đọc dữ liệu từ model qua biểu thức. "Only database queries." sai vì truy vấn cơ sở dữ liệu là việc của JPA hay JDBC, Thymeleaf không truy cập cơ sở dữ liệu.
5142Thymeleaf integrates well with:4 lựa chọn
AReact.js
BAngular.js
CSpring MVC.
DNode.js
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Spring MVC.". Thymeleaf là template engine chạy phía máy chủ trên Java và có module tích hợp riêng thymeleaf-spring: ThymeleafViewResolver cắm vào luồng của DispatcherServlet, template đọc được dữ liệu trong Model, dùng biểu thức Spring EL, liên kết form với đối tượng qua th:object và th:field, hiển thị lỗi validation; Spring Boot còn tự cấu hình mọi thứ khi có spring-boot-starter-thymeleaf. "React.js" là thư viện JavaScript dựng giao diện phía trình duyệt, tự render bằng JavaScript nên không dùng template máy chủ của Java. "Angular.js" cũng là framework phía client có cú pháp template riêng chạy trong trình duyệt. "Node.js" là môi trường chạy JavaScript phía máy chủ, dùng các engine như EJS hay Pug, còn Thymeleaf là thư viện Java nên không chạy trên môi trường đó.
5143In Thymeleaf, which expression is used to create a link?4 lựa chọncó code
<a th:href="______">Home</a>A${/home}
B#{/home}
C@{/home}
D~{/home}
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "@{/home}". Trong cú pháp biểu thức chuẩn của Thymeleaf, @{...} là biểu thức URL liên kết (link URL expression): với đường dẫn bắt đầu bằng dấu gạch chéo, Thymeleaf tự thêm context path của ứng dụng, cho phép truyền tham số như @{/home(id=${id})} và mã hoá URL, nên th:href="@{/home}" sinh ra liên kết đúng dù ứng dụng chạy ở đường dẫn gốc nào. "${/home}" là biểu thức biến, dùng để đọc thuộc tính trong model, còn /home không phải tên biến hợp lệ. "#{/home}" là biểu thức thông điệp, dùng để tra khoá trong tệp messages cho đa ngôn ngữ. "~{/home}" là biểu thức fragment, dùng với th:insert hoặc th:replace để chèn một mảnh template, không tạo đường dẫn liên kết.
AXML templates
BText templates
CJSON templates
DBinary templates
Lời giải
Mở trang câu hỏi này →Đáp án đúng gồm hai ý: "XML templates" và "Text templates". Thymeleaf xử lý sáu chế độ template (template mode): HTML, XML, TEXT, JAVASCRIPT, CSS và RAW; trong đó XML là chế độ đánh dấu (markup) dành cho tài liệu XML hợp lệ, còn TEXT là chế độ văn bản thuần dùng cú pháp biểu thức nội tuyến để sinh email chữ, tệp cấu hình hay văn bản bất kỳ không có thẻ. "JSON templates" sai vì Thymeleaf không có chế độ JSON riêng; muốn sinh JSON thì dùng chế độ TEXT hoặc JAVASCRIPT, còn trong ứng dụng Spring thường để Jackson tuần tự hoá đối tượng. "Binary templates" sai vì Thymeleaf là template engine cho dữ liệu dạng văn bản, không xử lý tệp nhị phân như ảnh hay PDF.
Ath:if
Bth:each
Cth:text
Dth:href
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "th:each". Thuộc tính th:each của Thymeleaf lặp qua một tập hợp như List, mảng hay Map và lặp lại phần tử HTML chứa nó cho mỗi phần tử, ví dụ đặt th:each với biểu thức s : ${students} trên thẻ tr sẽ sinh một dòng bảng cho mỗi sinh viên, kèm biến trạng thái cho chỉ số và số đếm. "th:if" chỉ hiển thị phần tử khi biểu thức đúng, là điều kiện chứ không phải vòng lặp. "th:text" thay nội dung văn bản của phần tử bằng giá trị biểu thức, có thoát ký tự HTML. "th:href" tính giá trị thuộc tính href, thường kèm cú pháp liên kết @{...} để dựng URL đúng context path. Muốn hiển thị danh sách thì dùng th:each bao ngoài, rồi th:text bên trong cho từng giá trị.
5146Which annotation creates REST controller?4 lựa chọn
A@RestController
B@Service
C@Entity
D@Bean
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "@RestController". @RestController là annotation tổng hợp gồm @Controller và @ResponseBody: lớp vẫn là handler web được Spring MVC quét, nhưng giá trị trả về của mọi phương thức được ghi thẳng vào thân phản hồi HTTP thông qua HttpMessageConverter, thường chuyển đối tượng Java thành JSON bằng Jackson, thay vì bị hiểu là tên view. Đây là cách viết REST API chuẩn trong Spring. "@Service" đánh dấu bean tầng nghiệp vụ, không nhận yêu cầu HTTP. "@Entity" là annotation JPA đánh dấu lớp ánh xạ tới bảng cơ sở dữ liệu. "@Bean" đặt trên phương thức trong lớp @Configuration để khai báo rằng đối tượng trả về được đăng ký làm bean, không liên quan tới việc xử lý yêu cầu REST.
5147Which tool creates Spring Boot project quickly?4 lựa chọn
ASpring Initializr
BMaven Archetype
CGradle Plugin
DJDK installer
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Spring Initializr". Spring Initializr là dịch vụ tạo khung dự án Spring Boot, dùng qua trang start.spring.io hoặc tích hợp sẵn trong IntelliJ IDEA, VS Code, Spring Tool Suite: chỉ cần chọn Maven hay Gradle, phiên bản Java, Spring Boot và các starter như Web, Data JPA, Thymeleaf là nhận ngay một dự án có sẵn lớp main, pom.xml hoặc build.gradle và application.properties. "Maven Archetype" là cơ chế mẫu dự án chung của Maven, dùng được cho mọi loại dự án Java nhưng không chọn starter Spring Boot nhanh như vậy. "Gradle Plugin" ở đây là plugin Spring Boot cho Gradle, dùng để chạy và đóng gói jar chạy được, chứ không sinh dự án mới. "JDK installer" chỉ cài bộ công cụ phát triển Java, là điều kiện cần nhưng không tạo dự án.
ADatabase connectivity.
BWeb application development.
CSecurity configuration.
DMessaging.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Web application development.". spring-boot-starter-web là starter POM (gói phụ thuộc khởi đầu) gom sẵn Spring MVC, Jackson để chuyển đổi JSON và Tomcat nhúng, đủ để viết ứng dụng web và REST API chỉ với một phụ thuộc; auto-configuration sẽ tự dựng DispatcherServlet và máy chủ nhúng khi thấy các thư viện này trên classpath. "Database connectivity." sai vì kết nối cơ sở dữ liệu đến từ spring-boot-starter-data-jpa hoặc spring-boot-starter-jdbc. "Security configuration." sai vì bảo mật có starter riêng là spring-boot-starter-security. "Messaging." sai vì nhắn tin dùng các starter như spring-boot-starter-amqp cho RabbitMQ hay thư viện spring-kafka, không nằm trong starter web.
5149Spring Boot embedded servers include:4 lựa chọn
AApache Tomcat
BJetty
CUndertow
DAll of the above
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "All of the above". Trong các bản Spring Boot 2.x và 3.x, ứng dụng servlet được hỗ trợ sẵn ba web server nhúng (embedded server): thêm spring-boot-starter-web thì mặc định là Tomcat, và có thể loại Tomcat ra rồi thêm starter tương ứng để đổi sang Jetty hoặc Undertow; server chạy ngay trong tiến trình khi khởi động ứng dụng từ tệp jar, không cần cài server ngoài. "Apache Tomcat" đúng nhưng chỉ là lựa chọn mặc định, chọn riêng nó bỏ sót hai server kia. "Jetty" là server nhúng nhẹ của Eclipse, được hỗ trợ qua spring-boot-starter-jetty, nhưng cũng chỉ là một phần của danh sách. "Undertow" là server hiệu năng cao của Red Hat, hỗ trợ qua spring-boot-starter-undertow, cũng chưa đủ. Vì câu hỏi liệt kê các server nhúng nên chọn đáp án bao gồm cả ba.
5150Which JavaFX layout should you use to divide the window into top, bottom, center, left, and right?4 lựa chọn
A
StackPaneB
BorderPaneC
HBoxD
VBoxLời giải
Mở trang câu hỏi này →Đáp án đúng: "BorderPane". Yêu cầu chia cửa sổ thành top, bottom, center, left và right khớp đúng năm vùng của BorderPane: mỗi vùng giữ tối đa một nút, gán bằng setTop, setBottom, setLeft, setRight, setCenter; vùng trên và dưới kéo hết chiều ngang, vùng trái phải lấy theo chiều rộng ưa thích của nút, còn center giãn ra lấp phần còn lại khi cửa sổ đổi kích thước. "StackPane" chồng các nút con lên nhau tại cùng một vị trí, mặc định căn giữa, hợp với việc đặt chữ lên ảnh nền chứ không chia vùng. "HBox" chỉ xếp các nút theo một hàng ngang. "VBox" chỉ xếp các nút theo một cột dọc. Muốn có năm vùng bằng HBox hay VBox phải lồng nhiều layout, trong khi BorderPane làm sẵn việc đó.
A
HandlerMappingB
HandlerAdapterC
ViewResolverD
ModelAndViewLời giải
Mở trang câu hỏi này →Đáp án đúng: "HandlerMapping". Trong luồng xử lý của Spring MVC, DispatcherServlet nhận mọi yêu cầu rồi hỏi các HandlerMapping, ví dụ RequestMappingHandlerMapping đọc @RequestMapping và @GetMapping, để tìm phương thức controller khớp với URL và phương thức HTTP; kết quả là một handler cùng chuỗi interceptor. "HandlerAdapter" đứng ở bước sau: khi đã biết handler nào, adapter mới thực sự gọi nó, lo phần gắn tham số và xử lý giá trị trả về, chứ không phải nơi tìm handler. "ViewResolver" làm việc ở cuối luồng, đổi tên view logic như home thành một View cụ thể như template Thymeleaf. "ModelAndView" chỉ là đối tượng chứa dữ liệu model và tên view mà handler trả về, không ánh xạ yêu cầu nào.
5152In the Spring MVC request lifecycle, which component is the first to receive an incoming request?4 lựa chọn
A
ControllerB
HandlerMappingC
DispatcherServletD
ViewResolverLời giải
Mở trang câu hỏi này →Đáp án đúng: "DispatcherServlet". Spring MVC theo mẫu front controller (bộ điều khiển đứng trước): DispatcherServlet được đăng ký là servlet nhận mọi yêu cầu khớp mẫu URL của ứng dụng, rồi điều phối phần còn lại của vòng đời. "HandlerMapping" chỉ được DispatcherServlet hỏi sau khi yêu cầu đã tới, để tìm handler phù hợp với URL và phương thức HTTP. "Controller" chỉ được gọi gián tiếp qua HandlerAdapter khi handler đã được xác định, nên nhận yêu cầu ở khâu giữa chứ không phải đầu tiên. "ViewResolver" đứng gần cuối chuỗi, đổi tên view logic do controller trả về thành view thực tế để dựng phản hồi. Các Filter của Servlet container, như bộ lọc của Spring Security, có thể chạm yêu cầu trước DispatcherServlet, nhưng trong các thành phần của Spring MVC thì DispatcherServlet là cửa vào đầu tiên.
5153In Spring MVC, what are interceptors used for?4 lựa chọn
AOnly for handling exceptions.
BOnly for mapping requests.
CFor cross cutting concerns like logging, authentication, and authorization.
DOnly for defining views.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "For cross cutting concerns like logging, authentication, and authorization.". Interceptor trong Spring MVC là lớp hiện thực HandlerInterceptor, được DispatcherServlet gọi quanh việc xử lý của handler: preHandle trước controller, postHandle sau controller nhưng trước khi render view, và afterCompletion khi yêu cầu xong; nhờ vậy nó hợp cho các mối quan tâm cắt ngang (cross-cutting concerns) áp cho nhiều controller như ghi log, kiểm tra đăng nhập, phân quyền, đo thời gian. "Only for handling exceptions." sai vì xử lý ngoại lệ có @ExceptionHandler và @ControllerAdvice, interceptor chỉ được báo ngoại lệ trong afterCompletion. "Only for mapping requests." sai vì việc ánh xạ yêu cầu tới controller do HandlerMapping làm, interceptor chỉ được gắn vào kết quả ánh xạ đó. "Only for defining views." sai vì view do controller trả về và ViewResolver phân giải; postHandle có thể chỉnh ModelAndView nhưng đó không phải mục đích duy nhất, chữ Only làm phát biểu sai.
5154Which annotation marks a controller?4 lựa chọn
A@Controller
B@Service
C@Repository
D@RestResource
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "@Controller". @Controller là stereotype annotation (annotation đánh dấu vai trò) cho lớp xử lý yêu cầu web trong Spring MVC; nó được gắn @Component nên lớp được component scanning phát hiện và đăng ký làm bean, đồng thời Spring MVC quét các phương thức có @RequestMapping hay @GetMapping trong lớp đó để làm handler. Giá trị trả về thường là tên view. "@Service" cũng là một stereotype nhưng dành cho tầng nghiệp vụ, không được coi là handler web. "@Repository" đánh dấu tầng truy cập dữ liệu và còn bật cơ chế dịch exception của tầng lưu trữ sang DataAccessException của Spring. "@RestResource" là annotation của Spring Data REST dùng để tuỳ chỉnh đường dẫn hay ẩn hiện một repository khi được xuất thành tài nguyên REST, không đánh dấu controller.
5155In the MVC pattern, what is the role of the Model?4 lựa chọn
ATo handle user input.
BTo display data to the user.
CTo manage the application's data and business logic.
DTo route requests to the appropriate handlers.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "To manage the application's data and business logic.". Trong mẫu MVC (Model-View-Controller), Model là phần nắm dữ liệu và quy tắc nghiệp vụ của ứng dụng, độc lập với cách hiển thị; trong Spring MVC, phần này gồm các thực thể, service và repository, còn đối tượng Model truyền sang view chỉ là chỗ đựng dữ liệu mà controller đã chuẩn bị. "To handle user input." là vai trò của Controller, nơi nhận yêu cầu, đọc tham số rồi gọi Model. "To display data to the user." là vai trò của View, như template Thymeleaf hoặc trang JSP, chỉ trình bày dữ liệu nhận được. "To route requests to the appropriate handlers." là việc của bộ điều phối như DispatcherServlet cùng HandlerMapping trong Spring MVC, thuộc khung xử lý chứ không phải Model.
AA database connection.
BA model and view.
CA user interface.
DA security token.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "A model and view.". Trong Spring MVC, sau khi phương thức controller xử lý xong, nó trả cho DispatcherServlet thông tin để dựng phản hồi: hoặc một đối tượng ModelAndView chứa dữ liệu và tên view, hoặc một String tên view kèm dữ liệu đã đặt vào Model; DispatcherServlet sau đó nhờ ViewResolver tìm view và dựng HTML từ model. Với @RestController thì đối tượng trả về được chuyển thẳng thành JSON, nhưng với controller dựng trang truyền thống thì model kèm view là kết quả điển hình. "A database connection." sai vì kết nối cơ sở dữ liệu do DataSource và tầng repository quản lý, controller không trao nó ra ngoài. "A user interface." sai vì controller không tự dựng giao diện; view mới là thứ hiển thị, controller chỉ chỉ ra view nào. "A security token." sai vì token bảo mật do Spring Security hoặc tầng xác thực phát hành, không phải kết quả thông thường của một controller.
5157What is the use of PlatformTransactionManager in Spring?4 lựa chọn
AEncrypt API data
BRender views
CManage database transactions programmatically
DBuild Spring Boot jars
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Manage database transactions programmatically". PlatformTransactionManager là interface trung tâm của hạ tầng giao dịch Spring, với các phương thức getTransaction, commit và rollback; có các hiện thực như DataSourceTransactionManager cho JDBC và JpaTransactionManager cho JPA. Lập trình viên có thể gọi trực tiếp hoặc qua TransactionTemplate để quản lý giao dịch bằng mã, và chính @Transactional kiểu khai báo cũng dựa vào nó phía sau. "Encrypt API data" sai vì mã hoá dữ liệu thuộc Spring Security hoặc thư viện mật mã, không liên quan giao dịch. "Render views" là việc của ViewResolver và view như Thymeleaf. "Build Spring Boot jars" là việc của công cụ build như plugin Maven hoặc Gradle của Spring Boot, không phải một bean chạy lúc ứng dụng hoạt động.
5158Which layout arranges nodes in border regions?4 lựa chọn
A
GridPaneB
BorderPaneC
VBoxD
HBoxLời giải
Mở trang câu hỏi này →Đáp án đúng: "BorderPane". BorderPane là layout của JavaFX chia vùng chứa thành năm khu vực theo các cạnh: top, bottom, left, right và center, đặt nút bằng setTop, setBottom, setLeft, setRight, setCenter; vùng center chiếm phần diện tích còn lại, rất hợp cho bố cục cửa sổ có thanh menu ở trên, thanh trạng thái ở dưới và nội dung chính ở giữa. "GridPane" sắp nút theo lưới hàng và cột, định vị bằng chỉ số hàng cột chứ không theo vùng biên. "VBox" xếp các nút con thành một cột dọc từ trên xuống. "HBox" xếp các nút con thành một hàng ngang từ trái sang phải. Cả GridPane, VBox lẫn HBox đều không có khái niệm các vùng biên của cửa sổ, muốn có bố cục như vậy phải lồng nhiều layout.
5159Which JavaFX control is used to display an image?4 lựa chọn
A
LabelB
ButtonC
TextFieldD
ImageViewLời giải
Mở trang câu hỏi này →Đáp án đúng: "ImageView". Trong JavaFX, ImageView là Node dùng để hiển thị một đối tượng Image đã nạp từ tệp hoặc URL, ví dụ new ImageView(new Image("logo.png")), và cho phép chỉnh kích thước bằng setFitWidth, setFitHeight hay giữ tỉ lệ bằng setPreserveRatio; Image chứa dữ liệu ảnh, còn ImageView là thứ vẽ nó lên Scene. "Label" dùng để hiển thị chữ, tuy có thể gắn kèm một graphic nhưng vai trò chính vẫn là nhãn văn bản và graphic đó thường lại chính là một ImageView. "Button" là nút bấm nhận thao tác nhấn và phát ActionEvent. "TextField" là ô cho người dùng gõ một dòng văn bản, không có chức năng hiển thị ảnh.
A
persist()B
insert()C
save()D
update()Lời giải
Mở trang câu hỏi này →Đáp án đúng: "save()". JpaRepository kế thừa CrudRepository nên có save(S entity); cài đặt mặc định SimpleJpaRepository kiểm tra entity mới hay cũ (thường dựa vào id null hoặc trường @Version): entity mới thì gọi entityManager.persist để INSERT, entity đã có thì gọi entityManager.merge để UPDATE, rồi trả về thực thể đang được quản lý. "persist()" là phương thức của EntityManager trong JPA thuần, chỉ dùng cho entity mới và không nằm trong interface JpaRepository. "insert()" không tồn tại trong JpaRepository; Spring Data không tách riêng thao tác chèn. "update()" cũng không phải phương thức của JpaRepository; muốn cập nhật thì sửa entity rồi gọi save, hoặc viết phương thức có @Modifying kèm @Query.