Đề thi trắc nghiệm

SBA301 - Đề thi cuối kỳ SU26 #777 (48 câu)

48Câu hỏi
Tích hợp ứng dụng trang đơn với Spring Boot - Integrate single page application with Spring BootMôn học

Phiên có lưu tiến độ dùng toàn bộ 48 câu của bộ đề để tiến độ khớp với máy chủ.

Phiên sắp tạo
48 câu Chế độ học Không giới hạn

Bạn cần đăng nhập để bắt đầu làm bài và lưu tiến độ.

Tổng câu hỏi

48

Thời gian làm bài

Không giới hạn

Lượt xem

3

Câu có lời giải

48

Câu có link chi tiết

48

Xem trước câu hỏi

Bấm vào từng câu để xem đáp án
#001
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ASort
PageableĐÚNG
CSlice
DList
Giải thích

Để xác định số trang và kích thước trang trong Spring Data JPA, bạn cần sử dụng đối tượng Pageable. Đối tượng này cho phép bạn sắp xếp và phân trang dữ liệu một cách linh hoạt. Bạn có thể sử dụng Pageable để chỉ định số trang và kích thước trang trong các phương thức tìm kiếm dữ liệu. Ví dụ, bạn có thể sử dụng Pageable để tìm kiếm 10 bản ghi trên trang thứ 2 của dữ liệu. Đối tượng Pageable cũng cho phép bạn sắp xếp dữ liệu theo các tiêu chí khác nhau, chẳng hạn như sắp xếp dữ liệu theo tên hoặc sắp xếp dữ liệu theo ngày tạo.

#002
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo store user data.
To store the signing algorithm and token type.ĐÚNG
CTo store the signature.
DTo store the expiration time.
Giải thích

JWT (JSON Web Token) là một loại token được sử dụng để xác thực và truyền thông tin giữa các ứng dụng. Header của JWT chứa thông tin về thuật toán ký và loại token. Nó được sử dụng để xác định cách thức ký token và loại token được sử dụng. Ví dụ, nếu header chứa thông tin về thuật toán HMAC SHA256 và loại token là JWT, thì ứng dụng nhận được token có thể xác định được cách thức ký token và loại token được sử dụng. Điều này giúp ứng dụng nhận được token có thể xác thực và giải mã token một cách chính xác. Ngoài ra, header còn chứa thông tin về phiên bản của JWT, giúp ứng dụng nhận được token có thể xác định được phiên bản của token và xử lý token một cách phù hợp.

#003
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AEncrypted using a server-side public key.
BSent in plain text in the request body.
Base64-encoded and sent in the Authorization header.ĐÚNG
DHashed using a nonce and a server-side secret.
Giải thích

Trong HTTP Basic authentication, thông tin xác thực được truyền đi dưới dạng mã hóa Base64 và được gửi trong tiêu đề Authorization. Điều này có nghĩa là thông tin xác thực được mã hóa bằng một thuật toán mã hóa Base64, sau đó được gửi đến server trong tiêu đề Authorization. Server sẽ nhận được thông tin này và giải mã nó để xác thực người dùng. Việc truyền thông tin xác thực dưới dạng mã hóa Base64 giúp bảo vệ thông tin khỏi bị đọc hoặc truy cập trái phép trong quá trình truyền đi.

#004
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AUsing this.props.params.
Using useParams() Hook.ĐÚNG
CUsing props.match.params.
DUsing context.params.
Giải thích

Để truy cập tham số đường dẫn trong một thành phần được rendered bởi React Router v6, bạn có thể sử dụng Hook useParams(). Hook này được sử dụng để lấy tham số đường dẫn từ URL. Ví dụ, nếu bạn có một đường dẫn như /users/:id, bạn có thể sử dụng useParams() để lấy giá trị của tham số :id. Bạn có thể sử dụng useParams() trong bất kỳ hàm nào của thành phần, chẳng hạn như hàm render hoặc hàm useEffect. Ngoài ra, bạn cũng có thể sử dụng useParams() để lấy tham số đường dẫn từ URL trong hàm useLocation().

#005
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A@RequestMapping
@AutowiredĐÚNG
C@RestController
D@Entity
Giải thích

Để inject một Spring Data JPA repository vào một service hoặc controller, chúng ta sử dụng annotation @Autowired. Annotation này cho phép Spring tự động inject các bean vào các field hoặc setter của class. Điều này giúp giảm thiểu sự phức tạp khi viết mã và tăng cường tính tái sử dụng của code. Ví dụ, nếu chúng ta có một interface được tạo bởi Spring Data JPA, như sau: public interface UserRepository extends JpaRepository<User, Long> {} Thì chúng ta có thể inject nó vào một service như sau: @Service public class UserService { @Autowired private UserRepository userRepository; } Trong ví dụ trên, Spring sẽ tự động inject UserRepository vào UserService.

#006
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIn the request header.
BIn the request body.
In a cookie or URL.ĐÚNG
DIn the server's database.
Giải thích

