Danh sách câu hỏi của đề

Câu hỏi: HSF302 Làm việc với Spring Framework – Bộ ôn tập cuối kỳ số 3

50 câu trắc nghiệm kèm lời giải của môn HSF302 - Làm việc với Spring Framework, xếp đúng thứ tự trong đề. Trang 3/3 — câu 41–50.

Danh sách câu hỏi

50/50 câuHết danh sách
AScene scene = new Scene(new Button("Click Me"));
BStage stage = new Stage(new Button("Click Me"));
CButton button = new Button("Click Me");
DNode node = new Node(new Button("Click Me"));
Lời giải

Đáp án đúng: "Scene scene = new Scene(new Button("Click Me")); ". Trong JavaFX, Scene là vùng chứa toàn bộ đồ thị nút (scene graph) và constructor của nó nhận một Parent làm nút gốc; Button kế thừa Control, Control kế thừa Region rồi Parent, nên truyền thẳng một Button vào constructor của Scene là hợp lệ và nút đó trở thành gốc của cảnh, tức đã được đưa vào scene. "Stage stage = new Stage(new Button("Click Me")); " không biên dịch được vì Stage là cửa sổ, chỉ có constructor rỗng hoặc nhận StageStyle, và nội dung được gắn vào Stage qua setScene chứ không phải qua một nút. "Button button = new Button("Click Me"); " chỉ tạo ra đối tượng nút trong bộ nhớ, chưa gắn vào layout hay Scene nào nên chưa hiện lên màn hình. "Node node = new Node(new Button("Click Me")); " sai vì Node là lớp trừu tượng, không thể new trực tiếp và cũng không có constructor nhận một nút con.

Mở trang câu hỏi này →
A@FXML
B@Bind
C@UI
D@Node
Lời giải
Đáp án đúng: "@FXML". Khi FXMLLoader nạp tệp FXML, nó tạo controller được chỉ định bằng fx:controller rồi tiêm các nút có fx:id vào trường cùng tên trong controller; trường hoặc phương thức xử lý sự kiện không public phải gắn @FXML thì loader mới truy cập được, ví dụ trường nameField kiểu TextField và phương thức handleSave được gọi từ thuộc tính onAction trong FXML. Như vậy @FXML là cầu nối giữa phần tử khai báo trong FXML và mã Java. "@Bind" không phải annotation của JavaFX; ràng buộc dữ liệu trong JavaFX làm bằng phương thức bind trên property. "@UI" không tồn tại trong API JavaFX. "@Node" cũng không phải annotation; Node là lớp cơ sở của mọi phần tử trong scene graph chứ không dùng để đánh dấu trường.
Mở trang câu hỏi này →
AA single monolithic library that replaces JPA
BAn umbrella project containing multiple modules for different data stores and data-access styles
CA JDBC driver for all relational databases
DA GUI client for managing databases
Lời giải
Đáp án đúng: "An umbrella project containing multiple modules for different data stores and data-access styles". Spring Data là dự án ô (umbrella project) gồm nhiều mô-đun có chung mô hình lập trình repository: Spring Data JPA, Spring Data JDBC, Spring Data MongoDB, Spring Data Redis, Spring Data Elasticsearch và nhiều mô-đun khác, mỗi cái dành cho một kiểu kho dữ liệu, cả quan hệ lẫn NoSQL, đồng bộ hay reactive, nhưng đều cung cấp interface repository, suy truy vấn từ tên phương thức và phân trang. "A single monolithic library that replaces JPA" sai hai chỗ: Spring Data không phải một thư viện đơn khối, và Spring Data JPA chạy trên JPA chứ không thay JPA, vẫn cần Hibernate làm provider. "A JDBC driver for all relational databases" sai vì driver JDBC do từng nhà cung cấp cơ sở dữ liệu phát hành. "A GUI client for managing databases" sai vì Spring Data là thư viện cho mã nguồn, không phải công cụ đồ hoạ như pgAdmin hay MySQL Workbench.
Mở trang câu hỏi này →
A@Primary
B@Id
C@Generated
D@Key
Lời giải
Đáp án đúng: "@Id". Trong JPA, @Id đặt lên trường hoặc getter để chỉ định khoá chính của entity; mỗi entity bắt buộc có định danh như vậy (hoặc @EmbeddedId cho khoá ghép), persistence context dùng khoá này để nhận diện thực thể, và nó thường đi kèm @GeneratedValue để sinh giá trị tự động. "@Primary" là annotation của Spring, chọn bean ưu tiên khi có nhiều bean cùng kiểu để tiêm, không liên quan tới bảng. "@Generated" không phải annotation khoá chính của JPA: Hibernate có một annotation cùng tên để đọc lại giá trị cột do cơ sở dữ liệu sinh, còn jakarta.annotation.Generated đánh dấu mã nguồn được sinh tự động. "@Key" không tồn tại trong đặc tả JPA, có lẽ dễ nhầm với từ khoá PRIMARY KEY của SQL.
Mở trang câu hỏi này →
45Which CSS file customizes JavaFX UI?4 lựa chọn
Astyles.css
Bui.css
Cdesign.css
Dtheme.xml
Lời giải
Đá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.
Mở trang câu hỏi này →
ACSS stylesheets.
BMessage resolvers.
CDatabase triggers.
DJavaScript libraries.
Lời giải
Đáp án đúng: "Message resolvers.". Thymeleaf hỗ trợ đa ngôn ngữ (internationalization, i18n) qua cơ chế message resolver: template dùng biểu thức #{...} như #{home.welcome}, engine nhờ message resolver tra khoá đó theo locale hiện tại; khi tích hợp với Spring, resolver này dựa vào MessageSource đọc các tệp messages.properties, messages_vi.properties, và LocaleResolver quyết định ngôn ngữ của từng yêu cầu. "CSS stylesheets." chỉ định dạng trình bày, không chứa hay chọn văn bản theo ngôn ngữ. "Database triggers." là đoạn mã chạy trong cơ sở dữ liệu khi có thao tác ghi, không liên quan tới engine template. "JavaScript libraries." có thể làm i18n phía trình duyệt, nhưng đó không phải cơ chế của Thymeleaf vốn render phía server.
Mở trang câu hỏi này →
AJDBC
BJPQL (Java Persistence Query Language)
CSQL
DXML
Lời giải

