Qiz HUB Logo
QizHUB
QUESTION LIBRARY

Trang chủ
Môn học
Chủ đề
Đề thi
Câu hỏi
Thẻ

Đăng nhập
Qiz HUB Logo
QizHUB
QUESTION LIBRARY PLATFORM
Trang chủMôn họcChủ đềNhóm họcThẻ
Luyện đề ngayĐăng nhập
PrivacyTermsCookieAdsads.txtrobotssitemap
Trang chủMôn họcPRN232 - Xây dựng ứng dụng back-end đa nền tảng với .NETĐề thi PRN232 SP26 B5FE - 49 câu có đáp án
Đề thi trắc nghiệm

Đề thi PRN232 SP26 B5FE - 49 câu có đáp án

49Câu hỏi
PRN232 - Xây dựng ứng dụng back-end đa nền tảng với .NETMôn học

01Chọn hình thức làm bài

02Số câu hỏi

03Thời gian làm bài(chỉ áp dụng cho thi thử)

04Tuỳ chọn

Trộn thứ tự câu hỏi

Xáo trộn câu để tránh học vẹt.

Trộn thứ tự đáp án

Xáo trộn vị trí A B C D ở từng câu.

Tổng quan lượt làm

Hình thức
Chế độ học
Số câu
49 câu
Thời gian
Không giới hạn
Bạn cần đăng nhập để làm bài, lưu tiến độ và tiếp tục lần học trước.

Vui lòng đăng nhập để bắt đầu làm bài.

Tổng câu hỏi

49

Thời gian làm bài

Không giới hạn

Lượt xem

0

Câu có lời giải

47

Câu có link chi tiết

49

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
ATo handle user authentication and authorization.
BTo route incoming HTTP requests to the correct controller action.
To serialize response data into a specific format (e.g., JSON, XML) and deserialize request data from a specific format.ĐÚNG
DTo log exceptions that occur during request processing.
Giải thích

Trong pipeline Web API ASP.NET Core, một trình định dạng kiểu phương tiện (media type formatter) đóng vai trò quan trọng trong việc xử lý dữ liệu. Trình định dạng kiểu phương tiện có trách nhiệm serialize dữ liệu phản hồi thành một định dạng cụ thể (ví dụ: JSON, XML) và deserialize dữ liệu yêu cầu từ một định dạng cụ thể. Điều này cho phép các ứng dụng Web API giao tiếp với các ứng dụng khách khác nhau, mỗi ứng dụng khách có thể yêu cầu dữ liệu trong một định dạng cụ thể. Ví dụ, một ứng dụng khách có thể yêu cầu dữ liệu JSON, trong khi một ứng dụng khách khác yêu cầu dữ liệu XML. Trình định dạng kiểu phương tiện sẽ đảm bảo rằng dữ liệu được chuyển đổi thành định dạng yêu cầu của ứng dụng khách.

#002
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AVirtual Machines (VMs)
DockerĐÚNG
CWebDeploy
DFTP
Giải thích

Để đóng gói một microservice ASP.NET Core thành một container cho việc triển khai, công nghệ được sử dụng phổ biến nhất là Docker. Docker cho phép tạo ra một môi trường ảo hóa (container) độc lập, giúp đảm bảo ứng dụng chạy ổn định và không bị ảnh hưởng bởi môi trường hệ thống. Mỗi container có thể chứa một ứng dụng độc lập, cùng với tất cả các phụ thuộc và cấu hình cần thiết. Điều này giúp dễ dàng triển khai và quản lý các ứng dụng microservice trên nhiều môi trường khác nhau. Ngoài ra, Docker cũng hỗ trợ các tính năng như tự động hóa xây dựng, phân phối và giám sát ứng dụng, giúp tăng hiệu suất và giảm thiểu thời gian triển khai.

#003
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AUseAuthorization()
UseAuthentication()ĐÚNG
CUseCors()
DUseStaticFiles()
Giải thích

Trong ASP.NET Core, middleware được sử dụng để xác thực và xử lý token JWT là UseAuthentication(). Middleware này cho phép bạn xác thực người dùng bằng cách kiểm tra token JWT được gửi kèm trong yêu cầu HTTP. Nếu token hợp lệ, người dùng sẽ được xác thực và có thể truy cập vào các tài nguyên được bảo vệ. UseAuthentication() cũng cho phép bạn cấu hình các tùy chọn xác thực, chẳng hạn như cách xử lý token hết hạn hoặc bị hỏng.

#004
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aelement.action()
$(selector).action()ĐÚNG
CjQuery(action).selector()
Dselect(element).do(action)
Giải thích

Để chọn một phần tử HTML và áp dụng một hành động trong jQuery, bạn cần sử dụng cú pháp cơ bản. Cú pháp này bao gồm việc sử dụng ký hiệu '$' để chỉ định jQuery, sau đó là chọn phần tử bằng cách sử dụng 'selector', và cuối cùng là áp dụng hành động bằng cách sử dụng phương thức 'action'. Ví dụ, nếu bạn muốn chọn phần tử có id là 'myId' và thêm một lớp CSS 'active', bạn sẽ sử dụng cú pháp '$('#myId').addClass('active')'. Cú pháp này cho phép bạn chọn phần tử và áp dụng hành động một cách linh hoạt và hiệu quả.

#005
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AInclude passwords in URLs
Validate inputs on the serverĐÚNG
CAllow GET to delete data
DReturn detailed stack traces to clients
Giải thích

