Tất cả câu hỏi

Ngân hàng câu hỏi trắc nghiệm có đáp án và giải thích chi tiết.

Bấm vào từng câu để xem đáp án
#821
100%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
4 LỰA CHỌN
AMongoRepository
BMongoClient
MongoTemplateĐÚNG
DSimpleMongoRepository
Giải thích

Trong Spring Data MongoDB, có một số cách để tương tác với MongoDB. Tuy nhiên, nếu bạn muốn thực hiện các hoạt động cơ bản của MongoDB như insert, update, delete, thì bạn cần sử dụng một lớp mẫu (template) để thực hiện các hoạt động này. Lớp mẫu này được gọi là MongoTemplate. MongoTemplate cung cấp các phương thức để thực hiện các hoạt động cơ bản của MongoDB và cung cấp sự linh hoạt để tùy chỉnh các hoạt động này.

#822
100%
ĐỘ CHÍNH XÁC
5
LƯỢT LÀM
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.

#823
83%
ĐỘ CHÍNH XÁC
6
LƯỢT LÀM
4 LỰA CHỌN
It prevents concurrent data conflictsĐÚNG
BIt improves UI rendering
CIt replaces caching
DIt manages database indexes
Giải thích

Optimistic locking trong JPA là một kỹ thuật giúp ngăn chặn các xung đột dữ liệu đồng thời. Khi một ứng dụng cố gắng cập nhật dữ liệu trong cơ sở dữ liệu, JPA sẽ kiểm tra xem bản ghi dữ liệu đó đã được cập nhật bởi người dùng khác hay chưa. Nếu dữ liệu đã được cập nhật, ứng dụng sẽ ném ra ngoại lệ, giúp ngăn chặn các xung đột dữ liệu đồng thời. Điều này giúp đảm bảo tính toàn vẹn và chính xác của dữ liệu trong cơ sở dữ liệu. Ngoài ra, optimistic locking cũng giúp cải thiện hiệu suất của ứng dụng, vì nó không yêu cầu các khóa ngoại (foreign key) để ngăn chặn các xung đột dữ liệu.

#824
100%
ĐỘ CHÍNH XÁC
6
LƯỢT LÀM
4 LỰA CHỌN
ASession.
Transaction.ĐÚNG
CSessionFactory.
DConfiguration.
Giải thích

Trong Hibernate, giao diện được sử dụng để quản lý các giao dịch cơ sở dữ liệu là Transaction. Giao diện Transaction cho phép bạn bắt đầu, hoàn thành và hủy bỏ các giao dịch cơ sở dữ liệu. Điều này giúp bạn có thể quản lý các giao dịch cơ sở dữ liệu một cách hiệu quả và an toàn. Khi sử dụng giao diện Transaction, bạn có thể đảm bảo rằng các giao dịch cơ sở dữ liệu được thực hiện một cách nguyên tử và không bị ảnh hưởng bởi các lỗi hoặc sự cố khác. Ngoài ra, giao diện Transaction cũng cho phép bạn sử dụng các tính năng như rollback và commit để quản lý các giao dịch cơ sở dữ liệu.

#825
100%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
4 LỰA CHỌN
ABy requiring manual SQL queries for every operation.
By providing an object-relational mapping (ORM) layer.ĐÚNG
CBy hiding all data from the application.
DBy increasing the number of database connections.
Giải thích

JPA (Java Persistence API) giúp quản lý tương tác với cơ sở dữ liệu bằng cách cung cấp một lớp ánh xạ đối tượng-relational (ORM). Điều này cho phép các lập trình viên viết mã Java mà không cần phải viết mã SQL thủ công để tương tác với cơ sở dữ liệu. Thay vào đó, JPA sẽ tự động chuyển đổi các đối tượng Java thành các bản ghi trong cơ sở dữ liệu và ngược lại. Điều này giúp giảm thiểu sự phức tạp và tăng cường hiệu suất khi tương tác với cơ sở dữ liệu. Ngoài ra, JPA cũng cung cấp các tính năng như quản lý trạng thái, quản lý mối quan hệ và hỗ trợ các tính năng nâng cao khác.

#826
100%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
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.

#827
100%
ĐỘ CHÍNH XÁC
5
LƯỢT LÀM
4 LỰA CHỌN
ATo increase API complexity.
To simplify data persistence and retrieval.ĐÚNG
CTo hide database interactions.
DTo reduce API functionality.
Giải thích