Trong bảo mật dựa trên phiên (Session-Based Security), ID phiên thường được lưu trữ ở đâu? ID phiên là một chuỗi ngẫu nhiên được tạo ra khi người dùng đăng nhập vào hệ thống. Nó được sử dụng để xác thực và theo dõi hoạt động của người dùng trong phiên hiện tại. ID phiên thường được lưu trữ trong một cookie hoặc URL. Cookie là một loại dữ liệu được lưu trữ trên trình duyệt của người dùng, trong khi URL là địa chỉ web được sử dụng để truy cập vào một trang web cụ thể. Khi người dùng đăng nhập vào hệ thống, ID phiên sẽ được lưu trữ trong cookie hoặc URL và được gửi lại cho server mỗi khi người dùng thực hiện một yêu cầu. Điều này cho phép server xác thực và theo dõi hoạt động của người dùng một cách hiệu quả.

#007
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AWhen you need the total number of elements and total pages.
When you want to avoid counting all elements and improve performance.ĐÚNG
CWhen you need to sort the results with detailed page information.
DWhen you only need the data and a "previous" indicator.
Giải thích

Khi sử dụng Slice interface trong Spring Data JPA, bạn nên lưu ý rằng nó không phải là một cách thay thế cho Page interface. Slice interface được thiết kế để trả về một phần của dữ liệu, không bao gồm thông tin tổng số phần tử và tổng số trang. Điều này giúp cải thiện hiệu suất khi bạn không cần phải đếm tất cả các phần tử. Slice interface phù hợp khi bạn cần trả về một phần dữ liệu và chỉ cần biết có phần tử trước đó hay không. Ví dụ, khi bạn muốn trả về 10 phần tử đầu tiên và chỉ cần biết có phần tử trước đó hay không, bạn có thể sử dụng Slice interface. Tuy nhiên, nếu bạn cần biết tổng số phần tử và tổng số trang, bạn nên sử dụng Page interface.

#008
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AThe database connection URL.
BThe database dialect.
The location of a Hibernate mapping file that defines how a Java class is mapped to a database table.ĐÚNG
DThe location of the Hibernate configuration file.
Giải thích

Dòng <mapping resource="User.hbm.xml"> trong file hibernate.cfg.xml chỉ định vị trí của một tệp định nghĩa ánh xạ Hibernate (Hibernate mapping file) mà định nghĩa cách ánh xạ một lớp Java sang một bảng trong cơ sở dữ liệu. Tệp này thường được gọi là tệp định nghĩa ánh xạ (mapping file) và thường có định dạng .hbm.xml. Mục đích chính của tệp này là định nghĩa cách ánh xạ các trường trong lớp Java sang các cột trong bảng cơ sở dữ liệu, cũng như các mối quan hệ giữa các bảng.

#009
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ALayered System
BCode on Demand
StatelessĐÚNG
DCacheable
Giải thích

Mô hình REST có nguyên tắc đảm bảo rằng mỗi yêu cầu từ client đến server phải chứa tất cả thông tin cần thiết để hiểu và xử lý yêu cầu. Nguyên tắc này được gọi là 'Stateless'. Điều này có nghĩa là server không lưu trữ trạng thái của client và không dựa vào trạng thái đó để xử lý yêu cầu. Thay vào đó, mỗi yêu cầu phải chứa thông tin cần thiết để server có thể xử lý nó một cách độc lập. Điều này giúp tăng tính linh hoạt và khả năng mở rộng của hệ thống.

#010
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AImproved SEO.
BFaster initial page load times.
Smoother user experience due to reduced server requests.ĐÚNG
DEnhanced server security.
Giải thích

Routing trên phía client là một kỹ thuật giúp cải thiện hiệu suất của ứng dụng web. Một trong những lợi ích chính của client-side routing là nó giúp giảm số lượng yêu cầu đến server. Khi sử dụng client-side routing, ứng dụng web sẽ không cần phải gửi yêu cầu đến server để tải lại trang mới mỗi khi người dùng chuyển đổi giữa các trang. Thay vào đó, ứng dụng sẽ xử lý chuyển đổi trang trên phía client, giảm thiểu số lượng yêu cầu đến server. Điều này giúp cải thiện tốc độ tải trang và mang lại trải nghiệm người dùng mượt mà hơn.

#011
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAutomatic generation of CRUD methods.
Flexibility for complex queries and operations.ĐÚNG
CSimplified data model definition.
DBuilt-in transaction management.
Giải thích

MongoTemplate là một công cụ mạnh mẽ trong Spring Data MongoDB, cung cấp nhiều lợi ích khi sử dụng. Một trong những lợi ích chính của MongoTemplate là tính linh hoạt trong việc thực hiện các truy vấn phức tạp và các hoạt động khác. Với MongoTemplate, bạn có thể dễ dàng tạo ra các truy vấn phức tạp bằng cách sử dụng các phương thức như find, update, remove và nhiều hơn nữa. Điều này giúp bạn có thể thực hiện các truy vấn và các hoạt động phức tạp mà không cần phải viết mã thủ công. Ngoài ra, MongoTemplate cũng cung cấp các tính năng như hỗ trợ các loại dữ liệu phức tạp, hỗ trợ các loại dữ liệu không xác định và hỗ trợ các tính năng khác của MongoDB. Tính linh hoạt của MongoTemplate giúp bạn có thể dễ dàng thích nghi với các yêu cầu phức tạp của dự án và tăng hiệu suất của ứng dụng.

#012
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Asave()
insert()ĐÚNG
Ccreate()
Dadd()
Giải thích