Một số phương thức bảo mật được khuyến nghị cho RESTful APIs là gì? Để đảm bảo an toàn cho các API RESTful, chúng ta cần tuân thủ một số nguyên tắc bảo mật quan trọng. Trong số các lựa chọn trên, phương thức "Validate inputs on the server" (Xác minh đầu vào trên máy chủ) là một trong những phương thức được khuyến nghị. Điều này có nghĩa là máy chủ phải xác minh và kiểm tra các dữ liệu đầu vào từ khách hàng trước khi xử lý chúng. Điều này giúp ngăn chặn các cuộc tấn công như SQL injection và cross-site scripting (XSS). Ngoài ra, phương thức này cũng giúp bảo vệ dữ liệu nhạy cảm của khách hàng khỏi bị truy cập trái phép. Các phương thức khác như "Include passwords in URLs" (Bao gồm mật khẩu trong URL), "Allow GET to delete data" (Cho phép GET xóa dữ liệu) và "Return detailed stack traces to clients" (Trả lại các thông tin lỗi chi tiết cho khách hàng) đều không được khuyến nghị vì chúng có thể gây ra các rủi ro bảo mật nghiêm trọng.

#006
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Microsoft.AspNetCore.ODataĐÚNG
BMicrosoft.EntityFrameworkCore.SqlServer
CMicrosoft.AspNetCore.Mvc.Razor
DMicrosoft.AspNetCore.Authentication.JwtBearer
Giải thích

Để bật hỗ trợ OData trong ASP.NET Core Web API, bạn cần sử dụng gói NuGet Microsoft.AspNetCore.OData. Gói này cung cấp các tính năng cần thiết để tạo và quản lý các nguồn dữ liệu OData. OData là một tiêu chuẩn mở cho việc truy cập và quản lý dữ liệu trên web, cho phép bạn tạo các nguồn dữ liệu có thể được truy cập và sử dụng bởi các ứng dụng khác nhau. Khi sử dụng Microsoft.AspNetCore.OData, bạn có thể tạo các nguồn dữ liệu OData và sử dụng các tính năng như truy vấn dữ liệu, tạo và cập nhật dữ liệu, v.v. Ngoài ra, gói này cũng cung cấp các tính năng bảo mật và quản lý quyền truy cập dữ liệu.

#007
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Stateless communicationĐÚNG
BServer-managed conversational state
CTight coupling between client and server
DProtocol-specific operations only
Giải thích

REST (Representational State of Resource) là một kiến trúc ứng dụng dựa trên các nguyên tắc và hạn chế cụ thể để đảm bảo tính linh hoạt,scalability và dễ dàng bảo trì. Một trong những hạn chế quan trọng của REST là giao tiếp không có trạng thái (Stateless communication). Điều này có nghĩa là mỗi yêu cầu từ client đến server phải chứa tất cả thông tin cần thiết để xử lý yêu cầu đó, mà không cần dựa vào trạng thái trước đó của giao tiếp. Điều này giúp tăng tính linh hoạt và dễ dàng mở rộng hệ thống. Ví dụ, khi client gửi yêu cầu để lấy thông tin về một tài khoản, server không cần lưu trữ trạng thái của giao tiếp trước đó, mà chỉ cần xử lý yêu cầu dựa trên thông tin được gửi kèm theo. Hạn chế này giúp đảm bảo tính nhất quán và dễ dàng bảo trì hệ thống.

#008
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
It creates two entity sets, Products and Categories, and infers their properties and relationships by convention from the C# classes.ĐÚNG
BIt defines two complex types that cannot be queried directly.
CIt creates an empty model and waits for the database to provide the schema.
DIt registers two controllers named Products and Categories.
Giải thích

Mã code sử dụng ODataModelBuilder để xây dựng EDM (Entity Data Model). Nó tạo ra hai tập hợp thực thể, Products và Categories, và tự động xác định các thuộc tính và mối quan hệ của chúng dựa trên các lớp C#. Điều này có nghĩa là khi bạn tạo một lớp C# để mô hình hóa một thực thể, ODataModelBuilder sẽ tự động tạo ra các tập hợp thực thể tương ứng và xác định các thuộc tính và mối quan hệ của chúng. Điều này giúp giảm thiểu công việc thủ công khi xây dựng EDM và tạo điều kiện thuận lợi cho việc phát triển ứng dụng dựa trên dữ liệu.

#009
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A$.get()
B$.post()
C$.ajax()
All of the aboveĐÚNG
Giải thích

Trong jQuery, phương thức thường được sử dụng để gửi yêu cầu AJAX là $.get(), $.post() và $.ajax(). Phương thức $.get() được sử dụng để gửi yêu cầu GET, trong khi $.post() được sử dụng để gửi yêu cầu POST. Phương thức $.ajax() là một phương thức chung hơn, cho phép bạn gửi các loại yêu cầu khác nhau, bao gồm cả GET và POST. Vì vậy, câu trả lời đúng là tất cả các phương thức trên.

#010
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Atext/json
application/jsonĐÚNG
Cdata/json
Djson/application
Giải thích

Loại định dạng Media Type cho JSON được sử dụng rộng rãi và được khuyến nghị là 'application/json'. Loại này được sử dụng để xác định rằng dữ liệu được gửi hoặc nhận là trong định dạng JSON. Ví dụ, khi gửi yêu cầu HTTP, bạn có thể sử dụng 'Content-Type: application/json' để chỉ định rằng dữ liệu được gửi là trong định dạng JSON. Ngoài ra, khi nhận dữ liệu, bạn có thể sử dụng 'Accept: application/json' để chỉ định rằng bạn muốn nhận dữ liệu trong định dạng JSON. Loại định dạng này được hỗ trợ bởi hầu hết các trình duyệt và ứng dụng web, vì vậy nó là lựa chọn tốt nhất cho việc gửi và nhận dữ liệu JSON.

