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
#701
100%
ĐỘ CHÍNH XÁC
7
LƯỢT LÀM
4 LỰA CHỌN
ACompound index
Unique indexĐÚNG
CHashed index
DText index
Giải thích

Để đảm bảo giá trị của một trường trong một tài liệu là duy nhất, chúng ta sử dụng loại chỉ mục đặc biệt gọi là "Unique index". Chỉ mục này đảm bảo rằng giá trị của trường đó không được lặp lại trong bất kỳ tài liệu nào. Điều này giúp ngăn chặn việc trùng lặp dữ liệu và đảm bảo tính toàn vẹn của dữ liệu. Ví dụ, nếu chúng ta có một trường "ID người dùng" và muốn đảm bảo rằng mỗi người dùng đều có một ID duy nhất, chúng ta có thể sử dụng chỉ mục Unique index cho trường này. Điều này giúp hệ thống dữ liệu của chúng ta trở nên ổn định và đáng tin cậy hơn.

#702
100%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
4 LỰA CHỌN
AMongoDB supports relational schema only
Collections in MongoDB can have documents with different fieldsĐÚNG
CMongoDB requires a fixed schema
DAll fields in documents must be predefined
Giải thích

MongoDB không hỗ trợ cấu trúc dữ liệu quan hệ như các cơ sở dữ liệu truyền thống. Thay vào đó, MongoDB sử dụng mô hình NoSQL, cho phép lưu trữ dữ liệu dưới dạng các tài liệu (documents) trong các tập hợp (collections). Mỗi tài liệu có thể có các trường (fields) khác nhau, cho phép tạo ra các cấu trúc dữ liệu linh hoạt và dễ dàng mở rộng. Điều này khác biệt với các cơ sở dữ liệu quan hệ, nơi mà mỗi bảng (table) phải có một cấu trúc cố định và các trường phải được định nghĩa trước khi tạo bảng. Vì vậy, câu trả lời đúng là "Collections in MongoDB có thể có tài liệu với các trường khác nhau".

#703
67%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
4 LỰA CHỌN
AUsing XML layout files
BUsing HTML and CSS
Using a hierarchical widget treeĐÚNG
DUsing native UI components only
Giải thích

Flutter UI được xây dựng nội bộ bằng cách sử dụng một cây widget cấp bậc. Mỗi ứng dụng Flutter đều có một cây widget cấp bậc duy nhất, bắt đầu từ một widget gốc (root widget). Cây widget này được xây dựng bằng cách sử dụng các widget con, mỗi widget con được tạo ra từ một lớp widget cụ thể. Các widget con này được kết nối với nhau bằng cách sử dụng các thuộc tính như padding, margin, và vị trí. Điều này cho phép các nhà phát triển tạo ra các giao diện người dùng phức tạp và linh hoạt. Ngoài ra, cây widget cấp bậc cũng cho phép Flutter thực hiện hiệu suất cao và tối ưu hóa tài nguyên.

#704
67%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
4 LỰA CHỌN
Ahive
Bmoor
sqfliteĐÚNG
Dshared_preferences
Giải thích

Flutter cung cấp nhiều plugin để hỗ trợ lưu trữ dữ liệu trên thiết bị di động. Trong đó, plugin SQLite hỗ trợ lưu trữ dữ liệu trong cơ sở dữ liệu SQLite. Plugin sqflite là một trong những plugin phổ biến nhất được sử dụng để hỗ trợ SQLite trên Flutter. Nó cho phép bạn tạo, đọc, cập nhật và xóa dữ liệu trong cơ sở dữ liệu SQLite.

#705
67%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
4 LỰA CHỌN
AStatic app bar
Scrollable flexible app barĐÚNG
CBottom navigation
DDrawer control
Giải thích

