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.080/20.347 câuCòn 15.267
A@Query
B@NamedQuery
C@StoredProcedure
D@NativeQuery
Lời giải
Đáp án đúng: "@NamedQuery". Theo JPA, @NamedQuery đặt trên lớp thực thể khai báo một câu JPQL tĩnh có tên qua hai thuộc tính name và query, ví dụ tên Student.findByName; truy vấn được kiểm tra khi khởi động và gọi lại bằng em.createNamedQuery hoặc qua phương thức repository trùng tên. "@Query" là annotation của Spring Data, gắn câu JPQL hoặc SQL trực tiếp lên một phương thức repository; nó có truy vấn nhưng không định nghĩa named query, vì truy vấn đó không có tên dùng chung và chỉ thuộc về đúng phương thức ấy. "@StoredProcedure" không phải annotation của JPA; thủ tục lưu sẵn được khai báo bằng @NamedStoredProcedureQuery. "@NativeQuery" không phải cách định nghĩa named query trong JPA; Spring Data bản mới có annotation này nhưng chỉ là dạng tắt của @Query cho SQL thuần, còn truy vấn SQL thuần có tên dùng @NamedNativeQuery.
Mở trang câu hỏi này →
AHandling UI rendering on the client
BActing as the front controller to dispatch requests to appropriate handlers
CEncrypting HTTP requests
DManaging database transactions
Lời giải
Đáp án đúng: "Acting as the front controller to dispatch requests to appropriate handlers". DispatcherServlet là front controller (bộ điều khiển trung tâm) của Spring MVC: mọi yêu cầu HTTP đi vào một điểm duy nhất này, nó hỏi HandlerMapping để tìm phương thức controller khớp đường dẫn và phương thức HTTP, gọi qua HandlerAdapter, nhận về tên view và model rồi nhờ ViewResolver render, hoặc ghi thẳng dữ liệu ra phản hồi với @ResponseBody, đồng thời xử lý exception qua HandlerExceptionResolver. "Handling UI rendering on the client" sai vì DispatcherServlet chạy trên máy chủ, còn render phía trình duyệt là việc của JavaScript; ngay cả render phía máy chủ nó cũng uỷ cho View. "Encrypting HTTP requests" là việc của TLS ở tầng kết nối HTTPS, do máy chủ web như Tomcat cấu hình. "Managing database transactions" thuộc @Transactional và transaction manager ở tầng service.
Mở trang câu hỏi này →
5063Which benefit does JdbcTemplate provide?4 lựa chọn
ASimplifies error handling
BAutomatic query optimization
CUI rendering
DThread pool creation
Lời giải
Đáp án đúng: "Simplifies error handling". JdbcTemplate của Spring gánh phần lặp lại của JDBC thuần: mở và đóng Connection, Statement, ResultSet đúng cách, và quan trọng là bắt SQLException kiểu checked rồi dịch sang cây ngoại lệ DataAccessException kiểu unchecked, có nghĩa rõ như DuplicateKeyException hay EmptyResultDataAccessException, nhờ vậy mã không còn đầy khối try-catch-finally. "Automatic query optimization" sai vì JdbcTemplate chạy nguyên câu SQL lập trình viên viết, việc tối ưu kế hoạch thực thi là của hệ quản trị cơ sở dữ liệu. "UI rendering" thuộc tầng giao diện như Thymeleaf, không liên quan tới JDBC. "Thread pool creation" là việc của ExecutorService hay ThreadPoolTaskExecutor, JdbcTemplate không tạo luồng; nhóm kết nối cũng do DataSource như HikariCP lo.
Mở trang câu hỏi này →
ATo define user interfaces.
BTo represent domain objects and data.
CTo manage HTTP requests.
DTo handle application deployment.
Lời giải
Đáp án đúng: "To represent domain objects and data.". Dù hiểu Model theo nghĩa thành phần M trong mẫu MVC, tức các đối tượng miền như Product, Order mang dữ liệu và quy tắc nghiệp vụ, hay theo nghĩa interface Model của Spring MVC, nơi controller gọi model.addAttribute để chuyển dữ liệu sang view, thì Model đều là nơi chứa và mang dữ liệu. "To define user interfaces." sai vì giao diện là phần View, như template Thymeleaf, chỉ đọc dữ liệu từ model để hiển thị. "To manage HTTP requests." sai vì nhận và xử lý yêu cầu HTTP là việc của DispatcherServlet và Controller. "To handle application deployment." sai vì triển khai ứng dụng là việc đóng gói và cấu hình máy chủ, không thuộc thành phần nào của MVC.
Mở trang câu hỏi này →
5065In JavaFX, consider:4 lựa chọncó code
Đề bài
Button btn = new Button("Click");
btn.setOnAction(e -> System.out.println("Pressed"));