Đáp án đúng: "JPQL (Java Persistence Query Language)". JPQL là ngôn ngữ truy vấn của đặc tả JPA, viết theo tên entity và tên trường của lớp Java thay vì tên bảng và tên cột, ví dụ SELECT s FROM Student s WHERE s.gpa > 3; JPA provider như Hibernate dịch câu đó sang SQL đúng phương ngữ của cơ sở dữ liệu, kết quả trả về là đối tượng entity, và nó hỗ trợ đi theo quan hệ bằng dấu chấm hay JOIN FETCH. "JDBC" là API cấp thấp để gửi câu SQL thô và đọc ResultSet, ta tự chuyển dòng thành đối tượng. "SQL" chính là ngôn ngữ thao tác trên bảng và cột mà câu hỏi muốn tránh; JPA vẫn cho chạy native query nhưng đó không phải truy vấn hướng đối tượng. "XML" là định dạng dữ liệu, dùng cho tệp cấu hình như persistence.xml chứ không phải ngôn ngữ truy vấn.

Mở trang câu hỏi này →
ATo manage database connections.
BTo handle HTTP requests and return a model and view.
CTo define user interfaces.
DTo configure application security.
Lời giải
Đáp án đúng: "To handle HTTP requests and return a model and view.". Trong Spring MVC, DispatcherServlet chuyển yêu cầu tới phương thức handler của controller (lớp @Controller với @GetMapping, @PostMapping); controller đọc tham số, gọi service, đặt dữ liệu vào Model rồi trả về tên view hoặc đối tượng ModelAndView để ViewResolver phân giải thành trang, ví dụ trang Thymeleaf. "To manage database connections." sai vì kết nối do DataSource và connection pool lo, còn truy cập dữ liệu nằm ở repository. "To define user interfaces." sai vì giao diện do view template định nghĩa, controller chỉ chọn view và cấp dữ liệu. "To configure application security." là việc của Spring Security qua SecurityFilterChain, chạy ở tầng filter trước khi yêu cầu tới controller.
Mở trang câu hỏi này →
AIncreased coupling between application layers.
BAbility to use only the modules needed, reducing application size.
CLimited support for different persistence technologies.
DDecreased flexibility in choosing application components.
Lời giải
Đáp án đúng: "Ability to use only the modules needed, reducing application size.". Spring Framework được chia thành nhiều mô-đun như spring-core, spring-beans, spring-context, spring-jdbc, spring-orm, spring-webmvc; ứng dụng chỉ khai báo những mô-đun mình dùng, ví dụ ứng dụng dòng lệnh không cần spring-webmvc, nhờ vậy giảm số thư viện phải đóng gói và giữ phụ thuộc gọn. "Increased coupling between application layers." sai vì mục tiêu của Spring là giảm phụ thuộc chặt (coupling) nhờ DI và lập trình qua interface. "Limited support for different persistence technologies." ngược với thực tế: Spring hỗ trợ JDBC, JPA, Hibernate, MyBatis và các kho NoSQL qua Spring Data. "Decreased flexibility in choosing application components." cũng ngược lại, vì kiến trúc mô-đun cho phép tự chọn và thay thế từng thành phần.
Mở trang câu hỏi này →
ABackground thread management
BWeb API development
CDesktop GUI development
DDatabase access
Lời giải
Đáp án đúng: "Desktop GUI development". JavaFX là bộ công cụ của Java để xây dựng giao diện đồ hoạ cho ứng dụng desktop: nó cung cấp Stage, Scene, cây Node với các control như Button, TextField, TableView, bố cục như GridPane, VBox, hỗ trợ FXML để tách giao diện khỏi mã, định dạng bằng CSS, hiệu ứng và đồ hoạ; nó là bản kế nhiệm Swing. "Background thread management" không phải mục đích chính, JavaFX chỉ có lớp hỗ trợ như Task và Service để chạy việc nền mà không làm treo giao diện, còn quản lý luồng nói chung thuộc java.util.concurrent. "Web API development" là phạm vi của Spring MVC hay Jakarta REST. "Database access" do JDBC, JPA hoặc Spring Data đảm nhận, JavaFX chỉ hiển thị dữ liệu.
Mở trang câu hỏi này →