Kết nối một dịch vụ web RESTful với JPA (Java Persistence API) là một phương pháp phổ biến trong lập trình web. Lý do chính để thực hiện điều này là để đơn giản hóa quá trình lưu trữ và truy xuất dữ liệu. JPA cung cấp một lớp trừu tượng giữa ứng dụng và cơ sở dữ liệu, giúp giảm thiểu sự phức tạp trong việc quản lý dữ liệu. Khi sử dụng JPA, bạn có thể tập trung vào việc phát triển logic kinh doanh của ứng dụng mà không cần lo lắng về việc tương tác với cơ sở dữ liệu. Điều này giúp tăng hiệu suất và giảm thiểu thời gian phát triển. Ngoài ra, JPA cũng hỗ trợ các tính năng như phân tích dữ liệu, tạo báo cáo và quản lý phiên bản dữ liệu, giúp bạn có thể dễ dàng quản lý và phân tích dữ liệu của ứng dụng.

#828
100%
ĐỘ CHÍNH XÁC
4
LƯỢT LÀM
4 LỰA CHỌN
ACaching.
hbm2ddl (DDL auto feature)ĐÚNG
CAutomatic dirty checking.
DTransaction management.
Giải thích

Tính năng chính của Hibernate cung cấp tự động tạo bảng và tạo schema là hbm2ddl (tính năng tự động DDL). Đây là tính năng cho phép Hibernate tự động tạo bảng và schema trong cơ sở dữ liệu khi bạn chạy ứng dụng. Khi bạn sử dụng hbm2ddl, Hibernate sẽ tự động tạo bảng và schema dựa trên các thông tin được định nghĩa trong các tệp mapping Hibernate (hbm.xml hoặc hibernate.cfg.xml). Điều này giúp bạn tiết kiệm thời gian và công sức khi tạo cơ sở dữ liệu cho ứng dụng của mình. Ngoài ra, tính năng này cũng giúp bạn dễ dàng quản lý và cập nhật cơ sở dữ liệu khi ứng dụng của bạn thay đổi.

#829
100%
ĐỘ CHÍNH XÁC
6
LƯỢT LÀM
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.

#830
100%
ĐỘ CHÍNH XÁC
4
LƯỢT LÀM
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?

#831
100%
ĐỘ CHÍNH XÁC
4
LƯỢT LÀM
4 LỰA CHỌN
A@PathVariable
B@RequestParam
@RequestBodyĐÚNG
D@RequestHeader
Giải thích

Trong Spring Boot REST, để ánh xạ cơ thể yêu cầu HTTP đến tham số phương thức, chúng ta sử dụng annotation @RequestBody. Annotation này cho phép chúng ta ánh xạ dữ liệu từ cơ thể yêu cầu HTTP đến một đối tượng Java. Ví dụ, khi chúng ta tạo một phương thức REST để tạo mới một tài nguyên, chúng ta có thể sử dụng @RequestBody để ánh xạ dữ liệu từ cơ thể yêu cầu HTTP đến đối tượng Java mà chúng ta muốn tạo mới. Điều này giúp chúng ta có thể dễ dàng xử lý dữ liệu từ cơ thể yêu cầu HTTP và tạo mới tài nguyên một cách dễ dàng.

#832
100%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
4 LỰA CHỌN
AWhen updating only part of a resource
When replacing the entire resourceĐÚNG
CWhen deleting a resource
DWhen creating new resource
Giải thích

Khi nào bạn nên sử dụng PUT thay vì PATCH? PUT và PATCH đều được sử dụng để cập nhật dữ liệu, nhưng chúng có cách sử dụng khác nhau. PUT thường được sử dụng khi bạn muốn thay thế toàn bộ tài nguyên, trong khi PATCH được sử dụng khi bạn muốn cập nhật một phần của tài nguyên. Ví dụ, nếu bạn muốn thay thế toàn bộ thông tin về một người dùng, bạn nên sử dụng PUT. Ngược lại, nếu bạn chỉ muốn cập nhật thông tin về địa chỉ email của người dùng, bạn nên sử dụng PATCH. Sử dụng PUT thay vì PATCH khi bạn muốn thay thế toàn bộ tài nguyên.

#833
100%
ĐỘ CHÍNH XÁC
6
LƯỢT LÀM
4 LỰA CHỌN
A@RequestBody
B@RequestParam
@PathVariableĐÚNG
D@RequestHeader
Giải thích