#011
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATightly coupled modules
Independent deployment and scalabilityĐÚNG
CSingle technology stack only
DReduced system complexity
Giải thích

Microservices cung cấp nhiều lợi ích quan trọng, nhưng một trong những lợi ích chính là tính độc lập trong việc triển khai và mở rộng. Với kiến trúc Microservices, mỗi module được thiết kế và triển khai độc lập, cho phép mỗi module được mở rộng và sửa chữa mà không ảnh hưởng đến các module khác. Điều này giúp tăng cường độ linh hoạt và khả năng thích nghi của hệ thống, cũng như giảm thiểu rủi ro khi triển khai các thay đổi. Ngoài ra, tính độc lập trong triển khai và mở rộng cũng giúp giảm thiểu thời gian và chi phí cần thiết để triển khai các thay đổi, vì mỗi module có thể được triển khai và mở rộng độc lập.

#012
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A[Expose]
B[WebMethod]
[OperationContract]ĐÚNG
D[ServiceMethod]
#013
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Endpoints defined by ABCĐÚNG
BDirect database connections
COnly files
DShared memory
Giải thích

Trong WCF, các dịch vụ và khách hàng giao tiếp thông qua các điểm kết thúc được định nghĩa bởi ABC. Các điểm kết thúc được định nghĩa bởi ABC là các điểm kết thúc được sử dụng để giao tiếp giữa các dịch vụ và khách hàng. Các điểm kết thúc này có thể được định nghĩa bằng cách sử dụng các thuộc tính của dịch vụ, chẳng hạn như phương thức giao tiếp, giao thức và địa chỉ. Các điểm kết thúc được định nghĩa bởi ABC cho phép các dịch vụ và khách hàng giao tiếp với nhau một cách an toàn và đáng tin cậy. Ngoài ra, các điểm kết thúc được định nghĩa bởi ABC cũng cho phép các dịch vụ và khách hàng giao tiếp với nhau qua mạng, cho phép các ứng dụng phân tán được xây dựng.

#014
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Apublic override Task<HelloReply> SayHello(HelloRequest request)
Bpublic virtual HelloReply SayHello(HelloRequest request, ServerCallContext context)
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)ĐÚNG
Dpublic Task SayHello(HelloRequest request, HelloReply reply)
Giải thích

Để thực hiện SayHello RPC, bạn phải ghi đè phương thức nào trong lớp dịch vụ C# của mình? Trong khi xây dựng một dịch vụ RPC, bạn cần phải ghi đè phương thức SayHello để thực hiện chức năng này. Phương thức SayHello phải được ghi đè với các thuộc tính sau: - Nó phải là phương thức override (ghi đè) để đảm bảo rằng nó được gọi khi có yêu cầu RPC. - Nó phải có kiểu trả về là Task<HelloReply> để đảm bảo rằng phương thức này trả về một kết quả. - Nó phải có tham số đầu vào là HelloRequest request để nhận yêu cầu từ client. - Nó phải có tham số thứ hai là ServerCallContext context để có thể truy cập vào thông tin về cuộc gọi RPC. Vì vậy, phương thức SayHello phải được ghi đè như sau: public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)

#015
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
[FromHeader]ĐÚNG
B[FromHead]
C[BindHeader]
D[InHeader]
Giải thích

Để gắn một tham số vào một yêu cầu tiêu đề, bạn cần sử dụng thuộc tính nào?

#016
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIIS Express
OcelotĐÚNG
CKestrel
DEntity Framework
Giải thích

Trong kiến trúc Microservices, API Gateway đóng vai trò là điểm truy cập chính để giao tiếp với các dịch vụ micro. Ocelot là một trong những lựa chọn phổ biến để sử dụng làm API Gateway. Nó cung cấp các tính năng như cân bằng tải, bảo mật, và phân phối yêu cầu đến các dịch vụ micro khác nhau. Ocelot cũng cho phép cấu hình linh hoạt và dễ dàng tích hợp với các dịch vụ khác nhau. Ngoài ra, Ocelot cũng hỗ trợ các giao thức như HTTP/1.1, WebSockets và gRPC. Vì vậy, Ocelot là một lựa chọn tốt để sử dụng làm API Gateway trong kiến trúc Microservices.

#017
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA policy that states all variables in a script must be of the same type.
A security measure that prevents a web page from making AJAX requests to a different domain than the one it originated from.ĐÚNG
CA rule that requires all AJAX requests to return JSON.
DA policy that ensures all developers on a team use the same coding style.
Giải thích

Chính sách Same-Origin Policy là một biện pháp bảo mật được áp dụng trong ngữ cảnh AJAX. Nó ngăn chặn trang web từ thực hiện yêu cầu AJAX đến một miền khác với miền mà trang web được tạo ra. Điều này giúp ngăn chặn các cuộc tấn công độc hại như tấn công XSS (Cross-Site Scripting) và tấn công CSRF (Cross-Site Request Forgery). Khi một trang web thực hiện yêu cầu AJAX đến một miền khác, trình duyệt sẽ tự động chặn yêu cầu này để bảo vệ người dùng khỏi các cuộc tấn công độc hại. Chính sách này giúp đảm bảo an toàn cho người dùng và ngăn chặn các cuộc tấn công độc hại.