SliverAppBar là một widget trong Flutter giúp tạo một thanh điều hướng có thể cuộn. Nó cho phép thanh điều hướng được ẩn khi người dùng cuộn lên, tạo ra một giao diện đẹp mắt và dễ sử dụng. Khi người dùng cuộn xuống, thanh điều hướng sẽ xuất hiện trở lại, giúp người dùng dễ dàng điều hướng qua các trang khác nhau trong ứng dụng. SliverAppBar cũng cho phép người dùng tùy chỉnh các thuộc tính như màu sắc, hình ảnh, và nội dung của thanh điều hướng.

#706
67%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
4 LỰA CHỌN
AFuture
StreamĐÚNG
CAnimation
DTheme
Giải thích

BLoC (Business Logic Component) là một mô hình thiết kế ứng dụng được sử dụng rộng rãi trong lập trình di động. Nó được thiết kế để tách biệt logic kinh doanh khỏi giao diện người dùng, giúp ứng dụng trở nên dễ dàng bảo trì và mở rộng hơn. BLoC dựa trên khái niệm Stream, một loại dữ liệu có thể thay đổi theo thời gian. Stream cho phép ứng dụng cập nhật trạng thái một cách dễ dàng và đồng bộ, giúp đảm bảo ứng dụng luôn hiển thị trạng thái mới nhất. Ngoài ra, Stream cũng cho phép ứng dụng xử lý các sự kiện và dữ liệu một cách linh hoạt và hiệu quả.

#707
50%
ĐỘ CHÍNH XÁC
4
LƯỢT LÀM
4 LỰA CHỌN
ASingle function
BWidget rendering
End-to-end app behaviorĐÚNG
DTheme consistency
Giải thích

Một bài kiểm tra tích hợp (integration test) là một loại kiểm tra phần mềm được sử dụng để xác minh rằng các thành phần khác nhau của một ứng dụng hoạt động cùng nhau một cách chính xác. Bài kiểm tra này không chỉ kiểm tra một chức năng đơn lẻ mà còn kiểm tra cách các chức năng khác nhau tương tác với nhau. Ví dụ, một bài kiểm tra tích hợp có thể kiểm tra việc đăng nhập vào ứng dụng, sau đó thêm một sản phẩm vào giỏ hàng và cuối cùng thực hiện thanh toán. Điều này giúp đảm bảo rằng ứng dụng hoạt động một cách trơn tru và không có lỗi khi người dùng tương tác với nó.

#708
67%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
4 LỰA CHỌN
AUI speed
Predictable state changesĐÚNG
CMemory usage
DTheme control
Giải thích

Immutability trong các trạng thái BLoC là một tính chất quan trọng vì nó đảm bảo rằng trạng thái của ứng dụng luôn được dự đoán được. Khi một trạng thái được thay đổi, nó sẽ tạo ra một bản sao mới của trạng thái đó, thay vì thay đổi trực tiếp trạng thái hiện tại. Điều này giúp ngăn chặn các vấn đề liên quan đến trạng thái không được cập nhật một cách đồng bộ, từ đó cải thiện tốc độ và độ ổn định của ứng dụng. Ngoài ra, tính immutability còn giúp giảm thiểu các vấn đề liên quan đến đồng bộ hóa trạng thái giữa các phần tử trong ứng dụng, giúp ứng dụng trở nên dễ dàng hơn trong việc quản lý và bảo trì.

#709
67%
ĐỘ CHÍNH XÁC
3
LƯỢT LÀM
4 LỰA CHỌN
Asqflite
shared_preferencesĐÚNG
Cprovider
Dhttp
Giải thích

Flutter cung cấp nhiều cách để lưu trữ dữ liệu, nhưng khi nói đến việc lưu trữ giá trị cơ bản như chuỗi, số, boolean, v.v., thì package "shared_preferences" là lựa chọn phổ biến nhất. Package này cho phép bạn lưu trữ dữ liệu dưới dạng key-value, dễ dàng sử dụng và không yêu cầu cấu hình phức tạp. Bạn có thể sử dụng nó để lưu trữ thông tin người dùng, trạng thái ứng dụng, v.v. Package "shared_preferences" cũng hỗ trợ các phương thức như lưu trữ dữ liệu, đọc dữ liệu, xóa dữ liệu, v.v. Nó là một phần quan trọng của bất kỳ ứng dụng Flutter nào và được sử dụng rộng rãi trong cộng đồng phát triển Flutter.