Trong Spring Boot REST, annotation được sử dụng để trích xuất các biến đường dẫn từ URL là @PathVariable. Annotation này cho phép bạn truy cập vào các phần của URL và sử dụng chúng như là các biến trong phương thức của controller. Ví dụ, nếu bạn có một phương thức như sau: @GetMapping("/users/{id}") public String getUser(@PathVariable Long id) { // code here } Trong ví dụ trên, @PathVariable được sử dụng để trích xuất giá trị của id từ URL và sử dụng nó như là một biến trong phương thức getUser.

#834
100%
ĐỘ CHÍNH XÁC
5
LƯỢT LÀM
4 LỰA CHỌN
Aaxios.get()
Baxios.post()
axios.put() or axios.patch()ĐÚNG
Daxios.delete()
Giải thích

Trong RESTful API, phương thức Axios thường được sử dụng để cập nhật một tài nguyên hiện có là phương thức PUT hoặc PATCH. Phương thức PUT thường được sử dụng để cập nhật toàn bộ tài nguyên, trong khi phương thức PATCH được sử dụng để cập nhật một phần của tài nguyên. Ví dụ, nếu bạn muốn cập nhật thông tin cá nhân của một người dùng, bạn có thể sử dụng phương thức PUT để cập nhật toàn bộ thông tin, hoặc sử dụng phương thức PATCH để cập nhật chỉ một số thông tin cụ thể. Việc lựa chọn phương thức nào phụ thuộc vào yêu cầu cụ thể của ứng dụng và cấu trúc dữ liệu của tài nguyên.

#835
100%
ĐỘ CHÍNH XÁC
6
LƯỢT LÀM
4 LỰA CHỌN
new Promise(callback)ĐÚNG
BcreatePromise(callback)
CPromise.create(callback)
DPromise.new(callback)
Giải thích

Để tạo một đối tượng Promise mới trong JavaScript, bạn cần sử dụng từ khóa 'new' trước constructor của Promise. Syntax chính xác là 'new Promise(callback)', nơi callback là một hàm bao gồm hai tham số: resolve và reject. Hàm này sẽ được thực thi khi tạo đối tượng Promise. Trong callback, bạn có thể thực hiện các hành động cần thiết và sử dụng các tham số resolve và reject để quản lý trạng thái của Promise. Ví dụ: const promise = new Promise((resolve, reject) => { // code here resolve('Giải quyết được!'); }); Tóm lại, 'new Promise(callback)' là syntax chính xác để tạo một đối tượng Promise mới trong JavaScript.

#836
100%
ĐỘ CHÍNH XÁC
5
LƯỢT LÀM
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ó thể sử dụng <Route path="*" element={<NotFound />} /> như một tuyến đường cuối cùng. Điều này cho phép bạn định nghĩa một thành phần <NotFound> để hiển thị khi người dùng truy cập vào một đường dẫn không tồn tại. Ví dụ, nếu bạn thêm <Route path="*" element={<NotFound />} /> như một tuyến đường cuối cùng trong danh sách các tuyến đường, thì khi người dùng truy cập vào một đường dẫn không tồn tại, React Router sẽ tự động hiển thị thành phần <NotFound>.

#837
100%
ĐỘ CHÍNH XÁC
5
LƯỢT LÀM
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.

#838
100%
ĐỘ CHÍNH XÁC
4
LƯỢT LÀM
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.

#839
88%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
4 LỰA CHỌN
AuseState
useClassĐÚNG
CuseMemo
DuseEffect
Giải thích

Trong React, có một số hook được sử dụng để quản lý trạng thái và hiệu ứng trong ứng dụng. Các hook phổ biến bao gồm useState, useMemo, useEffect. Tuy nhiên, có một số hook không hợp lệ. Trong câu hỏi này, chúng ta cần xác định hook không hợp lệ. 'useState' và 'useMemo' là hai hook hợp lệ, được sử dụng để quản lý trạng thái và hiệu ứng trong ứng dụng. 'useEffect' cũng là một hook hợp lệ, được sử dụng để thực hiện hành động sau khi render. 'useClass' là một hook không hợp lệ, vì nó không tồn tại trong React. Vì vậy, câu trả lời đúng cho câu hỏi này là 'useClass'.

#840
33%
ĐỘ CHÍNH XÁC
6
LƯỢT LÀM
4 LỰA CHỌN
ACalling hooks at the top level of a component
Calling hooks inside a loopĐÚNG
CUsing multiple useState calls
DCalling hooks in custom hooks
Giải thích

Khi sử dụng React Hooks, chúng ta cần tuân thủ các quy tắc để tránh các lỗi không mong muốn. Một trong những quy tắc quan trọng là không gọi hooks trong các vòng lặp. Ví dụ, nếu bạn có một mảng các giá trị và muốn sử dụng useState để lưu trữ từng giá trị, bạn không nên gọi useState trong vòng lặp. Thay vào đó, bạn nên gọi useState một lần và sử dụng giá trị đó trong vòng lặp. Điều này giúp đảm bảo rằng mỗi lần render, bạn chỉ gọi useState một lần và tránh các vấn đề liên quan đến hiệu suất. Ngoài ra, bạn cũng không nên gọi hooks ở cấp độ cao nhất của một component, vì điều này có thể gây ra các vấn đề liên quan đến hiệu suất và khó debug. Cuối cùng, bạn cũng không nên gọi hooks trong các custom hooks, vì điều này có thể gây ra các vấn đề liên quan đến hiệu suất và khó debug.