Để thêm một bản ghi đơn (single document) vào cơ sở dữ liệu MongoDB bằng cách sử dụng MongoTemplate, bạn cần sử dụng phương thức phù hợp. Trong các phương thức được đề cập, phương thức "insert()" là lựa chọn chính xác.

#013
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
<Form.Select> <option>1</option> <option>2</option> </Form.Select>ĐÚNG
B<Select> <option>1</option> <option>2</option> </Select>
C<Form.Dropdown> <option>1</option> <option>2</option> </Form.Dropdown>
D<Dropdown> <option>1</option> <option>2</option> </Dropdown>
Giải thích

Để tạo một form select control trong React-Bootstrap, bạn cần sử dụng thẻ <Form.Select>. Thẻ này sẽ tạo một lựa chọn dropdown cho người dùng. Ví dụ, bạn muốn tạo một form select với các lựa chọn là 1 và 2, bạn có thể sử dụng mã sau: <Form.Select> <option>1</option> <option>2</option> </Form.Select>. Điều này sẽ tạo một form select với hai lựa chọn là 1 và 2. Ngoài ra, bạn cũng có thể sử dụng các thẻ khác như <Select>, <Form.Dropdown>, <Dropdown> nhưng chúng không phải là thẻ chính thức để tạo form select control trong React-Bootstrap.

#014
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
<NavLink>ĐÚNG
B<Nav Link>
C<Link>
D<Anchor>
Giải thích

Để tạo liên kết điều hướng trong Navbar của React-Bootstrap, bạn cần sử dụng thẻ <NavLink>. Thẻ này cho phép bạn tạo liên kết điều hướng với các thuộc tính như href, active, exact, và nhiều thuộc tính khác. Ví dụ, bạn có thể sử dụng <NavLink> như sau: import { NavLink } from 'react-bootstrap'; <NavLink to="/home">Trang chủ</NavLink> Trong ví dụ trên, <NavLink> được sử dụng để tạo liên kết điều hướng đến trang chủ với đường dẫn /home. Ngoài ra, bạn cũng có thể sử dụng thuộc tính active để chỉ định liên kết hiện tại. <NavLink active to="/home">Trang chủ</NavLink> Tóm lại, <NavLink> là một phần quan trọng trong việc tạo liên kết điều hướng trong Navbar của React-Bootstrap.

#015
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ASession-based authentication
BToken-based authentication (JWT)
COAuth 2.0
Basic AuthenticationĐÚNG
Giải thích

Trong RESTful APIs, phương thức xác thực gửi thông tin xác thực với mỗi yêu cầu là Basic Authentication. Phương thức này gửi thông tin xác thực của người dùng, bao gồm tên người dùng và mật khẩu, trong mỗi yêu cầu HTTP. Điều này có thể không an toàn vì thông tin xác thực được gửi qua đường truyền không bảo mật. Token-based authentication (JWT) và OAuth 2.0 cũng là các phương thức xác thực phổ biến trong RESTful APIs, nhưng chúng không gửi thông tin xác thực với mỗi yêu cầu. Thay vào đó, chúng sử dụng token hoặc mã xác thực để xác thực người dùng.

#016
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aupdate()
Bfind()
CinsertOne()
deleteMany() or deleteOne()ĐÚNG
Giải thích

Để xóa tài liệu từ một tập hợp trong MongoDB, bạn cần sử dụng lệnh thích hợp. Trong các lựa chọn đã cho, có hai lệnh có thể thực hiện được việc này: deleteMany() và deleteOne(). Lệnh deleteMany() được sử dụng để xóa nhiều tài liệu cùng một lúc, trong khi lệnh deleteOne() được sử dụng để xóa một tài liệu duy nhất. Để sử dụng các lệnh này, bạn cần biết ID hoặc các điều kiện lọc cụ thể của tài liệu bạn muốn xóa. Ví dụ, bạn có thể sử dụng lệnh deleteMany() để xóa tất cả tài liệu trong một tập hợp, hoặc sử dụng lệnh deleteOne() để xóa một tài liệu cụ thể dựa trên ID hoặc các điều kiện lọc khác. Tóm lại, lệnh deleteMany() và deleteOne() là hai lệnh quan trọng trong MongoDB giúp bạn quản lý và xóa tài liệu từ các tập hợp.

#017
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
componentDidMountĐÚNG
Brender
Cconstructor
DshouldComponentUpdate
Giải thích

Trong React, lifecycle method được sử dụng để thực hiện các tác vụ phụ (side effects) khi một thành phần thay đổi trạng thái. 'componentDidMount' là một trong những lifecycle method quan trọng nhất, được sử dụng để thực hiện các tác vụ phụ sau khi thành phần được render vào DOM. Ví dụ, bạn có thể sử dụng 'componentDidMount' để tải dữ liệu từ server, hoặc thực hiện các hành động khác khi thành phần được render xong. Ngoài ra, bạn cũng có thể sử dụng 'componentDidUpdate' để thực hiện các tác vụ phụ khi thành phần thay đổi trạng thái.

#018
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ABy ignoring the error
By using.catch() on the Axios promise and accessing the error objectĐÚNG
CBy using static HTML error messages
DBy redirecting to a different page without displaying an error
Giải thích

