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

#442
100%
ĐỘ CHÍNH XÁC
5
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.

#443
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.

#444
100%
ĐỘ CHÍNH XÁC
5
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.

#445
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.

#446
100%
ĐỘ CHÍNH XÁC
5
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.

#447
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.

#448
100%
ĐỘ CHÍNH XÁC
4
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.

#449
100%
ĐỘ CHÍNH XÁC
5
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.

#450
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?

#451
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.

#452
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.

#453
100%
ĐỘ CHÍNH XÁC
5
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.

#454
100%
ĐỘ CHÍNH XÁC
4
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.

#455
100%
ĐỘ CHÍNH XÁC
4
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>.

#456
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.

#457
100%
ĐỘ CHÍNH XÁC
4
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.

#458
75%
ĐỘ CHÍNH XÁC
4
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'.

#459
100%
ĐỘ CHÍNH XÁC
4
LƯỢT LÀM
4 LỰA CHỌN
ABy directly modifying the state variable.
BBy calling this.setState().
By calling the setter function returned by useState().ĐÚNG
DBy using props.setState().
Giải thích

Trong các thành phần chức năng, việc cập nhật trạng thái được thực hiện thông qua hàm setter được trả về bởi useState(). Hàm useState() được sử dụng để tạo một biến trạng thái và một hàm setter cho biến đó. Khi bạn muốn cập nhật trạng thái, bạn sẽ gọi hàm setter này với giá trị mới. Ví dụ, nếu bạn có một biến trạng thái tên là 'count' và bạn muốn tăng giá trị của nó lên 1, bạn sẽ gọi hàm setter như sau: setCount(count + 1). Điều này sẽ cập nhật giá trị của biến trạng thái 'count' và tự động re-render các phần tử trong giao diện người dùng.

#460
75%
ĐỘ CHÍNH XÁC
4
LƯỢT LÀM
4 LỰA CHỌN
AThe component re-renders.
BAn error is thrown.
The change is ignored.ĐÚNG
DThe component updates, but it is not recommended.
Giải thích

Khi bạn trực tiếp sửa đổi biến trạng thái được trả về bởi useState() trong một thành phần chức năng, thì thay đổi này sẽ bị bỏ qua. Điều này là vì useState() sử dụng một đối tượng trạng thái riêng biệt để lưu trữ giá trị của biến trạng thái. Khi bạn sửa đổi biến trạng thái trực tiếp, bạn không thay đổi giá trị được lưu trữ trong đối tượng trạng thái. Thay vào đó, bạn đang sửa đổi một bản sao của giá trị đó. Vì vậy, khi useState() được gọi lại trong vòng đời của thành phần, nó sẽ trả về giá trị ban đầu, không phải giá trị đã được sửa đổi.