#018
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A{ 'name': 'John Doe', "age": 30 }
B{ name: "John Doe", age: 30 }
C{ "name": "John Doe", "age": 30, }
{ "name": "John Doe", "age": 30 }ĐÚNG
Giải thích

Một đối tượng JSON hợp lệ phải tuân thủ các quy tắc sau: - Các khóa phải được bao quanh bởi dấu ngoặc kép (" "). - Các giá trị phải được bao quanh bởi dấu ngoặc kép (" ") nếu là chuỗi, hoặc không cần dấu ngoặc kép nếu là số hoặc giá trị boolean. - Không được bỏ dấu phẩy sau mỗi cặp khóa-giá trị. - Không được bỏ dấu ngoặc kép ở cuối đối tượng. Vì vậy, trong bốn lựa chọn trên, chỉ có "{ "name": "John Doe", "age": 30 }" đáp ứng được các quy tắc này.

#019
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AStatus line
Request lineĐÚNG
CStart-of-response line
DEntity line
Giải thích

Trong yêu cầu 'GET /images/logo.gif HTTP/1.1', dòng này được gọi là dòng yêu cầu (Request line). Dòng yêu cầu là một phần quan trọng của giao thức HTTP, nó chứa thông tin về phương thức yêu cầu (GET, POST, PUT, DELETE, ...), đường dẫn URL, và phiên bản HTTP được sử dụng. Trong ví dụ này, dòng yêu cầu là 'GET /images/logo.gif HTTP/1.1', cho biết phương thức yêu cầu là GET, đường dẫn URL là /images/logo.gif, và phiên bản HTTP được sử dụng là 1.1. Dòng yêu cầu được gửi từ client (người dùng) đến server (máy chủ) để yêu cầu thực hiện một hành động cụ thể.

#020
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIt scans the entire assembly for public classes.
Through the DbSet<T> properties defined in the DbContext.ĐÚNG
CIt relies on XML configuration files.
DYou must manually register each class using builder.Services.AddTransient<Product>().
Giải thích

EF Core biết được các lớp nào cần bao gồm trong mô hình cơ sở dữ liệu dựa trên các thuộc tính DbSet<T> được định nghĩa trong lớp DbContext. Khi bạn tạo một thuộc tính DbSet<T>, EF Core sẽ tự động phát hiện lớp tương ứng và bao gồm nó trong mô hình cơ sở dữ liệu. Điều này giúp bạn dễ dàng quản lý các lớp và mối quan hệ giữa chúng trong ứng dụng .NET 9 sử dụng EF Core.

#021
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AJSON has a richer set of built-in data types, including Date and Guid.
Protobuf has a well-defined, language-agnostic set of scalar types, and data is validated against this schema during serialization.ĐÚNG
CJSON does not distinguish between integers and floating-point numbers.
DProtobuf uses strings for all data types.
Giải thích

Protobuf và JSON là hai định dạng dữ liệu khác nhau trong việc xử lý kiểu dữ liệu. Protobuf có một bộ sưu tập kiểu dữ liệu scalar được định nghĩa rõ ràng và không phụ thuộc vào ngôn ngữ lập trình, và dữ liệu được xác thực dựa trên lược đồ này khi thực hiện quá trình serialize. Đ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 quá trình truyền tải. Ngược lại, JSON không có bộ sưu tập kiểu dữ liệu được định nghĩa rõ ràng như Protobuf, và dữ liệu được xác thực dựa trên cấu trúc dữ liệu được định nghĩa trong mã nguồn.

#022
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIt automatically creates database tables from DTOs.
BIt replaces the need for Dependency Injection.
It automates the process of converting one object type to another (e.g., an Entity to a DTO), reducing boilerplate code.ĐÚNG
DIt provides an alternative to JSON for data serialization.
Giải thích

AutoMapper là một thư viện giúp tự động hóa quá trình chuyển đổi giữa các loại đối tượng khác nhau. Ví dụ, khi bạn cần chuyển đổi một đối tượng Entity sang một đối tượng DTO (Data Transfer Object), AutoMapper sẽ giúp bạn thực hiện điều này một cách dễ dàng và giảm thiểu mã code lặp lại. Điều này giúp bạn tiết kiệm thời gian và công sức khi phát triển ứng dụng. Ngoài ra, AutoMapper cũng giúp bạn dễ dàng quản lý và cập nhật các mối quan hệ giữa các đối tượng, từ đó giúp bạn xây dựng các ứng dụng phức tạp và linh hoạt hơn.

#023
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
DatabaseĐÚNG
BShared configuration file
CMonolithic deployment
DUI layer
Giải thích

Trong mô hình Microservices, mỗi dịch vụ thường có cơ sở dữ liệu riêng. Điều này cho phép mỗi dịch vụ có thể được thiết kế và triển khai độc lập, mà không cần phải phụ thuộc vào các dịch vụ khác. Mỗi dịch vụ có thể sử dụng cơ sở dữ liệu phù hợp với nhu cầu của nó, giúp tăng cường khả năng mở rộng và độ tin cậy của hệ thống. Ngoài ra, việc sử dụng cơ sở dữ liệu riêng cho mỗi dịch vụ cũng giúp giảm thiểu tác động của lỗi hoặc sự cố đối với các dịch vụ khác.

#024
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AKeep business logic inside AutoMapper profiles.
Return DTOs from controllers instead of EF entities.ĐÚNG
CLet AutoMapper save changes to the database automatically.
DBind request bodies directly to domain entities.
Giải thích