Khi làm việc với RESTful API trong ứng dụng ReactJS bằng Axios, việc xử lý lỗi là rất quan trọng. Để xử lý lỗi khi gửi yêu cầu, bạn có thể sử dụng phương thức .catch() trên promise của Axios. Phương thức này cho phép bạn truy cập vào đối tượng lỗi và thực hiện các hành động cần thiết để xử lý lỗi. Ví dụ, bạn có thể hiển thị thông báo lỗi cho người dùng, hoặc thực hiện các hành động khác để xử lý lỗi. Điều này giúp đảm bảo ứng dụng của bạn luôn hoạt động ổn định và không bị ảnh hưởng bởi lỗi.

#019
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ABy using the <NotFound> component.
By adding a <Route path="*" element={<NotFound />} /> as the last route.ĐÚNG
CBy using the notFound prop on the <Routes> component.
DBy using the useNotFound() hook.
Giải thích

Để xử lý trang 404 Not Found trong React Router, bạn cần thêm một route đặc biệt có path là ".*". Điều này cho phép React Router bắt gặp và chuyển hướng đến trang 404 khi người dùng truy cập vào một URL không tồn tại. Bạn có thể thêm route này vào cuối danh sách các route như sau: <Route path="*" element={<NotFound />} />. Điều này cho phép bạn định nghĩa một component riêng biệt để hiển thị khi người dùng truy cập vào một URL không tồn tại. Ngoài ra, bạn cũng có thể sử dụng component này để hiển thị thông tin về trang không tồn tại, chẳng hạn như một liên kết quay lại trang chủ hoặc một thông báo về trang không tồn tại.

#020
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ADisabling security in React.
Configuring CORS in Spring Boot.ĐÚNG
CUsing server-side rendering exclusively.
DUsing iframes to embed the Spring Boot application.
Giải thích

Để xử lý các yêu cầu có nguồn gốc khác nhau (CORS) giữa React và Spring Boot, có một số cách tiếp cận phổ biến. Một trong số đó là cấu hình CORS trong Spring Boot. Điều này cho phép Spring Boot xác định các nguồn gốc được phép thực hiện các yêu cầu đến ứng dụng của nó, giúp ngăn chặn các yêu cầu không mong muốn. Điều này được thực hiện thông qua việc thêm các tiêu đề HTTP đặc biệt vào các phản hồi của ứng dụng, chẳng hạn như Access-Control-Allow-Origin. Bằng cách cấu hình CORS trong Spring Boot, bạn có thể kiểm soát các yêu cầu có nguồn gốc khác nhau đến ứng dụng của mình và đảm bảo rằng chúng được xử lý một cách an toàn và hiệu quả.

#021
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AXML
JSON or YAMLĐÚNG
CHTML
DCSV
Giải thích