#710
100%
ĐỘ CHÍNH XÁC
7
LƯỢT LÀM
4 LỰA CHỌN
AMapping of SQL queries to documents
BAutomatic index creation
A low-level interface to MongoDB operationsĐÚNG
DAutomatic data validation
Giải thích

MongoTemplate là một lớp cung cấp một giao diện cao cấp để tương tác với MongoDB trong ứng dụng Spring Data MongoDB. Nó cung cấp một số tính năng quan trọng như ánh xạ các câu lệnh SQL sang tài liệu, tự động tạo chỉ mục, tạo một giao diện thấp cấp để thực hiện các hoạt động MongoDB và tự động kiểm tra dữ liệu. Tuy nhiên, trong các lựa chọn trên, chỉ có một lựa chọn chính xác. Lựa chọn A, "A low-level interface to MongoDB operations", là đúng vì MongoTemplate cung cấp một giao diện thấp cấp để thực hiện các hoạt động MongoDB.

#711
100%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
4 LỰA CHỌN
Aspring-boot-mongodb
spring-boot-starter-data-mongodbĐÚNG
Cspring-boot-starter-data-jpa
Dspring-boot-starter-mongo
Giải thích

Để thêm hỗ trợ MongoDB vào ứng dụng Spring Boot, bạn cần thêm starter dependency có tên là spring-boot-starter-data-mongodb vào file pom.xml hoặc build.gradle của dự án. Starter này bao gồm các thư viện cần thiết để kết nối với MongoDB và thực hiện các hoạt động CRUD (Create, Read, Update, Delete) trên dữ liệu. Ngoài ra, nó cũng cung cấp các tính năng như hỗ trợ các loại dữ liệu khác nhau, kiểm tra dữ liệu, và các công cụ khác để giúp bạn quản lý dữ liệu hiệu quả hơn. Khi thêm starter này vào dự án, bạn có thể sử dụng các lớp như MongoTemplate để thực hiện các hoạt động CRUD và các phương thức khác để tương tác với MongoDB.

#712
88%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
4 LỰA CHỌN
ABy using SQL mirroring
BBy using cron jobs for backup
Through replica sets with automatic failoverĐÚNG
DBy distributing indexes across servers
Giải thích

MongoDB đảm bảo tính sẵn sàng cao bằng cách sử dụng các tập bản sao (replica sets) với khả năng tự động chuyển đổi (automatic failover). Tập bản sao là một nhóm các máy chủ MongoDB hoạt động cùng nhau để lưu trữ dữ liệu và đảm bảo tính sẵn sàng cao. Khi một máy chủ trong tập bản sao gặp sự cố, các máy chủ khác trong tập bản sao sẽ tự động chuyển đổi sang trạng thái hoạt động, đảm bảo dữ liệu vẫn được truy cập và cập nhật một cách liên tục. Điều này giúp ngăn chặn sự cố mất dữ liệu và đảm bảo tính sẵn sàng cao của hệ thống.

#713
100%
ĐỘ CHÍNH XÁC
7
LƯỢT LÀM
4 LỰA CHỌN
ATo map embedded documents
BTo index a document
To define a relationship between documents via referenceĐÚNG
DTo ignore the field during persistence
Giải thích

Trong Spring Data MongoDB, @DBRef là một annotation được sử dụng để định nghĩa mối quan hệ giữa các tài liệu MongoDB thông qua tham chiếu. Khi sử dụng @DBRef, bạn có thể định nghĩa một tài liệu tham chiếu đến một tài liệu khác trong cùng một cơ sở dữ liệu. Điều này cho phép bạn thực hiện các truy vấn phức tạp và quản lý mối quan hệ giữa các tài liệu một cách hiệu quả. Ví dụ, nếu bạn có một tài liệu người dùng và một tài liệu thông tin liên hệ, bạn có thể sử dụng @DBRef để định nghĩa mối quan hệ giữa hai tài liệu này. Điều này giúp bạn có thể truy vấn thông tin liên hệ của một người dùng một cách dễ dàng.