Khi sử dụng DTOs và AutoMapper trong ASP.NET Core, một thực hành được khuyến nghị là trả về DTOs từ các controller thay vì các thực thể EF. Điều này giúp phân tách logic kinh doanh khỏi logic của ứng dụng và cải thiện bảo mật. Việc trả về DTOs cũng giúp giảm thiểu rủi ro bị tấn công bằng cách inject các thực thể EF vào các controller. Ngoài ra, việc sử dụng DTOs giúp dễ dàng thay đổi cấu trúc dữ liệu mà không ảnh hưởng đến các controller. Điều này giúp tăng cường khả năng mở rộng và bảo trì của ứng dụng.

#025
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AOk()
NotFound()ĐÚNG
CBadRequest()
DNoContent()
#026
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAccept
AuthorizationĐÚNG
CContent-Type
DCache-Control
Giải thích

Để gửi một token JWT đến một Web API, bạn cần sử dụng HTTP header phù hợp. Trong các lựa chọn đã cho, 'Authorization' là lựa chọn đúng. 'Authorization' là HTTP header được sử dụng để xác thực và cấp quyền truy cập vào các nguồn tài nguyên trên Internet. Khi bạn gửi một yêu cầu đến một Web API, bạn có thể thêm 'Authorization' vào HTTP header của yêu cầu và cung cấp token JWT của mình. Điều này cho phép Web API xác thực và xác minh tính hợp lệ của token JWT và cấp quyền truy cập vào các nguồn tài nguyên cần thiết.

#027
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A[ServiceContract]
Bpublic interface IGreeterService
C[OperationContract]
string Greet(string name);ĐÚNG
Giải thích

Phần định nghĩa chức năng của dịch vụ là phương thức Greet trong interface IGreeterService. Phương thức này có nhiệm vụ nhận vào một tham số tên và trả về một chuỗi thông điệp chào đón. Điều này được thể hiện rõ ràng qua cách sử dụng từ khóa 'string' để định nghĩa kiểu dữ liệu trả về và tham số 'name' để nhận vào thông tin tên của người dùng. Phương thức này được sử dụng trong giao tiếp giữa client và server để thực hiện chức năng chào đón.

#028
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AXML
BJSON
Protocol BuffersĐÚNG
DYAML
Giải thích

gRPC thường sử dụng định dạng serialize nào mặc định? gRPC là một framework giao tiếp mạng được thiết kế để xây dựng các ứng dụng phân tán. Nó thường sử dụng định dạng serialize Protocol Buffers mặc định. Protocol Buffers là một định dạng serialize được thiết kế bởi Google, nó cho phép định nghĩa các cấu trúc dữ liệu và serialize chúng thành các byte array. Điều này giúp giảm thiểu kích thước dữ liệu và tăng tốc độ truyền dữ liệu. Ngoài ra, Protocol Buffers cũng hỗ trợ các tính năng như tính nhất quán và khả năng mở rộng, giúp dễ dàng triển khai và bảo trì các ứng dụng gRPC.

#029
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A$("div > p")
$("div p")ĐÚNG
C$("div + p")
D$("div ~ p")
Giải thích

Để chọn tất cả các phần tử <p> là con của một phần tử <div>, chúng ta sử dụng biểu thức chọn CSS. Biểu thức chọn CSS là một chuỗi ký tự được sử dụng để chọn các phần tử HTML dựa trên các thuộc tính và vị trí của chúng trong trang web. Trong trường hợp này, chúng ta muốn chọn tất cả các phần tử <p> nằm trong phần tử <div>, không quan tâm đến độ sâu của phần tử <p> so với phần tử <div>. Biểu thức chọn CSS phù hợp cho trường hợp này là "div p", vì nó chọn tất cả các phần tử <p> nằm trong phần tử <div> hoặc là con của phần tử <div>.

#030
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AOne service publishes an event to a message queue, and another service subscribes to it.
Service A makes a direct HTTP (e.g., REST or gRPC) call to Service B and waits for an immediate response.ĐÚNG
CService A sends an email notification.
DService B processes a batch job overnight based on data from Service A.
Giải thích

Sự giao tiếp đồng bộ giữa các microservice là một quá trình trao đổi thông tin giữa các dịch vụ trong thời gian thực. Ví dụ về giao tiếp đồng bộ giữa các microservice là khi Service A thực hiện một yêu cầu HTTP trực tiếp đến Service B và chờ đợi phản hồi ngay lập tức. Điều này cho phép Service A và Service B trao đổi thông tin và thực hiện các hành động dựa trên thông tin đó trong thời gian thực. Điều này khác với giao tiếp bất đồng bộ, nơi các dịch vụ trao đổi thông tin nhưng không chờ đợi phản hồi ngay lập tức. Giao tiếp đồng bộ thường được sử dụng trong các ứng dụng cần phản hồi nhanh chóng và chính xác, chẳng hạn như các ứng dụng thương mại điện tử hoặc các ứng dụng tài chính.

#031
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATCP
HTTPĐÚNG
CNamed Pipes
DMSMQ
Giải thích

WCF có thể sử dụng các giao thức khác nhau để lộ các dịch vụ RESTful. Trong số các lựa chọn trên, giao thức HTTP là một trong những giao thức phổ biến nhất được sử dụng để lộ các dịch vụ RESTful. Giao thức HTTP cung cấp các phương thức như GET, POST, PUT và DELETE để tương tác với các dịch vụ RESTful. Ngoài ra, giao thức HTTP cũng hỗ trợ các tiêu chuẩn như HTTP/1.1 và HTTP/2 để tăng hiệu suất và khả năng mở rộng. Các giao thức khác như TCP, Named Pipes và MSMQ cũng có thể được sử dụng để lộ các dịch vụ WCF, nhưng chúng không phải là lựa chọn phổ biến nhất cho các dịch vụ RESTful.