What happens when user clicks the button?

ANothing
BCompilation error
CText 'Pressed' is printed in console
DButton disappears
Lời giải
Đáp án đúng: "Text 'Pressed' is printed in console". Lần theo mã: dòng đầu tạo Button có nhãn Click; dòng hai gọi setOnAction với một biểu thức lambda, đăng ký trình xử lý cho sự kiện ActionEvent. Khi người dùng bấm nút (giả sử nút đã nằm trong Scene đang hiển thị), JavaFX phát ActionEvent và gọi lambda trên luồng JavaFX Application Thread, lệnh System.out.println ghi chữ Pressed ra console, còn nút vẫn giữ nguyên trên giao diện. "Nothing" sai vì trình xử lý đã được gắn nên lần bấm có hiệu ứng. "Compilation error" sai vì lambda nhận tham số e và gọi println khớp đúng interface EventHandler cho ActionEvent, biên dịch bình thường. "Button disappears" sai vì không có dòng nào gọi setVisible(false) hay gỡ nút khỏi layout.
Mở trang câu hỏi này →
ALabel or Alert
BButton
CTableView
DTextField
Lời giải
Đáp án đúng: "Label or Alert". Thông báo lỗi validation cần được hiển thị cho người dùng đọc: Label đặt ngay cạnh hoặc dưới ô nhập, đổi chữ và màu đỏ bằng setText và setStyle, hợp để báo lỗi tại chỗ từng trường; còn Alert là hộp thoại kiểu AlertType.ERROR hay AlertType.WARNING bật lên bằng showAndWait, hợp để báo lỗi tổng hợp khi bấm lưu. "Button" là control để người dùng kích hoạt hành động, không dùng để trình bày thông báo. "TableView" hiển thị danh sách dữ liệu nhiều hàng nhiều cột, quá nặng và sai mục đích cho một câu báo lỗi. "TextField" là ô cho người dùng nhập liệu; nhét thông báo lỗi vào đó sẽ lẫn với dữ liệu người dùng gõ, dù có thể tô viền đỏ ô này để đánh dấu trường sai bên cạnh Label.
Mở trang câu hỏi này →
AManaging user interfaces
BProviding RESTful API support
CManaging relational data through ORM
DRunning multithreaded processes
Lời giải
Đáp án đúng: "Managing relational data through ORM". Vai trò chính của JPA là quản lý dữ liệu quan hệ thông qua ORM (Object-Relational Mapping, ánh xạ đối tượng sang quan hệ): lập trình viên làm việc với đối tượng Java gắn @Entity, còn EntityManager cùng nhà cung cấp như Hibernate lo sinh SQL, đồng bộ thay đổi trong persistence context xuống bảng và nạp hàng trong bảng lên thành đối tượng. "Managing user interfaces" là việc của JavaFX, Swing hoặc tầng view như Thymeleaf. "Providing RESTful API support" thuộc về Spring MVC với @RestController hay Jakarta REST, JPA chỉ lo phần lưu trữ phía sau. "Running multithreaded processes" là phạm vi của java.util.concurrent, ExecutorService, không phải đặc tả lưu trữ dữ liệu.
Mở trang câu hỏi này →
ATo handle user authentication
BTo ensure data integrity and consistency
CTo manage network traffic
DTo optimize web page loading
Lời giải
Đáp án đúng: "To ensure data integrity and consistency". Giao dịch (transaction) gom nhiều thao tác ghi thành một đơn vị theo tính chất ACID: hoặc tất cả được commit, hoặc khi có lỗi thì rollback toàn bộ, nên dữ liệu không bị bỏ dở nửa chừng; ví dụ chuyển tiền phải trừ tài khoản này và cộng tài khoản kia cùng lúc. Trong JPA, các thay đổi entity được flush xuống cơ sở dữ liệu trong phạm vi giao dịch, và Spring quản lý phạm vi đó bằng @Transactional. "To handle user authentication" sai vì xác thực người dùng là việc của Spring Security. "To manage network traffic" sai vì giao dịch cơ sở dữ liệu không điều phối lưu lượng mạng. "To optimize web page loading" sai vì tốc độ tải trang phụ thuộc bộ nhớ đệm và kích thước tài nguyên, không phải mục đích của quản lý giao dịch.
Mở trang câu hỏi này →
5069What does ORM stand for in JPA?4 lựa chọn
AObject Relational Mapping
BOpen Resource Management
COptimized Runtime Module
DOperational Reference Model
Lời giải
Đáp án đúng: "Object Relational Mapping". ORM nghĩa là ánh xạ đối tượng sang quan hệ: kỹ thuật nối mô hình hướng đối tượng của Java (lớp, thuộc tính, tham chiếu) với mô hình quan hệ của cơ sở dữ liệu (bảng, cột, khoá ngoại), để lớp thực thể tương ứng với bảng và mỗi đối tượng tương ứng với một dòng. JPA là đặc tả ORM chuẩn của Java, còn Hibernate là một hiện thực của nó. "Open Resource Management" không phải thuật ngữ của JPA, tên này nghe như quản lý tài nguyên chung. "Optimized Runtime Module" cũng là cụm đặt ra, không gắn với ánh xạ dữ liệu. "Operational Reference Model" không phải nghĩa của ORM trong ngữ cảnh JPA, cụm này không liên quan đối tượng hay bảng.
Mở trang câu hỏi này →
5070Which JPA annotation maps a primary key?4 lựa chọn
A@Entity
B@Table
C@Id
D@JoinColumn
Lời giải
Đáp án đúng: "@Id". @Id đánh dấu trường làm khoá chính của entity, tương ứng cột primary key trong bảng; JPA dùng giá trị này để định danh entity trong persistence context, cho em.find tra cứu, và thường đi kèm @GeneratedValue để cơ sở dữ liệu hoặc provider sinh giá trị, ví dụ chiến lược IDENTITY hay SEQUENCE. Mỗi entity bắt buộc có khoá chính. "@Entity" đánh dấu cả lớp là một entity được JPA quản lý, không chỉ định trường nào là khoá. "@Table" đặt tên bảng, schema hay ràng buộc unique cho entity, ở cấp lớp. "@JoinColumn" chỉ định cột khoá ngoại trong một quan hệ như @ManyToOne, tức trỏ tới khoá chính của bảng khác chứ không khai báo khoá chính của bảng mình.
Mở trang câu hỏi này →
AURL expressions.
BMessage expressions.
CVariable expressions.
DFragment expressions.
Lời giải
Đáp án đúng: "Variable expressions.". Trong cú pháp biểu thức chuẩn của Thymeleaf, ${...} là biểu thức biến: nó được đánh giá trên ngữ cảnh, tức các thuộc tính mà controller đã đưa vào Model, bằng OGNL hoặc SpEL khi tích hợp Spring, ví dụ th:text="${user.name}" lấy thuộc tính name của đối tượng user. "URL expressions." là cú pháp @{...}, dùng để dựng đường dẫn liên kết có context path. "Message expressions." là cú pháp #{...}, dùng để tra khoá trong tệp messages phục vụ đa ngôn ngữ. "Fragment expressions." là cú pháp ~{...}, dùng với th:insert hoặc th:replace để chèn một mảnh template vào trang.
Mở trang câu hỏi này →
ATo define a database entity.
BTo enable Spring MVC functionality.
CTo combine @Configuration, @EnableAutoConfiguration, and @ComponentScan.
DTo define a RESTful endpoint.
Lời giải
Đáp án đúng: "To combine @Configuration, @EnableAutoConfiguration, and @ComponentScan.". @SpringBootApplication là meta-annotation (annotation gộp) gồm @SpringBootConfiguration, một dạng @Configuration cho phép khai báo @Bean, cùng @EnableAutoConfiguration tự cấu hình bean dựa trên thư viện có trên classpath và thuộc tính, và @ComponentScan quét gói chứa lớp main cùng các gói con để tìm @Component, @Service, @Controller; đặt nó lên lớp chứa main rồi gọi SpringApplication.run là đủ khởi động ứng dụng. "To define a database entity." sai vì entity khai báo bằng @Entity. "To enable Spring MVC functionality." chỉ đúng gián tiếp: Spring MVC được auto-configuration bật khi có spring-boot-starter-web, còn bản thân annotation không dành riêng cho MVC. "To define a RESTful endpoint." sai vì endpoint REST khai báo bằng @RestController kèm @GetMapping hay @PostMapping.
Mở trang câu hỏi này →
ASpring MVC
BSpring Data JPA
CStarter dependencies
DSpring Security
Lời giải
Đáp án đúng: "Starter dependencies". Spring Boot starter là các gói phụ thuộc gom sẵn như spring-boot-starter-web hay spring-boot-starter-data-jpa: thêm một starter là kéo về bộ thư viện tương thích phiên bản với nhau, và việc các thư viện đó xuất hiện trên classpath kích hoạt auto-configuration tạo sẵn bean như DispatcherServlet, DataSource, EntityManagerFactory. Nói chặt, auto-configuration là một cơ chế riêng, nhưng starter là phần đưa phụ thuộc vào để nó hoạt động, nên đây là tính năng khớp mô tả. "Spring MVC" là framework web, thứ được starter web cấu hình, không phải tính năng cấu hình sẵn. "Spring Data JPA" là mô-đun truy cập dữ liệu, cũng chỉ là đối tượng được cấu hình. "Spring Security" là framework bảo mật, cung cấp xác thực, phân quyền chứ không phải cơ chế gom phụ thuộc.
Mở trang câu hỏi này →
A@Component
B@Service
C@SpringBootApplication
D@Repository
Lời giải
Đáp án đúng: "@SpringBootApplication". Lớp chứa phương thức main gọi SpringApplication.run thường được gắn @SpringBootApplication, một annotation tổng hợp gồm @SpringBootConfiguration (lớp cấu hình), @EnableAutoConfiguration (bật tự cấu hình theo thư viện có trên classpath) và @ComponentScan (quét bean bắt đầu từ package của chính lớp đó); vì vậy lớp main nên đặt ở package gốc. "@Component" chỉ đánh dấu một lớp là bean thông thường, không bật tự cấu hình hay quét thành phần. "@Service" là stereotype cho tầng nghiệp vụ. "@Repository" là stereotype cho tầng truy cập dữ liệu, kèm dịch exception lưu trữ. Gắn @Component, @Service hay @Repository lên lớp main chỉ biến nó thành bean chứ không khởi động được cơ chế của Spring Boot.
Mở trang câu hỏi này →
Aapplication.yml
Bpom.xml / build.gradle
Cbeans.xml
Dsettings.json
Lời giải
Đáp án đúng: "pom.xml / build.gradle". Dependency của dự án Spring Boot được khai báo trong tệp build: với Maven là pom.xml, thường kế thừa spring-boot-starter-parent và liệt kê các starter như spring-boot-starter-web; với Gradle là build.gradle dùng plugin org.springframework.boot. Công cụ build đọc tệp này để tải thư viện về classpath, rồi Spring Boot dựa vào thư viện có mặt mà tự cấu hình. "application.yml" là tệp cấu hình thuộc tính lúc chạy như cổng server hay chuỗi kết nối cơ sở dữ liệu, không khai báo thư viện. "beans.xml" là tệp định nghĩa bean kiểu XML của Spring truyền thống. "settings.json" là tệp cài đặt của trình soạn thảo như VS Code, không liên quan tới dependency của dự án.
Mở trang câu hỏi này →
AUnrelated to Spring MVC and cannot bind to model attributes
BBinding-aware JSP tags that integrate with Spring MVC to bind form fields to model properties
CA replacement for HTML input elements and attributes
DOnly supports GET forms and not POST
Lời giải
Đáp án đúng: "Binding-aware JSP tags that integrate with Spring MVC to bind form fields to model properties". Thư viện thẻ form của Spring cung cấp các thẻ JSP như form:form, form:input, form:select, form:errors; thẻ form:form gắn với một đối tượng trong model qua modelAttribute, mỗi form:input với thuộc tính path đọc giá trị thuộc tính tương ứng để điền sẵn và đặt tên trường đúng, để khi gửi lên data binding của Spring MVC gán ngược vào đối tượng, còn form:errors hiển thị lỗi kiểm hợp lệ. "Unrelated to Spring MVC and cannot bind to model attributes" sai vì gắn với model attribute chính là lý do thư viện tồn tại. "A replacement for HTML input elements and attributes" sai vì các thẻ này cuối cùng vẫn sinh ra thẻ HTML input, select chuẩn và cho truyền thuộc tính HTML qua; chúng bổ sung khả năng binding chứ không thay thế HTML. "Only supports GET forms and not POST" sai vì form:form mặc định dùng POST và còn hỗ trợ PUT, DELETE qua trường ẩn kết hợp HiddenHttpMethodFilter.
Mở trang câu hỏi này →
AViewResolver
BHandlerMapping
CController
DModel
Lời giải
Đáp án đúng: "HandlerMapping". Luồng xử lý của DispatcherServlet: nhận yêu cầu, hỏi các HandlerMapping, chẳng hạn RequestMappingHandlerMapping đọc @RequestMapping, @GetMapping, để tìm handler (phương thức controller) cùng các interceptor phù hợp, rồi dùng HandlerAdapter gọi handler, nhận model và tên view, cuối cùng nhờ ViewResolver phân giải view. "ViewResolver" xuất hiện ở cuối luồng, đổi tên view logic thành view thật, không chọn controller. "Controller" là chính đối tượng cần được tìm ra, nó không tự quyết định yêu cầu nào thuộc về mình. "Model" chỉ là vùng chứa dữ liệu truyền từ controller sang view, không tham gia việc định tuyến yêu cầu.
Mở trang câu hỏi này →
AAs a listener.
BAs a filter.
CAs a servlet.
DAs a resource.
Lời giải
Đáp án đúng: "As a servlet.". DispatcherServlet bản chất là một lớp con của HttpServlet, nên trong web.xml nó được khai báo bằng thẻ servlet với servlet-name và servlet-class là org.springframework.web.servlet.DispatcherServlet, thường kèm init-param contextConfigLocation trỏ tới tệp cấu hình Spring và load-on-startup, rồi gắn đường dẫn bằng servlet-mapping, ví dụ url-pattern là dấu gạch chéo để nhận mọi yêu cầu. "As a listener." là cách khai báo ContextLoaderListener, thành phần khởi tạo root application context khi ứng dụng web khởi động, không phải DispatcherServlet. "As a filter." dùng cho các Filter như CharacterEncodingFilter hay DelegatingFilterProxy của Spring Security, chạy trước servlet. "As a resource." không phải cách đăng ký thành phần xử lý yêu cầu; thẻ resource-ref trong web.xml chỉ khai báo tham chiếu tới tài nguyên JNDI như DataSource.
Mở trang câu hỏi này →
AObserver
BModel-View-Controller
CDecorator
DCommand
Lời giải
Đáp án đúng: "Model-View-Controller". Spring MVC được xây dựng theo mẫu MVC: Controller, các lớp gắn @Controller, nhận yêu cầu và gọi tầng nghiệp vụ; Model chứa dữ liệu cần hiển thị; View như template Thymeleaf hay JSP trình bày dữ liệu đó; tất cả được điều phối qua DispatcherServlet theo mẫu Front Controller. "Observer" là mẫu cho phép nhiều đối tượng đăng ký nhận thông báo khi một đối tượng thay đổi, Spring có dùng ý tưởng này cho ApplicationEvent nhưng Spring MVC không dựa trên nó. "Decorator" là mẫu bọc đối tượng để thêm hành vi, không phải nền tảng của framework web này. "Command" là mẫu đóng gói một yêu cầu thành đối tượng, cũng không phải kiến trúc tổng thể của Spring MVC.
Mở trang câu hỏi này →
5080In JavaFX, what is a Property?4 lựa chọn
AA static variable.
BA dynamic, observable value.
CA database field.
DA network address.
Lời giải
Đáp án đúng: "A dynamic, observable value.". Trong JavaFX, property như StringProperty, IntegerProperty hay ObjectProperty là đối tượng bọc một giá trị có thể thay đổi và cho phép đăng ký listener (ChangeListener, InvalidationListener) để được báo khi giá trị đổi; nhờ tính quan sát được (observable) đó mà có binding, ví dụ label.textProperty().bind(nameProperty) giúp giao diện tự cập nhật theo dữ liệu. "A static variable." sai vì property thường là thành viên của từng đối tượng, và quan trọng hơn là nó phát thông báo khi thay đổi, điều một biến static thông thường không làm. "A database field." sai vì property là khái niệm của tầng giao diện, có thể được nạp từ một cột nhưng bản thân không gắn với cơ sở dữ liệu. "A network address." sai vì property không liên quan gì tới mạng.
Mở trang câu hỏi này →