PRN232Chưa đoKỳ 8Chuyên ngành Cập nhật 28/07/2026
PRN232 - Xây dựng ứng dụng back-end đa nền tảng với .NET
115Câu hỏi
3Bộ đề
10Chủ đề
5,01 đánh giá
Câu hỏi của môn
64/115 câuCòn 51
ATo define the database connection string.
BTo enforce validation rules for the model's data.
CTo specify the controller that uses the model.
DTo add comments to the code for documentation.
Lời giải
Mở trang câu hỏi này →Trong ASP.NET Core, các chú thích dữ liệu (Data Annotations) như [Required] và [StringLength] được sử dụng để định nghĩa các quy tắc xác thực cho dữ liệu của mô hình. Những chú thích này cho phép bạn xác định các yêu cầu bắt buộc và giới hạn độ dài cho các thuộc tính của mô hình. Ví dụ, bạn có thể sử dụng [Required] để yêu cầu một thuộc tính không được để trống, hoặc [StringLength] để giới hạn độ dài của một chuỗi. Những quy tắc này sẽ được áp dụng khi bạn tạo hoặc cập nhật dữ liệu cho mô hình, giúp đảm bảo rằng dữ liệu luôn được hợp lệ và chính xác. Ngoài ra, những chú thích này cũng giúp bạn dễ dàng xác định và sửa lỗi các vấn đề liên quan đến dữ liệu không hợp lệ.
46When a user provides invalid data in a request body, which HTTP status code is most appropriate to return?4 lựa chọn
A500 Internal Server Error
B404 Not Found
C400 Bad Request
D200 OK
Lời giải
Mở trang câu hỏi này →Khi người dùng cung cấp dữ liệu không hợp lệ trong cơ thể yêu cầu, trạng thái HTTP phù hợp nhất để trả về là trạng thái lỗi yêu cầu không hợp lệ. Điều này xảy ra khi máy chủ nhận được yêu cầu nhưng không thể xử lý do dữ liệu không hợp lệ. Trạng thái lỗi này cho biết yêu cầu không hợp lệ và yêu cầu người dùng cung cấp dữ liệu hợp lệ. Ví dụ, khi người dùng nhập sai địa chỉ email hoặc mật khẩu, trạng thái lỗi này sẽ được trả về.
47Which attribute would you use to validate that a property is a valid email address format?4 lựa chọnTrung bình67% trả lời đúng
A[Email]
B[IsEmail]
C[EmailAddress]
D[RegularExpression(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$")]
Lời giải
Mở trang câu hỏi này →Để 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ư 'example@gmail.com', 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.
AModel Binding
BData Seeding
CDependency Injection
DMiddleware Mapping
Lời giải
Mở trang câu hỏi này →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.
49In OData, to retrieve a single Category entity and all of its related Product entities in one request, which query would you use?4 lựa chọnDễ100% trả lời đúng
AGET /Categories(1)?$select=Products
BGET /Categories(1)?$expand=Products
CGET /Categories(1),/Products
DGET /Categories(1)/Products?$fetch=all
Lời giải
Mở trang câu hỏi này →Để lấy một đối tượng Category và tất cả các đối tượng Product liên quan trong một yêu cầu, bạn cần sử dụng truy vấn OData phù hợp. Trong trường hợp này, bạn có thể sử dụng truy vấn GET /Categories(1)?$expand=Products. Điều này cho phép bạn lấy một đối tượng Category với ID là 1 và tất cả các đối tượng Product liên quan. Cụ thể, $expand là một tham số trong OData cho phép bạn lấy các đối tượng liên quan trong một yêu cầu. Ví dụ, GET /Categories(1)?$expand=Products sẽ trả về một đối tượng Category với ID là 1 và tất cả các đối tượng Product liên quan.
50The $count system query option is used to:4 lựa chọn
ACount the number of properties on an entity.
BRetrieve the total number of items in a collection, often alongside the data itself.
CLimit the number of results returned.
DCount the number of related entities.
Lời giải
Mở trang câu hỏi này →Tùy chọn truy vấn $count được sử dụng để lấy tổng số lượng mục trong một tập hợp, thường đi kèm với dữ liệu chính.
var builder = new ODataConventionModelBuilder();
builder.EntitySet<Product>("Products");
builder.EntitySet<Category>("Categories");
return builder.GetEdmModel();AIt creates two entity sets, Products and Categories, and infers their properties and relationships by convention from the C# classes.
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.
Lời giải
Mở trang câu hỏi này →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.
52The metadata of an OData service, which describes its data model, is typically exposed via which endpoint?4 lựa chọn
A/$metadata
B/$help
C/$schema
D/$info
Lời giải
Mở trang câu hỏi này →Endpoints của một dịch vụ OData thường được sử dụng để truy cập dữ liệu. Để biết thông tin chi tiết về cấu trúc dữ liệu của dịch vụ, chúng ta cần truy cập vào endpoint nào? Dưới đây là một số lựa chọn.
AGET
BPUT
CPOST
DMERGE
Lời giải
Mở trang câu hỏi này →Để 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?
54To delete a product with an ID of 123, which OData request is correct?4 lựa chọnTrung bình67% trả lời đúng
APOST /Products?$filter=Id eq 123
BDELETE /Products(123)
CGET /Products(123)?action=delete
DREMOVE /Products/123
Lời giải
Mở trang câu hỏi này →Để xóa một sản phẩm có ID là 123, chúng ta cần sử dụng phương thức HTTP phù hợp. Trong OData, phương thức HTTP để xóa một tài nguyên là DELETE. Khi sử dụng DELETE, chúng ta cần cung cấp đường dẫn đến tài nguyên cần xóa. Trong trường hợp này, đường dẫn đến sản phẩm có ID là 123 là /Products(123). Vì vậy, câu trả lời đúng là DELETE /Products(123).
55What is an "Entity Set"?4 lựa chọnDễ100% trả lời đúng
AThe set of properties that make up an entity's key.
BA named collection of entities of a specific Entity Type, like Products being a collection of Product entities.
CThe schema version of the data model.
DA set of validation rules for an entity.
Lời giải
Mở trang câu hỏi này →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.
ATo define the visual layout of web pages.
BTo provide a standardized, REST-based protocol for creating and consuming queryable and interoperable APIs.
CTo replace the TCP/IP networking stack.
DTo serve as a client-side JavaScript framework for building single-page applications.
Lời giải
Mở trang câu hỏi này →OData (Open Data Protocol) là một giao thức tiêu chuẩn hóa, dựa trên REST (Representational State of Resource), được thiết kế để tạo và tiêu thụ các API (Application Programming Interface) có thể được truy vấn và tương thích. Giao thức này cho phép các ứng dụng và dịch vụ chia sẻ dữ liệu một cách dễ dàng và thống nhất. OData cung cấp các tính năng như khả năng truy vấn dữ liệu, cập nhật dữ liệu, và quản lý các mối quan hệ giữa các đối tượng dữ liệu. Điều này giúp tạo ra các API có thể được sử dụng bởi các ứng dụng và dịch vụ khác nhau, bất kể nền tảng hoặc ngôn ngữ lập trình của chúng.
57Which NuGet package is typically required to enable OData support in ASP.NET Core Web API?4 lựa chọn
A
Microsoft.AspNetCore.ODataB
Microsoft.EntityFrameworkCore.SqlServerC
Microsoft.AspNetCore.Mvc.RazorD
Microsoft.AspNetCore.Authentication.JwtBearerLời giải
Mở trang câu hỏi này →Để 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.
A$select
B$orderby
C$expand
D$skip
Lời giải
Mở trang câu hỏi này →Để 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.
59Which query correctly finds all products where the Name property ends with the string 'Edition'?4 lựa chọn
AGET /Products?$filter=endswith(Name, 'Edition')
BGET /Products?$filter=Name.endsWith('Edition')
CGET /Products?$filter=last(Name) eq 'Edition'
DGET /Products?$filter=Name like '%Edition'
Lời giải
Mở trang câu hỏi này →Để tìm kiếm tất cả các sản phẩm có tên kết thúc bằng chuỗi 'Edition', chúng ta cần sử dụng hàm 'endswith' trong truy vấn OData. Hàm này giúp chúng ta kiểm tra xem chuỗi nào kết thúc bằng chuỗi khác. Trong trường hợp này, chúng ta muốn tìm kiếm các sản phẩm có tên kết thúc bằng 'Edition'.
60Which system query option is used to filter a collection of resources in an OData request?4 lựa chọn
A$select
B$orderby
C$filter
D$top
Lời giải
Mở trang câu hỏi này →Để lọc một tập hợp các tài nguyên trong một yêu cầu OData, bạn cần sử dụng hệ thống câu lệnh truy vấn có tên là '$filter'. Câu lệnh '$filter' cho phép bạn áp dụng các điều kiện lọc để chọn ra các tài nguyên phù hợp với yêu cầu của bạn. Ví dụ, bạn có thể sử dụng '$filter' để lọc các tài nguyên dựa trên các thuộc tính của chúng, chẳng hạn như tên, địa chỉ, hoặc ngày sinh. Điều này giúp bạn có thể tập trung vào các tài nguyên quan trọng và giảm thiểu số lượng dữ liệu không cần thiết.
61A JWT consists of three parts separated by dots (.). What are they in the correct order?4 lựa chọn
AHeader, Payload, Signature
BPayload, Header, Signature
CSignature, Header, Payload
DHeader, Signature, Body
Lời giải
Mở trang câu hỏi này →Một JWT (JSON Web Token) được cấu tạo bởi ba phần được ngăn cách bởi dấu chấm (.). Để xác định thứ tự chính xác của các phần này, chúng ta cần hiểu rõ về chức năng của từng phần. Phần đầu tiên là Header, chứa thông tin về thuật toán được sử dụng để tạo chữ ký và loại token. Phần thứ hai là Payload, chứa dữ liệu thực tế được truyền tải trong token, bao gồm thông tin về người dùng, quyền truy cập, v.v. Phần thứ ba là Signature, chứa chữ ký được tạo bằng cách sử dụng Header và Payload. Chữ ký này giúp xác minh tính toàn vẹn và tính xác thực của token. Vì vậy, thứ tự chính xác của các phần trong một JWT là Header, Payload, Signature.
AYes, because the user has one of the required roles.
BNo, because the user must have both the "Editor" and "Admin" roles.
CYes, because the comma indicates an OR relationship.
DIt depends on which role was assigned first.
Lời giải
Mở trang câu hỏi này →Khi một người dùng có nhiều vai trò, chẳng hạn như "Biên tập viên" và "Tác giả", và một hành động được trang trí với [Authorize(Roles = "Biên tập viên,Admin")]. Người dùng có được truy cập không?
63How can you add custom properties (e.g., FirstName, DateOfBirth) to the user model in ASP.NET Core Identity?4 lựa chọn
ABy modifying the IdentityUser source code directly.
BBy creating a new class that inherits from IdentityUser and adding the new properties to it.
CBy storing the extra data in a separate, manually-managed table.
DIt is not possible to extend the IdentityUser model.
Lời giải
Mở trang câu hỏi này →Để thêm thuộc tính tùy chỉnh (ví dụ: FirstName, DateOfBirth) vào mô hình người dùng trong ASP.NET Core Identity, bạn có thể tạo một lớp mới kế thừa từ IdentityUser và thêm các thuộc tính mới vào đó. Điều này cho phép bạn mở rộng mô hình người dùng mà không cần phải sửa đổi mã nguồn của IdentityUser trực tiếp. Khi tạo lớp mới, bạn cần đảm bảo rằng lớp này có cùng tên với lớp IdentityUser và có cùng thuộc tính khóa chính (ví dụ: Id). Sau đó, bạn có thể thêm các thuộc tính mới vào lớp này, chẳng hạn như FirstName và DateOfBirth. Lớp mới này sẽ được sử dụng thay thế cho lớp IdentityUser trong mô hình người dùng của bạn.
64How do you restrict access to a controller action to only users in the "Administrator" role?4 lựa chọn
A[RequiresRole("Administrator")]
B[Authorize(Role = "Administrator")]
C[Authorize(Roles = "Administrator")]
D[Authorize(UserRole = "Administrator")]
Lời giải
Mở trang câu hỏi này →Để hạn chế truy cập vào một hành động controller chỉ cho người dùng có vai trò "Administrator", bạn có thể sử dụng một trong các cách sau.
Cách 1: Sử dụng [Authorize(Roles = "Administrator")] - Đây là cách phổ biến và được sử dụng rộng rãi trong các ứng dụng ASP.NET.
Cách 2: Sử dụng [RequiresRole("Administrator")] - Đây là cách khác để hạn chế truy cập vào một hành động controller.
Cách 3: Sử dụng [Authorize(UserRole = "Administrator")] - Đây là cách khác để hạn chế truy cập vào một hành động controller, mặc dù cách này không được sử dụng rộng rãi như cách 1.
Cách 4: Sử dụng [Authorize(Role = "Administrator")] - Đây là cách khác để hạn chế truy cập vào một hành động controller, mặc dù cách này không được sử dụng rộng rãi như cách 1.