#032
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATCP/IP directly
BHTTP/1.1
CUDP
HTTP/2ĐÚNG
Giải thích

gRPC được xây dựng trên nền tảng của giao thức truyền tải nào? gRPC sử dụng giao thức HTTP/2 làm giao thức truyền tải cơ bản. Điều này cho phép gRPC tận dụng các tính năng của HTTP/2 như hỗ trợ nhiều luồng truyền tải, hỗ trợ các tính năng như server push, và hỗ trợ các tính năng khác. gRPC cũng có thể hoạt động trên các giao thức khác như TCP/IP trực tiếp, HTTP/1.1, UDP, nhưng giao thức HTTP/2 là giao thức được khuyến nghị và được sử dụng rộng rãi nhất.

#033
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AOnly in the request body.
In the route data, then the query string, then form data.ĐÚNG
COnly in the request headers.
DIt will not look anywhere and will throw an exception.
Giải thích

Khi thực hiện hành động Get với phương thức public IActionResult Get(int id), và không có bất kỳ thuộc tính nào khác, thì bộ gắn model sẽ tìm kiếm giá trị của id theo mặc định ở đâu? Bộ gắn model sẽ tìm kiếm giá trị của id ở dữ liệu route (dữ liệu đường dẫn), sau đó là query string (dữ liệu tham số trong URL), và cuối cùng là dữ liệu form (dữ liệu được gửi qua form). Điều này là do ASP.NET Core sử dụng một bộ gắn model mặc định để gắn giá trị vào các thuộc tính của controller. Bộ gắn model này sẽ ưu tiên tìm kiếm giá trị trong dữ liệu route, sau đó là query string, và cuối cùng là dữ liệu form. Điều này giúp cho việc gắn model trở nên dễ dàng và linh hoạt hơn.

#034
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAuthorization
AcceptĐÚNG
CContent-Type
DUser-Agent
Giải thích

Trong kỹ thuật Web API, việc đàm phán nội dung (content negotiation) chủ yếu dựa trên tiêu đề HTTP nào? Câu trả lời đúng là tiêu đề "Accept". Tiêu đề "Accept" được sử dụng để chỉ định loại nội dung mà client mong muốn nhận từ server. Ví dụ, nếu client muốn nhận dữ liệu JSON, thì sẽ gửi tiêu đề "Accept: application/json". Server sẽ dựa vào tiêu đề này để quyết định loại nội dung nào sẽ được gửi lại cho client. Ngoài ra, tiêu đề "Accept" còn có thể được sử dụng để chỉ định ngôn ngữ, mã hóa, v.v. của dữ liệu.

#035
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
$selectĐÚNG
B$orderby
C$expand
D$skip
Giải thích

Để chọn chỉ những thuộc tính cụ thể của một tài nguyên trong OData, bạn cần sử dụng tùy chọn '$select'. Tùy chọn này cho phép bạn chọn những thuộc tính mà bạn muốn lấy từ một tài nguyên, giúp giảm thiểu số lượng dữ liệu được truyền tải và cải thiện hiệu suất. Ví dụ, nếu bạn muốn lấy chỉ tên và địa chỉ của một khách hàng, bạn có thể sử dụng tùy chọn '$select' như sau: GET /Customers?$select=Name,Address Tùy chọn '$select' rất hữu ích khi bạn cần lấy một số thuộc tính cụ thể của một tài nguyên, giúp bạn có thể tập trung vào những thông tin quan trọng và giảm thiểu thời gian tải dữ liệu.

#036
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
To convert data between different media types like JSON and XMLĐÚNG
BTo manage routing rules for controllers
CTo handle authentication and authorization
DTo log requests and responses
Giải thích

Trong ASP.NET Core Web API, mục đích của các trình định dạng phương tiện (media formatters) là chuyển đổi dữ liệu giữa các loại phương tiện khác nhau như JSON và XML. Các trình định dạng phương tiện này giúp cho các ứng dụng web API có thể trả về dữ liệu dưới dạng phù hợp với yêu cầu của khách hàng. Ví dụ, nếu khách hàng yêu cầu dữ liệu dưới dạng JSON, trình định dạng phương tiện sẽ chuyển đổi dữ liệu từ dạng XML sang JSON. Điều này giúp cho ứng dụng web API có thể tương tác với các ứng dụng khác nhau mà không cần phải thay đổi mã nguồn. Các trình định dạng phương tiện cũng có thể được sử dụng để chuyển đổi dữ liệu giữa các định dạng khác nhau như XML, JSON, CSV, v.v.

#037
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AThe action method still executes as normal.
BAn HTTP 500 Internal Server Error is returned.
The request is automatically rejected with an HTTP 400 Bad Request response containing details of the validation errors.ĐÚNG
DThe application logs the error and returns an HTTP 200 OK.
Giải thích

Khi một controller được trang bị [ApiController], nếu ModelState.IsValid là false, điều gì sẽ xảy ra tự động? Điều này có nghĩa là khi bạn gửi một yêu cầu đến controller và dữ liệu yêu cầu không hợp lệ, hệ thống sẽ tự động trả về một phản hồi HTTP 400 Bad Request. Phản hồi này sẽ chứa chi tiết về các lỗi xác thực. Điều này giúp người dùng biết rõ về các lỗi mà họ đã mắc phải và có thể sửa đổi dữ liệu yêu cầu một cách chính xác. Ngoài ra, hệ thống cũng sẽ không thực hiện hành động nào khác, vì ModelState.IsValid là điều kiện tiên quyết để thực hiện hành động. Vì vậy, nếu ModelState.IsValid là false, hệ thống sẽ tự động trả về phản hồi HTTP 400 Bad Request và dừng lại.