Swagger 3 (OpenAPI 3) là một tiêu chuẩn mở cho việc mô tả API. Để viết các đặc tả này, chúng ta có thể sử dụng hai định dạng file là JSON và YAML. JSON (JavaScript Object Notation) là một định dạng file phổ biến được sử dụng để lưu trữ và truyền tải dữ liệu. YAML (YAML Ain't Markup Language) là một định dạng file khác được sử dụng để lưu trữ và truyền tải dữ liệu. Cả hai định dạng file này đều có thể được sử dụng để viết các đặc tả Swagger 3. XML và CSV không phải là định dạng file được hỗ trợ bởi Swagger 3. HTML cũng không phải là định dạng file được hỗ trợ bởi Swagger 3. Vì vậy, đáp án đúng cho câu hỏi này là JSON hoặc YAML.

#022
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AonClick={handleClick}
onClick={handleClick()}ĐÚNG
ConClick={() => handleClick()}
DonClick={(e) => handleClick(e)}
Giải thích

Trong React, cách xử lý sự kiện được thực hiện bằng cách sử dụng các thuộc tính đặc biệt như onClick, onMouseOver, v.v. Có một số cách để gọi hàm xử lý sự kiện, nhưng không phải tất cả đều hợp lệ. Ví dụ, bạn có thể gọi hàm xử lý sự kiện bằng cách sử dụng biểu thức lambda như onClick={() => handleClick()} hoặc bằng cách truyền tham số vào hàm xử lý sự kiện như onClick={(e) => handleClick(e)}. Tuy nhiên, cách không hợp lệ là gọi hàm xử lý sự kiện ngay lập tức như onClick={handleClick()}.

#023
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AMulti-threading
BBlocking I/O
Event-driven, non-blocking I/OĐÚNG
DRelational databases
Giải thích

Node.js là một nền tảng phát triển ứng dụng dựa trên JavaScript, và một trong những tính năng quan trọng giúp nó xử lý hiệu quả các yêu cầu đồng thời là cơ chế I/O không chặn (non-blocking I/O). Điều này cho phép Node.js xử lý nhiều yêu cầu đồng thời mà không cần tạo ra nhiều luồng (thread) như các ngôn ngữ lập trình khác. Thay vào đó, Node.js sử dụng một cơ chế sự kiện (event-driven) để quản lý các yêu cầu và xử lý chúng một cách hiệu quả. Khi một yêu cầu được gửi đến, Node.js sẽ thêm nó vào một danh sách các sự kiện cần được xử lý, và sau đó xử lý các sự kiện khác trong khi chờ đợi kết quả của yêu cầu đó. Điều này giúp Node.js xử lý nhiều yêu cầu đồng thời mà không cần tốn nhiều tài nguyên hệ thống.

#024
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
useContext()ĐÚNG
BuseProps()
CuseValue()
DuseContextValue()
Giải thích

Trong lập trình React, khi sử dụng các thành phần chức năng (Functional Components), chúng ta có thể truy cập vào giá trị của ngữ cảnh (context) bằng cách sử dụng Hook. Hook là một hàm đặc biệt được sử dụng để truy cập vào các giá trị và hành vi của React. Trong trường hợp này, chúng ta cần sử dụng Hook để truy cập vào giá trị của ngữ cảnh. Có một số lựa chọn cho chúng ta: useProps(), useValue(), useContextValue(), useContext(). Tuy nhiên, chỉ có một trong số đó là đúng. Đó là useContext(). Hook useContext() cho phép chúng ta truy cập vào giá trị của ngữ cảnh và sử dụng nó trong thành phần chức năng của mình.

#025
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Agit branch create feature-login
Bgit new branch feature-login
git branch feature-loginĐÚNG
Dgit checkout feature-login
Giải thích

Để tạo một nhánh mới trong Git, bạn cần sử dụng lệnh 'git branch'. Lệnh này được sử dụng để tạo một nhánh mới từ một điểm cụ thể trong lịch sử commit của dự án. Trong câu hỏi này, bạn cần tạo một nhánh mới có tên là 'feature-login'. Lệnh đúng để tạo nhánh mới là 'git branch feature-login'. Lệnh này sẽ tạo một nhánh mới có tên là 'feature-login' và nó sẽ được tạo từ điểm hiện tại của nhánh hiện tại. Nếu bạn muốn chuyển sang nhánh mới ngay lập tức, bạn cần sử dụng lệnh 'git checkout' sau khi tạo nhánh mới.

#026
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ABy directly modifying the DOM
By using lifecycle methods (Class Components) or useEffect Hook (Functional Components)ĐÚNG
CBy using CSS selectors
DBy using global variables
Giải thích

Khi xử lý dữ liệu tải về bất đồng bộ trong một thành phần React, bạn cần sử dụng một trong hai phương pháp sau. Trước đây, khi sử dụng các thành phần lớp (Class Components), bạn có thể sử dụng các phương thức vòng đời (lifecycle methods) để thực hiện các hành động khi dữ liệu tải về. Tuy nhiên, hiện tại khi sử dụng các thành phần chức năng (Functional Components), bạn nên sử dụng Hook useEffect để thực hiện các hành động tương tự. Điều này giúp bạn có thể quản lý dữ liệu tải về một cách dễ dàng và hiệu quả hơn.

#027
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AuseMemo
useReducerĐÚNG
CuseRef
DuseEffect
Giải thích

Khi sử dụng useState để quản lý trạng thái phức tạp, bạn có thể gặp phải một số vấn đề như trạng thái không được cập nhật đúng cách hoặc trạng thái bị trùng lặp. Trong trường hợp này, bạn có thể sử dụng useReducer như một giải pháp thay thế. useReducer cho phép bạn quản lý trạng thái phức tạp bằng cách sử dụng một hàm reducer để cập nhật trạng thái. Hàm reducer này sẽ nhận vào một trạng thái hiện tại và một hành động, sau đó trả về một trạng thái mới. Điều này giúp bạn có thể quản lý trạng thái phức tạp một cách dễ dàng và hiệu quả.

#028
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A@Description
B@RequestMapping
@OperationĐÚNG
D@EndpointDes
Giải thích

Để cung cấp một tóm tắt và mô tả cho một điểm cuối API cụ thể hoặc phương thức trong một controller, bạn cần sử dụng annotation @Operation. Annotation này được sử dụng để mô tả chi tiết về một phương thức hoặc điểm cuối API, bao gồm cả tên phương thức, mô tả phương thức, tham số đầu vào và đầu ra, v.v. Điều này giúp cho việc sử dụng và hiểu rõ về API trở nên dễ dàng hơn.

#029
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
<div class="my-class">Hello</div>ĐÚNG
B<component style="my-style">World</component>
C<for (let i = 0; i < 5; i++)>Loop</for>
D<if (true) {}>
Giải thích

Trong JSX, các biểu thức hợp lệ phải tuân theo các quy tắc sau: - Các thẻ HTML phải được viết theo cú pháp mở và đóng đúng. - Các thuộc tính phải được viết theo cú pháp <div class="my-class">. - Các biểu thức JavaScript không được sử dụng trong JSX. - Các biểu thức JSX không được sử dụng trong JavaScript. - Các thẻ không được sử dụng trong JSX. Vậy, trong các lựa chọn trên, chỉ có "<div class="my-class">Hello</div>" là một biểu thức JSX hợp lệ.

#030
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AThe object is associated with a Session and has a corresponding database record.
The object is not associated with any Session and does not have a database record.ĐÚNG
CThe object was previously associated with a Session but is now detached.
DThe object is cached in the second-level cache.
Giải thích

Trạng thái 'Transient' trong Hibernate cho biết đối tượng hiện không được liên kết với bất kỳ phiên làm việc nào và không có bản ghi tương ứng trong cơ sở dữ liệu. Điều này có nghĩa là đối tượng đã được tạo hoặc cập nhật nhưng chưa được lưu trữ vào cơ sở dữ liệu. Khi đối tượng ở trạng thái này, Hibernate sẽ không tự động lưu trữ nó vào cơ sở dữ liệu khi phiên làm việc kết thúc. Thay vào đó, bạn phải sử dụng phương thức save() hoặc persist() để lưu trữ đối tượng vào cơ sở dữ liệu.

#031
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo replace built-in Hooks.
To share stateful logic between components.ĐÚNG
CTo define CSS styles.
DTo manage database connections.
Giải thích

Một Custom Hook là một hàm có thể được sử dụng trong các thành phần React để chia sẻ logic trạng thái giữa các thành phần. Nó cho phép bạn tái sử dụng mã và giảm sự lặp lại trong ứng dụng của mình. Ví dụ, bạn có thể tạo một Custom Hook để quản lý trạng thái người dùng, như lưu trữ thông tin đăng nhập hoặc lưu trữ dữ liệu người dùng. Điều này giúp bạn dễ dàng chia sẻ logic trạng thái giữa các thành phần và làm cho mã của bạn trở nên dễ đọc và dễ bảo trì hơn. Ngoài ra, Custom Hooks cũng cho phép bạn tái sử dụng mã và giảm sự lặp lại trong ứng dụng của mình.

#032
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AOnly the MongoDB Java driver.
The MongoDB Java driver and Spring Data MongoDB.ĐÚNG
COnly Spring Data MongoDB.
DJDBC drivers and Spring Data JPA.
Giải thích

Tùy thuộc vào yêu cầu của dự án, bạn có thể chọn sử dụng MongoDB Java driver hoặc Spring Data MongoDB. Tuy nhiên, nếu bạn chọn sử dụng spring-boot-starter-data-mongodb, thì nó sẽ bao gồm cả hai phần này. MongoDB Java driver là một thư viện Java để kết nối với cơ sở dữ liệu MongoDB, trong khi Spring Data MongoDB là một phần mở rộng của Spring Framework để hỗ trợ giao tiếp với MongoDB. Với spring-boot-starter-data-mongodb, bạn có thể dễ dàng sử dụng các tính năng của MongoDB và Spring Data MongoDB trong dự án của mình.

#033
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define CSS styles.
To make HTTP requests.ĐÚNG
CTo manage database connections.
DTo handle client-side rendering exclusively.
Giải thích

Axios là một thư viện JavaScript phổ biến được sử dụng để thực hiện các yêu cầu HTTP trong các ứng dụng JavaScript. Nó cho phép bạn dễ dàng gửi và nhận dữ liệu từ máy chủ bằng cách sử dụng các phương thức HTTP khác nhau như GET, POST, PUT, DELETE, v.v. Axios cung cấp một cách đơn giản và dễ sử dụng để quản lý các yêu cầu HTTP, giúp giảm thiểu thời gian phát triển và tăng hiệu suất của ứng dụng. Ngoài ra, Axios cũng hỗ trợ các tính năng như hủy bỏ yêu cầu, quản lý trạng thái, và xử lý lỗi, giúp bạn có thể xây dựng các ứng dụng web mạnh mẽ và đáng tin cậy.

#034
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
GETĐÚNG
BPOST
CPUT
DDELETE
Giải thích

HTTP phương thức an toàn (không thay đổi tài nguyên) là phương thức GET. Phương thức GET được sử dụng để yêu cầu thông tin từ máy chủ mà không cần phải tạo, cập nhật hoặc xóa bất kỳ tài nguyên nào. Nó thường được sử dụng để tải xuống dữ liệu, hiển thị trang web hoặc tải xuống tệp. Ví dụ, khi bạn nhập địa chỉ URL của một trang web vào trình duyệt, trình duyệt sẽ gửi một yêu cầu GET đến máy chủ để tải xuống trang web đó. Phương thức GET không gửi bất kỳ dữ liệu nào đến máy chủ và không thay đổi trạng thái của tài nguyên. Do đó, nó được coi là phương thức an toàn.

#035
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AContent-Language
BContent-Encoding
Content-Type: application/jsonĐÚNG
DContent-Length
Giải thích

Để xác định loại nội dung của một phản hồi JSON, bạn cần sử dụng tiêu đề HTTP nào?

#036
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AGET
BPUT
Both GET and PUTĐÚNG
DPOST
Giải thích

HTTP phương thức idempotent là phương thức có thể thực hiện nhiều lần mà không gây ra tác động khác biệt. Trong các phương thức HTTP, phương thức GET và PUT được coi là idempotent. Phương thức GET được sử dụng để lấy dữ liệu từ server, trong khi phương thức PUT được sử dụng để cập nhật dữ liệu trên server. Vì cả hai phương thức này đều không gây ra tác động khác biệt khi thực hiện nhiều lần, nên chúng được coi là idempotent. Ví dụ, nếu bạn thực hiện GET nhiều lần để lấy dữ liệu, bạn sẽ nhận được dữ liệu giống nhau mỗi lần. Tương tự, nếu bạn thực hiện PUT nhiều lần để cập nhật dữ liệu, dữ liệu sẽ được cập nhật một lần duy nhất. Điều này giúp đảm bảo tính toàn vẹn và ổn định của dữ liệu trên server.

#037
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AUsing useState().
BUsing this.setState().
By assigning a value to this.state in the constructor().ĐÚNG
DBy using props.state.
Giải thích

Trong khi khởi tạo một thành phần Class Component, bạn cần phải sử dụng hàm constructor() để khởi tạo trạng thái ban đầu của component. Hàm constructor() được gọi khi component được tạo mới và nó được sử dụng để khởi tạo trạng thái của component. Bạn có thể sử dụng từ khóa 'this.state' để truy cập vào trạng thái của component và gán giá trị cho nó. Ví dụ: constructor(props) { super(props); this.state = { trạng_thái: 'giá_trị' }; }. Điều này giúp bạn có thể truy cập và sử dụng trạng thái trong các phương thức khác của component.

#038
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA local installation of MongoDB.
A cloud-hosted database service by MongoDB.ĐÚNG
CA Java driver for MongoDB.
DA tool for managing relational databases.
Giải thích

MongoDB Atlas là một dịch vụ cơ sở dữ liệu được lưu trữ trên đám mây do MongoDB cung cấp. Nó cho phép người dùng tạo và quản lý các cơ sở dữ liệu MongoDB trên các nền tảng đám mây như AWS, Google Cloud và Azure. Với MongoDB Atlas, người dùng có thể dễ dàng tạo và cấu hình các cơ sở dữ liệu, cũng như quản lý quyền truy cập và bảo mật. Ngoài ra, MongoDB Atlas cũng cung cấp các tính năng tự động hóa và giám sát để giúp người dùng tối ưu hóa hiệu suất và bảo mật của cơ sở dữ liệu. Điều này làm cho MongoDB Atlas trở thành một lựa chọn phổ biến cho các ứng dụng và dự án cần một cơ sở dữ liệu mạnh mẽ và linh hoạt.

#039
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aspringfox-boot-starter
springdoc-openapi-starter-webmvc-uiĐÚNG
Cswagger-core-jakarta
Dspring-boot-starter-docs
Giải thích

Để tích hợp Swagger 3 với ứng dụng Spring Boot 3, bạn cần thêm một số dependency vào file pom.xml hoặc build.gradle của dự án. Trong đó, dependency được sử dụng phổ biến nhất là springdoc-openapi-starter-webmvc-ui. Đây là một library được thiết kế để hỗ trợ việc tạo và quản lý API bằng cách sử dụng OpenAPI Specification. Nó cho phép bạn tạo và cấu hình API một cách dễ dàng, đồng thời cũng cung cấp các tính năng như tạo tài liệu API, tạo giao diện người dùng để tương tác với API, v.v. Ngoài ra, springdoc-openapi-starter-webmvc-ui cũng hỗ trợ các tính năng như tạo API theo tiêu chuẩn OpenAPI 3.0, tạo tài liệu API bằng cách sử dụng Markdown, v.v. Vì vậy, nếu bạn đang tìm kiếm một library để tích hợp Swagger 3 với ứng dụng Spring Boot 3, thì springdoc-openapi-starter-webmvc-ui là một lựa chọn tuyệt vời.

#040
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A@OneToOne
B@OneToMany
@ManyToManyĐÚNG
D@JoinColumn
Giải thích

Trong JPA, annotation nào định nghĩa mối quan hệ nhiều đến nhiều? Mối quan hệ nhiều đến nhiều là một loại mối quan hệ giữa hai bảng trong cơ sở dữ liệu, trong đó một bản ghi trong bảng này có thể liên kết với nhiều bản ghi trong bảng khác và ngược lại. Annotation @ManyToMany được sử dụng để định nghĩa mối quan hệ này. Nó cho phép bạn tạo một mối quan hệ giữa hai bảng thông qua một bảng trung gian. Ví dụ, một người có thể có nhiều bạn bè và một bạn bè cũng có thể có nhiều người. Annotation @ManyToMany giúp bạn quản lý mối quan hệ này một cách dễ dàng.

#041
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A<Alert type="success">Message</Alert>
<Alert variant="success">Message</Alert>ĐÚNG
C<Alert style="success">Message</Alert>
D<SuccessAlert>Message</SuccessAlert>
Giải thích

Để hiển thị thông báo thành công trong React-Bootstrap, bạn cần sử dụng thẻ Alert với thuộc tính variant được đặt thành 'success'. Ví dụ, bạn có thể sử dụng thẻ Alert như sau: <Alert variant="success">Message</Alert>. Điều này sẽ hiển thị một thông báo thành công với nội dung 'Message'. Ngoài ra, bạn cũng có thể sử dụng các thuộc tính khác như type hoặc style để thay đổi màu sắc hoặc kiểu dáng của thông báo, nhưng variant là thuộc tính được khuyến nghị sử dụng trong React-Bootstrap.

#042
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
React.memoĐÚNG
BshouldComponentUpdate
CPureComponent
DuseState
Giải thích

Tính năng React giúp ngăn chặn các re-render không cần thiết trong các thành phần chức năng là React.memo. React.memo là một hàm cao cấp giúp kiểm tra xem props của thành phần đã thay đổi hay chưa. Nếu props không thay đổi, React sẽ không thực hiện re-render. Điều này giúp cải thiện hiệu suất ứng dụng React. Ngoài ra, React.memo cũng có thể được sử dụng để ngăn chặn re-render không cần thiết trong các thành phần con.

#043
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
hibernate.cache.use_second_level_cacheĐÚNG
Bhibernate.cache.provider_class
Chibernate.cache.region.factory_class
Dhibernate.cache.use_query_cache
Giải thích

Câu hỏi này yêu cầu bạn chọn thuộc tính của Hibernate Cache cho phép bật cache cấp hai. Cache cấp hai là một tính năng quan trọng của Hibernate giúp giảm thiểu số lượng truy vấn cơ sở dữ liệu bằng cách lưu trữ kết quả của các truy vấn trước đó trong bộ nhớ. Điều này giúp cải thiện hiệu suất ứng dụng và giảm thiểu tải trên cơ sở dữ liệu. Để bật cache cấp hai, bạn cần thiết lập thuộc tính `hibernate.cache.use_second_level_cache` thành `true`. Ngoài ra, bạn cũng cần thiết lập thuộc tính `hibernate.cache.provider_class` để chỉ định lớp cung cấp cache. Một số lớp cung cấp cache phổ biến bao gồm `org.hibernate.cache.EhCacheProvider`, `org.hibernate.cache.HashtableCacheProvider`, v.v. Bạn cần chọn lớp cung cấp cache phù hợp với nhu cầu của ứng dụng. Tóm lại, thuộc tính `hibernate.cache.use_second_level_cache` là thuộc tính quan trọng nhất cho phép bật cache cấp hai trong Hibernate.

#044
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define a column name.
To specify the strategy for generating primary key values.ĐÚNG
CTo create a new table.
DTo define a new entity.
Giải thích

Annotation @GeneratedValue được sử dụng để chỉ định chiến lược tạo giá trị khóa chính. Khi sử dụng @GeneratedValue, bạn có thể chọn một trong các chiến lược tạo khóa chính như AUTO, IDENTITY, SEQUENCE hoặc TABLE. Mục đích chính của @GeneratedValue là tự động tạo khóa chính cho mỗi bản ghi mới được thêm vào bảng dữ liệu. Điều này giúp giảm thiểu sự phức tạp khi phải tự tạo khóa chính cho mỗi bản ghi.

#045
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
MongoTemplateĐÚNG
BMongoExecutor
CJdbcTemplate
DMongoManager
Giải thích

Khi sử dụng MongoRepository, bạn có thể thực hiện các hoạt động CRUD cơ bản. Tuy nhiên, để có thể thực hiện các truy vấn phức tạp và các hoạt động khác đối với MongoDB, bạn cần sử dụng một lớp cung cấp sự kiểm soát chi tiết hơn. Trong Spring Data MongoDB, lớp cung cấp sự kiểm soát chi tiết hơn này là MongoTemplate.

#046
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Athis.state = { newValue: 'new' };
this.setState({ newValue: 'new' });ĐÚNG
CuseState('new');
Dstate.update({newValue: 'new'});
Giải thích

Để cập nhật trạng thái trong một Component lớp, chúng ta có thể sử dụng phương thức setState(). Phương thức này cho phép cập nhật trạng thái của Component một cách an toàn và hiệu quả. Khi sử dụng setState(), Component sẽ được cập nhật ngay lập tức và trạng thái mới sẽ được lưu trữ trong bộ nhớ đệm. Sau đó, trạng thái mới sẽ được cập nhật vào bộ nhớ chính trong vòng đời của Component. Điều này giúp đảm bảo rằng trạng thái của Component luôn được cập nhật một cách đồng bộ và chính xác.

#047
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AUsing square brackets: [param]
BUsing curly braces: {param}
Using a colon: :paramĐÚNG
DUsing a question mark: ?param
Giải thích

Để định nghĩa một tham số đường dẫn trong một đường dẫn React Router, bạn cần sử dụng dấu hai chấm (:). Ví dụ, đường dẫn "/users/:id" sẽ nhận một tham số id từ URL. Khi sử dụng tham số đường dẫn, bạn có thể truy cập giá trị của nó trong component bằng cách sử dụng props.match.params. Ví dụ, trong component "/users/:id", bạn có thể sử dụng props.match.params.id để truy cập giá trị của tham số id. Ngoài ra, bạn cũng có thể sử dụng tham số đường dẫn để truyền dữ liệu từ server sang client. Điều này giúp bạn có thể xây dựng ứng dụng web động và linh hoạt hơn.

#048
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ASort.descending()
Sort.ascending()ĐÚNG
CSort.unsorted()
DSort.by()
Giải thích

Để tạo một đối tượng Sort cho thứ tự tăng dần, bạn cần sử dụng phương thức Sort.ascending(). Phương thức này được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần. Ví dụ, nếu bạn có một danh sách các số từ nhỏ đến lớn, phương thức này sẽ giúp bạn sắp xếp chúng theo thứ tự tăng dần. Ngoài ra, phương thức Sort.ascending() cũng có thể được sử dụng để sắp xếp các chuỗi hoặc các đối tượng theo thứ tự tăng dần dựa trên giá trị của chúng. Tuy nhiên, cần lưu ý rằng phương thức này chỉ hoạt động khi dữ liệu được sắp xếp là một danh sách hoặc một mảng.