#714
100%
ĐỘ CHÍNH XÁC
6
LƯỢT LÀM
4 LỰA CHỌN
A flexible way to set body, status, and headersĐÚNG
BOnly status codes
CA way to redirect to views
DOnly body
Giải thích

Trong REST controller, ResponseEntity cung cấp một cách linh hoạt để thiết lập cơ thể, trạng thái và tiêu đề của phản hồi. Điều này cho phép bạn có nhiều quyền kiểm soát hơn đối với phản hồi của ứng dụng, bao gồm cả việc thiết lập trạng thái HTTP cụ thể, thêm tiêu đề tùy chỉnh và thiết lập cơ thể phản hồi theo cách mong muốn. Điều này đặc biệt hữu ích khi bạn cần trả về một phản hồi phức tạp hoặc cần thiết lập trạng thái HTTP cụ thể để thông báo cho khách hàng về kết quả của yêu cầu.

#715
100%
ĐỘ CHÍNH XÁC
7
LƯỢT LÀM
4 LỰA CHỌN
AIt forces methods to return HTML views
It applies @ResponseBody to all methods by defaultĐÚNG
CIt disables automatic serialization
DIt disables exception handling
Giải thích

Khi sử dụng @RestController thay vì @Controller, bạn sẽ thấy một số thay đổi quan trọng. @RestController là một annotation đặc biệt trong Spring MVC, được thiết kế để tạo ra các RESTful API. Nó có tác dụng tự động áp dụng @ResponseBody cho tất cả các phương thức trong lớp, điều này có nghĩa là bất kỳ phương thức nào cũng sẽ trả về dữ liệu JSON hoặc XML theo mặc định. Điều này giúp giảm thiểu sự phức tạp khi tạo ra các API RESTful, vì bạn không cần phải thêm @ResponseBody vào từng phương thức. Ngoài ra, @RestController cũng tự động áp dụng các quy tắc về dữ liệu trả về, giúp đảm bảo rằng dữ liệu được trả về đúng định dạng và cấu trúc.

#716
100%
ĐỘ CHÍNH XÁC
6
LƯỢT LÀM
4 LỰA CHỌN
A@JsonRequest
@PostMapping with @RequestBody and @ResponseBodyĐÚNG
C@Consumes and @Produces
D@RequestBody
Giải thích

