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.200/20.347 câuCòn 15.147
5181What JavaFX class is used to create a popup dialog for displaying confirmation or error messages?4 lựa chọn
AStage
BScene
CAlert
DPane
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Alert". Lớp javafx.scene.control.Alert, kế thừa Dialog, tạo hộp thoại bật lên dựng sẵn với các loại AlertType như CONFIRMATION, ERROR, WARNING, INFORMATION; gọi showAndWait sẽ hiện hộp thoại và trả về nút người dùng bấm, rất hợp để xác nhận hoặc báo lỗi. "Stage" là cửa sổ cấp cao nhất của JavaFX; tự tạo một Stage mới cũng làm được cửa sổ phụ nhưng phải tự dựng toàn bộ nội dung và nút, không phải lớp chuyên cho hộp thoại thông báo. "Scene" là vùng chứa đồ thị cảnh (scene graph) đặt bên trong một Stage, không phải cửa sổ bật lên. "Pane" chỉ là layout chứa các node con, phải nằm trong một Scene, tự nó không hiển thị thành hộp thoại.
5182Which CSS file customizes JavaFX UI?4 lựa chọn
A
styles.cssB
ui.cssC
design.cssD
theme.xmlLời giải
Mở trang câu hỏi này →Đáp án đúng: "styles.css". JavaFX cho phép định kiểu giao diện bằng CSS: ta nạp tệp bằng scene.getStylesheets().add(...) hoặc khai báo stylesheets trong FXML, rồi viết bộ chọn như .button với thuộc tính có tiền tố -fx-. Cần nói thẳng là JavaFX không bắt buộc tên tệp nào; giao diện mặc định lấy từ stylesheet nội bộ modena.css, còn styles.css chỉ là tên quen dùng mà các mẫu dự án tạo sẵn, nên đây là đáp án được chọn theo thông lệ. Theo đúng kỹ thuật, "ui.css" hay "design.css" vẫn hoạt động y hệt nếu được nạp vào Scene, chúng chỉ không phải tên thông dụng mà câu hỏi muốn nhắc tới. Riêng "theme.xml" sai hẳn vì đó là tệp XML, không phải CSS, và JavaFX không đọc định kiểu giao diện từ XML.
5183Which JavaFX element handles user input events?4 lựa chọn
A
EventHandlerB
SceneGraphC
ControllerD
ActionLời giải
Mở trang câu hỏi này →Đáp án đúng: "EventHandler". Trong JavaFX, interface EventHandler có phương thức handle nhận đối tượng sự kiện và chính kiểu này nhận và xử lý sự kiện người dùng, ví dụ setOnAction trên một nút là gắn một EventHandler cho ActionEvent, còn setOnKeyPressed gắn một EventHandler cho KeyEvent. "Controller" là chỗ dễ nhầm: lớp controller của FXML đúng là nơi viết các phương thức xử lý như onSaveClick, nhưng nó chỉ là lớp chứa mã, còn khi FXMLLoader nối thuộc tính onAction tới phương thức đó thì thứ được gắn lên control vẫn là một EventHandler, nên kiểu trực tiếp nhận và xử lý sự kiện là EventHandler. "SceneGraph" là cây các Node tạo nên giao diện, sự kiện đi qua cây này nhưng nó không xử lý sự kiện. "Action" không phải một kiểu xử lý trong JavaFX; thứ gần nhất là ActionEvent, tức đối tượng mô tả sự kiện, không phải bộ xử lý.
5184Which class loads FXML files?4 lựa chọn
AFXMLLoader
BScene
CStage
DNode
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "FXMLLoader". FXMLLoader đọc tệp FXML (mô tả giao diện bằng XML), dựng cây node tương ứng, tạo đối tượng controller khai báo trong fx:controller, tiêm các trường đánh dấu @FXML rồi trả về nút gốc; cách gọi thường gặp là FXMLLoader.load với URL của tệp .fxml lấy từ getClass().getResource. "Scene" là vùng chứa toàn bộ nội dung của scene graph; nó nhận nút gốc đã được nạp chứ không tự đọc FXML. "Stage" là cửa sổ cấp cao nhất chứa Scene, chỉ lo hiển thị chứ không phân tích tệp. "Node" là lớp cơ sở của mọi thành phần trong scene graph như Button, Label, Pane; kết quả của việc nạp FXML là một Node nhưng bản thân Node không có khả năng nạp tệp giao diện.
A@Column
B@Entity
C@OneToMany
D@Transient
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "@OneToMany". Annotation quan hệ trong JPA mô tả cách một thực thể liên kết với thực thể khác; @OneToMany đặt trên thuộc tính tập hợp, ví dụ một Department có danh sách Employee, cho biết một bản ghi phía này gắn với nhiều bản ghi phía kia, thường đi cặp với @ManyToOne ở phía nhiều qua mappedBy. Cùng nhóm còn có @OneToOne, @ManyToOne và @ManyToMany. "@Column" chỉ cấu hình ánh xạ một trường kiểu đơn tới cột của bảng. "@Entity" khai báo lớp là thực thể, không mô tả liên kết giữa các thực thể. "@Transient" đánh dấu trường không được lưu xuống cơ sở dữ liệu, ngược hẳn với việc ánh xạ một quan hệ.
AServlet
BEntityManager
CJSP
DJDBC Driver
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "EntityManager". EntityManager là giao diện trung tâm của JPA, gắn với một persistence context (ngữ cảnh lưu trữ) là tập các entity đang được quản lý; qua nó ta gọi persist để đưa entity mới vào quản lý, find để nạp theo khoá chính, merge để gộp entity tách rời, remove để xoá và createQuery để chạy JPQL, còn thay đổi trên entity managed được tự động đồng bộ xuống cơ sở dữ liệu khi flush hoặc commit. "Servlet" là thành phần web của Jakarta EE xử lý yêu cầu HTTP, không biết gì về entity. "JSP" là công nghệ trang hiển thị phía máy chủ, thuộc tầng view. "JDBC Driver" là trình điều khiển cấp thấp để gửi câu SQL tới một hệ quản trị cụ thể; JPA provider như Hibernate dùng nó bên dưới, nhưng driver không theo dõi trạng thái entity.
5187What best describes the Java Persistence API (JPA)?4 lựa chọn
AA low-level JDBC driver for vendor-specific SQL
BA specification for managing relational data in Java applications using object-relational mapping
CA GUI tool for database administration in IntelliJ IDEA
DA NoSQL database used by Java applications
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "A specification for managing relational data in Java applications using object-relational mapping". JPA là một đặc tả (specification) của Java, nay thuộc Jakarta EE, định nghĩa cách ánh xạ đối tượng sang bảng quan hệ (ORM) bằng annotation như @Entity, @Id, @OneToMany, cùng API EntityManager và ngôn ngữ truy vấn JPQL; bản thân JPA chỉ là bộ giao diện và luật, phần chạy thật do nhà cung cấp như Hibernate hoặc EclipseLink hiện thực. "A low-level JDBC driver for vendor-specific SQL" sai vì driver JDBC là tầng thấp hơn mà JPA dựa vào bên dưới, JPA còn giúp lập trình viên tránh viết SQL riêng của từng hãng. "A GUI tool for database administration in IntelliJ IDEA" sai vì JPA không phải công cụ giao diện, nó là API dùng trong mã nguồn. "A NoSQL database used by Java applications" sai vì JPA không phải cơ sở dữ liệu và được thiết kế cho dữ liệu quan hệ.
5188Which JPA feature allows relationships between tables?4 lựa chọn
ADependency Injection
BAnnotations
CEntity Relationships
DTransactions
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Entity Relationships". JPA cho phép mô tả quan hệ giữa các entity, tương ứng với quan hệ khoá ngoại giữa các bảng, bằng các ánh xạ @OneToOne, @OneToMany, @ManyToOne và @ManyToMany kèm @JoinColumn hoặc @JoinTable; nhờ đó có thể đi từ đối tượng này sang đối tượng liên quan, ví dụ order.getCustomer(), thay vì tự viết câu JOIN. "Dependency Injection" là cơ chế của Spring tiêm phụ thuộc giữa các bean, không liên quan tới quan hệ dữ liệu giữa bảng. "Annotations" là cú pháp khai báo siêu dữ liệu nói chung; ánh xạ quan hệ quả thật được viết bằng annotation, nhưng annotation chỉ là phương tiện và còn dùng cho vô số việc khác như @Id hay @Column, còn tính năng được hỏi là quan hệ entity. "Transactions" bảo đảm một nhóm thao tác cùng thành công hoặc cùng huỷ, không định nghĩa liên kết giữa các bảng.
A@Table
B@Entity
C@Column
D@Id
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "@Entity". Theo đặc tả JPA, annotation @Entity đặt trên lớp báo cho persistence provider như Hibernate rằng lớp này là một thực thể được quản lý, ánh xạ tới một bảng, và EntityManager có thể persist, find, merge nó; mỗi thực thể bắt buộc có khoá chính. "@Table" chỉ là tuỳ chọn bổ sung để đặt tên bảng, schema khi tên mặc định không hợp, bản thân nó không biến lớp thành thực thể. "@Column" cấu hình ánh xạ của một trường tới cột như tên cột, độ dài, cho phép rỗng hay không. "@Id" đánh dấu trường khoá chính của thực thể; nó cần thiết bên trong một thực thể nhưng không phải dấu hiệu khai báo lớp là thực thể. Thiếu @Entity thì các annotation kia trên lớp đều không có tác dụng.
5190What is the purpose of the @Column annotation in JPA?4 lựa chọn
AIt specifies the primary key field of an entity
BIt maps an entity field to a table column and allows setting column attributes
CIt marks a field that should not be persisted
DIt defines a many-to-many relationship
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "It maps an entity field to a table column and allows setting column attributes". Trong JPA, mỗi trường persistent của entity mặc định ánh xạ tới cột cùng tên; @Column cho phép ghi rõ tên cột và các thuộc tính như name, nullable, unique, length, precision, scale, insertable, updatable, columnDefinition, ví dụ @Column(name = "full_name", nullable = false, length = 100). Hibernate dùng các thông tin này khi sinh DDL tạo bảng và khi dựng câu SQL. "It specifies the primary key field of an entity" là vai trò của @Id, thường đi cùng @GeneratedValue để sinh giá trị khoá. "It marks a field that should not be persisted" là @Transient, trường đó bị bỏ qua hoàn toàn khi lưu và nạp. "It defines a many-to-many relationship" là @ManyToMany, thường kèm @JoinTable để mô tả bảng nối giữa hai entity.
5191You have a controller:
@RestController4 lựa chọncó code
class TestController {
@GetMapping("/hello")
public String hello() { return "Hi"; }
}What is the response of GET /hello request?
AHTML page
BJSON object {"hello":"Hi"}
CPlain text 'Hi'
DError 404
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Plain text 'Hi'". @RestController là gộp của @Controller và @ResponseBody, nên giá trị trả về của hello() không bị coi là tên view mà được ghi thẳng vào thân phản hồi; vì kiểu trả về là String, Spring chọn StringHttpMessageConverter và gửi về đúng chuỗi Hi dạng văn bản thuần. "HTML page" chỉ xảy ra với @Controller thường, khi chuỗi trả về được ViewResolver hiểu là tên template cần render. "JSON object {"hello":"Hi"}" sai vì chỉ đối tượng như Map hay một lớp có trường hello mới được Jackson chuyển thành JSON có khoá, còn một String đơn lẻ được ghi ra nguyên văn, không tự gói vào khoá nào. "Error 404" sai vì @GetMapping("/hello") đã ánh xạ đúng đường dẫn và phương thức GET, nên yêu cầu tìm được handler.
5192What is the result of this Thymeleaf fragment?4 lựa chọncó code
<span th:if="${user.loggedIn}">Welcome!</span>ARenders always
BDisplays if user.loggedIn is false
CDisplays nothing by default
DDisplays "Welcome!" only if user is logged in
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Displays "Welcome!" only if user is logged in". Thuộc tính th:if của Thymeleaf đánh giá biểu thức user.loggedIn trên đối tượng user trong model lúc dựng trang ở máy chủ; nếu kết quả là true thì thẻ span cùng dòng chữ Welcome! được giữ lại trong HTML trả về, còn nếu false hoặc null thì Thymeleaf loại bỏ hẳn cả thẻ khỏi đầu ra chứ không chỉ ẩn bằng CSS. "Renders always" sai vì phần tử mang th:if chỉ được dựng khi điều kiện đúng; muốn luôn hiển thị thì bỏ th:if đi. "Displays if user.loggedIn is false" đảo ngược điều kiện, đó là hành vi của th:unless chứ không phải th:if. "Displays nothing by default" sai vì không có cơ chế mặc định ẩn nào: kết quả phụ thuộc hoàn toàn vào giá trị loggedIn lúc dựng trang, đúng thì lời chào vẫn hiện ra.
5193Which data format is default in REST responses?4 lựa chọn
AXML
BJSON
CHTML
DCSV
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "JSON". Trong REST hiện đại và đặc biệt với Spring, khi controller @RestController trả về đối tượng Java, Spring MVC dùng HttpMessageConverter để chuyển đối tượng thành thân phản hồi, và Spring Boot cấu hình sẵn Jackson nên định dạng mặc định là JSON (JavaScript Object Notation), gọn, dễ đọc, trình duyệt và ứng dụng di động phân tích nhanh. "XML" vẫn dùng được nếu thêm thư viện jackson-dataformat-xml và client gửi Accept là application/xml, nhưng đó là lựa chọn bổ sung, không phải mặc định. "HTML" là định dạng của trang web hiển thị cho người, thường do view như Thymeleaf sinh, không phải định dạng dữ liệu của API REST. "CSV" chỉ hợp cho xuất bảng dữ liệu phẳng, không biểu diễn được đối tượng lồng nhau và không được Spring dùng mặc định.
5194Thymeleaf is primarily used for:4 lựa chọn
AHandling database transactions.
BGenerating dynamic HTML content.
CManaging application security.
DBuilding REST APIs.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Generating dynamic HTML content.". Thymeleaf là template engine (bộ máy mẫu) phía máy chủ: controller trả về tên view, ViewResolver tìm tệp .html trong thư mục templates, rồi Thymeleaf xử lý các thuộc tính như th:text, th:each, th:if để điền dữ liệu từ Model vào và sinh ra trang HTML hoàn chỉnh gửi cho trình duyệt. Điểm mạnh của nó là template vẫn là HTML hợp lệ, mở thẳng trên trình duyệt được (natural template). "Handling database transactions." là việc của @Transactional và PlatformTransactionManager ở tầng service, Thymeleaf không chạm vào cơ sở dữ liệu. "Managing application security." do Spring Security đảm nhận; Thymeleaf chỉ có module phụ để ẩn hiện phần tử theo quyền chứ không quản lý bảo mật. "Building REST APIs." dùng @RestController trả JSON trực tiếp vào thân phản hồi, không cần template HTML.
5195The Standard Dialect in Thymeleaf provides a set of:4 lựa chọn
ADatabase drivers.
BHTML attributes and elements.
CSecurity protocols.
DNetwork configurations.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "HTML attributes and elements.". Standard Dialect (phương ngữ chuẩn) của Thymeleaf là bộ processor định nghĩa các thuộc tính như th:text, th:each, th:if, th:href và phần tử như th:block, cùng cú pháp biểu thức chuẩn ${...}, *{...}, #{...}, @{...}; nhờ chúng mà tệp HTML vẫn mở được bằng trình duyệt như một bản mẫu tĩnh nhưng khi Thymeleaf xử lý thì được thay bằng dữ liệu thật. "Database drivers." là trình điều khiển JDBC để kết nối cơ sở dữ liệu, thuộc tầng truy cập dữ liệu chứ không thuộc engine template. "Security protocols." như TLS hay OAuth do tầng bảo mật như Spring Security đảm nhận, Thymeleaf chỉ có dialect bổ sung riêng để đọc thông tin bảo mật. "Network configurations." không liên quan, Thymeleaf chỉ sinh nội dung giao diện.
5196What is the purpose of Thymeleaf Layout Dialect?4 lựa chọn
AEnhancing security for the web application.
BProviding a way to create reusable template layouts.
CManaging database connections.
DOptimizing JavaScript performance.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Providing a way to create reusable template layouts.". Thymeleaf Layout Dialect là phần mở rộng thêm các thuộc tính như layout:decorate và layout:fragment: ta viết một trang khung (layout) chứa phần đầu, menu, chân trang dùng chung, rồi mỗi trang nội dung khai báo trang khung nào sẽ bao lấy nó và chỉ điền vào các vùng fragment riêng, nhờ vậy bố cục được tái sử dụng thay vì chép lặp ở mọi trang. "Enhancing security for the web application." sai vì bảo mật thuộc Spring Security, còn phần tích hợp Thymeleaf với bảo mật là một dialect khác (thymeleaf-extras-springsecurity). "Managing database connections." sai vì Thymeleaf chỉ là template engine (bộ máy dựng khuôn mẫu) ở tầng view, không chạm tới cơ sở dữ liệu. "Optimizing JavaScript performance." sai vì dialect này xử lý HTML phía máy chủ, không can thiệp vào hiệu năng mã JavaScript chạy trên trình duyệt.
A
VBoxB
FlowPaneC
BorderPaneD
HBoxLời giải
Mở trang câu hỏi này →Đáp án đúng: "HBox". Trong JavaFX, HBox (horizontal box) là layout pane xếp các node con thành một hàng ngang theo thứ tự thêm vào, có thể chỉnh khoảng cách bằng spacing và căn lề bằng alignment, padding. "VBox" là bản dọc tương ứng, xếp các node con thành một cột từ trên xuống dưới. "FlowPane" cũng xếp theo hàng ngang ở chế độ mặc định nhưng tự xuống dòng khi hết chiều rộng, tức bố cục chảy nhiều hàng chứ không giữ một hàng duy nhất, nên không phải layout chuyên cho một hàng ngang. "BorderPane" chia vùng thành năm khu top, bottom, left, right và center, dùng để dựng khung cửa sổ như thanh menu ở trên và nội dung ở giữa, chứ không xếp các con thành hàng.
AHard-coding all configuration inside Java classes
BPacking configuration into compiled bytecode for security
CSupplying settings (e.g., database details) via properties/YAML and environment so the same build can run in different environments
DRequiring a separate XML file for every bean definition
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Supplying settings (e.g., database details) via properties/YAML and environment so the same build can run in different environments". Externalized configuration (cấu hình đặt bên ngoài mã) nghĩa là Spring Boot đọc giá trị cấu hình từ nhiều nguồn có thứ tự ưu tiên như application.properties hoặc application.yml, tệp theo profile kiểu application-prod.yml, biến môi trường và tham số dòng lệnh, rồi đưa vào bean qua @Value hoặc @ConfigurationProperties; nhờ vậy cùng một tệp jar có thể chạy ở môi trường dev, test hay production chỉ bằng cách đổi URL cơ sở dữ liệu, mật khẩu hay cổng mà không biên dịch lại. "Hard-coding all configuration inside Java classes" đi ngược hẳn ý tưởng này, vì mọi thay đổi đều buộc sửa mã và build lại. "Packing configuration into compiled bytecode for security" cũng là gắn chết cấu hình vào bản build, đồng thời không mang lại bảo mật thật; bí mật nên để ở biến môi trường hoặc kho bí mật. "Requiring a separate XML file for every bean definition" mô tả kiểu khai báo bean bằng XML thời Spring cũ, là chuyện định nghĩa bean chứ không phải tách giá trị cấu hình ra khỏi bản build, và Spring Boot vốn hướng tới giảm XML.
5199What is the benefit of Spring Boot's embedded servers?4 lựa chọn
AThey require separate installation and configuration.
BThey simplify deployment and reduce the need for external application servers.
CThey offer limited performance compared to external servers.
DThey are only compatible with specific operating systems.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "They simplify deployment and reduce the need for external application servers.". Spring Boot đóng gói sẵn server nhúng (embedded server) như Tomcat, Jetty hoặc Undertow vào ứng dụng, nên toàn bộ ứng dụng thành một tệp jar chạy được bằng java -jar, không phải cài Tomcat riêng rồi triển khai tệp war vào đó; cấu hình cổng hay đường dẫn chỉ cần sửa trong application.properties, rất hợp với container và microservice. "They require separate installation and configuration." nói ngược lại bản chất, vì server nhúng đi kèm như một dependency, không cần cài đặt riêng. "They offer limited performance compared to external servers." sai vì server nhúng chính là Tomcat, Jetty hay Undertow thật, hiệu năng tương đương bản cài ngoài. "They are only compatible with specific operating systems." sai vì server nhúng là thư viện Java, chạy trên mọi hệ điều hành có JVM.
ASpring Boot DevTools
BSpring Boot Actuator
CSpringApplication
DSpring Boot Test
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Spring Boot DevTools". Thêm phụ thuộc spring-boot-devtools vào dự án thì khi tệp trên classpath thay đổi, ứng dụng tự khởi động lại nhanh nhờ hai classloader (một giữ thư viện bên thứ ba không đổi, một nạp lại mã của dự án), đồng thời DevTools chạy một máy chủ LiveReload để trình duyệt tự làm mới khi tài nguyên đổi; nó còn tắt bộ nhớ đệm template khi phát triển và tự vô hiệu khi chạy bản đóng gói production. "Spring Boot Actuator" cung cấp các endpoint giám sát như health, metrics, info cho ứng dụng đang chạy, không nạp lại mã. "SpringApplication" là lớp khởi động ứng dụng qua SpringApplication.run, tạo ApplicationContext, không theo dõi thay đổi tệp. "Spring Boot Test" cung cấp công cụ kiểm thử như @SpringBootTest, JUnit, Mockito, phục vụ viết test chứ không tăng tốc vòng sửa mã và xem kết quả.