#038
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aapp.UseExceptionHandler("/error"); app.UseHsts();
app.UseSwagger(); app.UseSwaggerUI();ĐÚNG
Capp.UseAuthentication(); app.UseAuthorization();
Dapp.UseRouting(); app.UseEndpoints(...);
Giải thích

Để thêm tính năng tạo và hiển thị Swagger vào ứng dụng ASP.NET Core 8 của bạn, bạn cần thực hiện các bước sau. Đầu tiên, bạn cần thêm các dịch vụ cần thiết vào trong chương trình của mình. Điều này bao gồm việc thêm dịch vụ tạo và hiển thị Swagger. Sau đó, bạn cần xây dựng ứng dụng của mình và kiểm tra xem ứng dụng đang ở môi trường phát triển hay không. Nếu ứng dụng đang ở môi trường phát triển, bạn cần thêm hai dòng mã đặc biệt để kích hoạt tính năng tạo và hiển thị Swagger. Cụ thể, bạn cần thêm lệnh app.UseSwagger(); và app.UseSwaggerUI(); vào trong chương trình của mình.

#039
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A[Email]
B[IsEmail]
[EmailAddress]ĐÚNG
D[RegularExpression(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$")]
Giải thích

Để xác định một thuộc tính là một địa chỉ email hợp lệ, bạn cần sử dụng thuộc tính [EmailAddress]. Đây là thuộc tính được sử dụng để xác minh rằng giá trị nhập vào có đúng định dạng email. Ví dụ, khi bạn nhập vào địa chỉ email như '[email protected]', thuộc tính [EmailAddress] sẽ xác nhận rằng nó có đúng định dạng và không có lỗi. Ngoài ra, bạn cũng có thể sử dụng thuộc tính [IsEmail] để thực hiện chức năng tương tự, nhưng [EmailAddress] là lựa chọn phổ biến hơn và được sử dụng rộng rãi trong các ứng dụng.

#040
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AThe set of properties that make up an entity's key.
A named collection of entities of a specific Entity Type, like Products being a collection of Product entities.ĐÚNG
CThe schema version of the data model.
DA set of validation rules for an entity.
Giải thích

Một tập hợp các thực thể của một loại thực thể cụ thể, chẳng hạn như Products là một tập hợp các thực thể Product. Tập hợp thực thể này được xác định bởi tên và chứa các thực thể có thuộc tính tương tự. Ví dụ, nếu bạn có một tập hợp thực thể Product, thì mỗi thực thể trong tập hợp này đều có thuộc tính như tên sản phẩm, giá cả, mô tả, v.v. Tập hợp thực thể này giúp bạn quản lý và truy cập các thực thể một cách hiệu quả. Nó cũng giúp bạn thực hiện các hoạt động như thêm, sửa, xóa thực thể một cách dễ dàng và thống nhất.

#041
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA complete rewrite of WCF with a different architecture and programming model.
A port of WCF to .NET (Core) and .NET 5+ that allows existing WCF services to be migrated to modern, cross-platform environments.ĐÚNG
CA client-only library for consuming legacy WCF services.
DA graphical tool for managing WCF services.
Giải thích

CoreWCF là một công nghệ cho phép di chuyển các dịch vụ WCF hiện có sang môi trường hiện đại, đa nền tảng. Nó là một phiên bản được tối ưu hóa cho .NET Core và .NET 5+, cho phép các nhà phát triển dễ dàng chuyển đổi và sử dụng các dịch vụ WCF cũ trong các ứng dụng mới. CoreWCF cung cấp một kiến trúc và mô hình lập trình mới, giúp giảm thiểu các vấn đề liên quan đến bảo trì và mở rộng. Điều này giúp các nhà phát triển có thể tập trung vào việc phát triển các ứng dụng mới, thay vì phải lo lắng về việc duy trì các dịch vụ cũ. CoreWCF cũng hỗ trợ các tính năng mới như khả năng tương tác với các nền tảng khác nhau và khả năng mở rộng dễ dàng.

#042
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Model BindingĐÚNG
BData Seeding
CDependency Injection
DMiddleware Mapping
Giải thích

Trong khi xây dựng ứng dụng Web API, việc liên kết dữ liệu JSON đến mô hình dữ liệu là một bước quan trọng. Có nhiều phương pháp có thể được sử dụng để thực hiện việc này, nhưng phương pháp phổ biến nhất là Model Binding. Model Binding cho phép tự động liên kết dữ liệu JSON đến các thuộc tính của mô hình dữ liệu dựa trên tên và loại dữ liệu. Điều này giúp giảm thiểu mã nguồn và tăng cường hiệu suất của ứng dụng. Ngoài ra, Model Binding cũng hỗ trợ các tính năng như kiểm tra dữ liệu và xử lý lỗi, giúp đảm bảo rằng dữ liệu được liên kết chính xác và an toàn.

#043
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA simple interface for generating unique IDs.
A membership system that provides services for user authentication and authorization, including user management, password hashing, and role management.ĐÚNG
CA client-side library for managing user profiles.
DThe default authentication scheme for Windows Authentication.
Giải thích

ASP.NET Core Identity là một hệ thống quản lý thành viên cung cấp các dịch vụ cho việc xác thực và ủy quyền người dùng, bao gồm quản lý người dùng, mã hóa mật khẩu và quản lý vai trò. Nó cho phép bạn tạo và quản lý người dùng, xác thực người dùng và phân quyền truy cập vào các tài nguyên. ASP.NET Core Identity cũng cung cấp các tính năng như mã hóa mật khẩu, xác thực hai yếu tố và quản lý vai trò.

#044
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA string representing the name of the event ("click").
BThe HTML element that was clicked.
An object containing information about the event, such as the mouse position and the target element.ĐÚNG
DA boolean value indicating if the click was successful.
Giải thích

Khi chúng ta sử dụng hàm on() để thêm một sự kiện vào một phần tử HTML, chúng ta có thể nhận được một đối tượng chứa thông tin về sự kiện đó. Đối tượng này bao gồm nhiều thuộc tính như vị trí của chuột, phần tử mục tiêu, thời điểm xảy ra sự kiện, v.v. Trong ví dụ trên, đối tượng event sẽ chứa thông tin về sự kiện click, bao gồm vị trí của chuột, phần tử mục tiêu, thời điểm xảy ra sự kiện, v.v. Do đó, đối tượng event không phải là một chuỗi biểu diễn tên sự kiện, cũng không phải là phần tử HTML được click, cũng không phải là một giá trị boolean chỉ ra sự thành công của sự kiện.

#045
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAlways.
Never; the client and server can read and write in any order, their streams operate independently.ĐÚNG
COnly if the client explicitly signals it has finished writing.
DThis is configured by the wait_for_client option in the .proto file.
Giải thích

Trong cuộc gọi streaming hai chiều, khi nào thì máy chủ chờ đợi khách hàng gửi tất cả các tin nhắn trước khi gửi tin nhắn của nó? Câu trả lời đúng là "Không bao giờ; khách hàng và máy chủ có thể đọc và viết theo bất kỳ thứ tự nào, các luồng của họ hoạt động độc lập". Điều này có nghĩa là trong một cuộc gọi streaming hai chiều, khách hàng và máy chủ có thể đọc và viết các luồng dữ liệu của họ mà không cần chờ đợi nhau. Điều này cho phép khách hàng và máy chủ tương tác với nhau một cách linh hoạt và hiệu quả hơn. Tuy nhiên, điều này cũng có thể dẫn đến tình huống phức tạp khi khách hàng và máy chủ cần đồng bộ hóa các luồng dữ liệu của họ.

#046
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AFrom the query string.
From the request body.ĐÚNG
CFrom the route data.
DFrom the request headers.
Giải thích

Khi sử dụng [ApiController] trong ASP.NET Core, model binder sẽ cố gắng lấy dữ liệu cho tham số kiểu phức tạp (như một lớp hoặc bản ghi) từ đâu? Theo mặc định, model binder sẽ lấy dữ liệu từ cơ thể yêu cầu (request body). Điều này có nghĩa là dữ liệu sẽ được gửi qua trong nội dung của yêu cầu HTTP, thường là dưới dạng JSON hoặc XML. Điều này giúp cho việc truyền dữ liệu phức tạp trở nên dễ dàng hơn và giúp cho việc xử lý dữ liệu trở nên linh hoạt hơn. Tuy nhiên, người dùng cũng có thể sử dụng các thuộc tính khác nhau để chỉ định nguồn dữ liệu cho model binder, chẳng hạn như [FromBody], [FromQuery] hoặc [FromRoute].

#047
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AGET
BPUT
POSTĐÚNG
DMERGE
Giải thích

Để tạo một thực thể mới trong một dịch vụ OData, bạn cần sử dụng phương thức HTTP nào?

#048
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
public class UserDto { public int Id { get; set; } public string Username { get; set; } }ĐÚNG
Bpublic class UserDto { public string HashedPassword { get; set; } }
CThe User entity itself should always be returned directly.
Dpublic class UserDto { public int Id { get; set; } public string Username { get; set; } public string HashedPassword { get; set; } public bool IsAdmin { get; set; } }
Giải thích

Khi xây dựng một ứng dụng web, việc bảo vệ thông tin người dùng là rất quan trọng. Trong trường hợp này, chúng ta có một thực thể User trong EF Core với các thuộc tính Id, Username, HashedPassword và IsAdmin. Nếu một client yêu cầu thông tin chi tiết về một người dùng, chúng ta cần quyết định thông tin nào nên được trả về.

#049
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ACross-platform support
BOpen-source framework
Tight integration with IIS onlyĐÚNG
DBuilt-in dependency injection
Giải thích

ASP.NET Core là một framework web phát triển bởi Microsoft. Nó cung cấp nhiều tính năng quan trọng như hỗ trợ đa nền tảng, mã nguồn mở và tích hợp chặt chẽ với IIS. Tuy nhiên, một trong những tính năng không phải là đặc điểm chính của ASP.NET Core là tích hợp chặt chẽ với IIS chỉ. Điều này có nghĩa là ASP.NET Core không chỉ được tích hợp với IIS mà còn có thể chạy độc lập trên các nền tảng khác như Linux và macOS. Ngoài ra, ASP.NET Core cũng cung cấp tính năng dependency injection được tích hợp sẵn, giúp dễ dàng quản lý các phụ thuộc trong ứng dụng. Vì vậy, trong các lựa chọn trên, 'Tight integration with IIS only' là không phải là một đặc điểm chính của ASP.NET Core.