Để định nghĩa một phương thức xử lý cả hai định dạng yêu cầu và phản hồi JSON, chúng ta cần sử dụng các annotation @PostMapping, @RequestBody và @ResponseBody. @PostMapping được sử dụng để chỉ định phương thức HTTP được sử dụng để gửi yêu cầu đến server. @RequestBody được sử dụng để ánh xạ dữ liệu từ yêu cầu HTTP sang một đối tượng Java. @ResponseBody được sử dụng để ánh xạ một đối tượng Java sang dữ liệu HTTP. Ví dụ, nếu chúng ta muốn tạo một phương thức xử lý yêu cầu và phản hồi JSON, chúng ta có thể sử dụng các annotation như sau: @PostMapping(value = "/example", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<String> example(@RequestBody String request) { // Xử lý yêu cầu và trả về phản hồi return ResponseEntity.ok("Phản hồi từ server"); } Bằng cách sử dụng các annotation này, chúng ta có thể định nghĩa một phương thức xử lý cả hai định dạng yêu cầu và phản hồi JSON.

#717
88%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
4 LỰA CHỌN
@PostMapping and @RequestBodyĐÚNG
B@GetMapping and @PathVariable
C@PostMapping and @RequestParam
D@PostMapping and @ResponseBody
Giải thích

Để xác định một phương thức xử lý yêu cầu POST và chấp nhận cơ thể yêu cầu, bạn cần sử dụng hai annotation đặc biệt trong Spring MVC. Đầu tiên, bạn cần sử dụng @PostMapping để chỉ định phương thức xử lý yêu cầu POST. Thứ hai, bạn cần sử dụng @RequestBody để chỉ định rằng phương thức này sẽ chấp nhận cơ thể yêu cầu được gửi đi. Điều này cho phép bạn truy cập vào dữ liệu được gửi đi trong cơ thể yêu cầu. Ví dụ, nếu bạn muốn tạo một phương thức xử lý yêu cầu POST để tạo một tài khoản mới, bạn có thể sử dụng @PostMapping và @RequestBody như sau: @PostMapping("/taikhoan") public ResponseEntity<TaiKhoan> taoTaiKhoan(@RequestBody TaiKhoan taiKhoan) { // Xử lý tạo tài khoản } Trong ví dụ trên, @PostMapping chỉ định phương thức xử lý yêu cầu POST, và @RequestBody chỉ định rằng phương thức này sẽ chấp nhận cơ thể yêu cầu được gửi đi.

#718
100%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
4 LỰA CHỌN
ATo render HTML content
To provide data through JSON or XML over HTTPĐÚNG
CTo connect to a database
DTo secure the application with OAuth2
Giải thích

Mục đích chính của một dịch vụ web RESTful trong Spring Boot là cung cấp dữ liệu thông qua JSON hoặc XML qua HTTP. Dịch vụ web RESTful sử dụng các phương thức HTTP như GET, POST, PUT, DELETE để tương tác với các nguồn dữ liệu. Khi một yêu cầu HTTP được gửi đến dịch vụ web RESTful, nó sẽ xử lý yêu cầu và trả về dữ liệu phù hợp theo định dạng JSON hoặc XML. Điều này cho phép các ứng dụng khác nhau có thể giao tiếp với dịch vụ web RESTful và sử dụng dữ liệu được cung cấp. Ví dụ, một ứng dụng web có thể sử dụng dịch vụ web RESTful để tải xuống dữ liệu từ một cơ sở dữ liệu và hiển thị dữ liệu đó trên trang web.

#719
100%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
4 LỰA CHỌN
ABy using HttpServletResponse
BYou cannot control the status code
By using @ResponseStatus annotationĐÚNG
DBy returning an int
Giải thích

Để chỉ định mã trạng thái phản hồi trong một controller REST, bạn có thể sử dụng một trong các phương pháp sau. Phương pháp đầu tiên là sử dụng HttpServletResponse. Tuy nhiên, phương pháp này không được khuyến khích vì nó yêu cầu bạn phải sử dụng phương thức sendError() để chỉ định mã trạng thái. Phương pháp thứ hai là bạn không thể kiểm soát mã trạng thái. Phương pháp thứ ba là sử dụng @ResponseStatus annotation. Đây là phương pháp được khuyến khích nhất vì nó cho phép bạn dễ dàng chỉ định mã trạng thái cho phương thức controller của mình. Phương pháp thứ tư là bằng cách trả về một giá trị int. Tuy nhiên, phương pháp này cũng không được khuyến khích vì nó có thể gây nhầm lẫn và khó bảo trì.

#720
100%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
4 LỰA CHỌN
A@RequestGet
B@Get
C@HttpGet
@GetMappingĐÚNG
Giải thích

Để ánh xạ các yêu cầu HTTP GET đến một phương thức, chúng ta sử dụng annotation @GetMapping trong Spring. Annotation này cho phép chúng ta định nghĩa một phương thức có thể được gọi khi nhận được yêu cầu GET từ client. Ví dụ, nếu chúng ta có một phương thức như sau: @GetMapping("/users") public List<User> getUsers() { // logic để lấy danh sách người dùng } Thì khi client gửi yêu cầu GET đến đường dẫn /users, phương thức getUsers() sẽ được gọi và trả về danh sách người dùng. Annotation @GetMapping là một trong những annotation quan trọng trong Spring, giúp chúng ta xây dựng các ứng dụng web hiệu quả và dễ dàng quản lý.