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

PRN232 - Xây dựng ứng dụng back-end đa nền tảng với .NET là môn học xây dựng RESTful Web API bằng C# 12 và .NET 8 trên nền ASP.NET Core. Ngân hàng câu hỏi trắc nghiệm PRN232 có giải thích bao quát trọn bộ chương trình: nhập môn ASP.NET Core và RESTful Service (ràng buộc REST, tính phi trạng thái, giao thức HTTP, request line, mã trạng thái 200 OK, Kestrel, Swagger và OpenAPI, MapControllers, middleware trong Program.cs), Models trong Web API với Entity Framework Core (DbContext, DbSet, LINQ và ToListAsync, POCO, Repository Pattern, Data Transfer Object, AutoMapper, tránh trả thẳng entity ra client), Media Formatters và Content Negotiation (InputFormatter và OutputFormatter, TextInputFormatter, header Accept và Content-Type, hệ số ưu tiên q, application/json, application/xml, text/csv, serialization và deserialization), Binding - Validation - Routing (Model Binder, binding source parameter inference, FromBody, FromQuery, FromRoute, FromHeader, attribute routing, tham số route, Data Annotations với Required, StringLength, EmailAddress, RegularExpression, ApiController và ModelState.IsValid, trả về 400 Bad Request và NotFound), OData trong ASP.NET Core Web API (gói Microsoft.AspNetCore.OData, ODataConventionModelBuilder, Entity Data Model, Entity Set, các tuỳ chọn truy vấn $filter, $select, $expand, $orderby, $count, $skip, $top, endpoint $metadata, hàm endswith), bảo mật RESTful Web Service (ASP.NET Core Identity, JSON Web Token với ba phần Header - Payload - Signature, UseAuthentication và UseAuthorization, header Authorization dạng Bearer, thuộc tính Authorize theo Roles, HTTPS, xác thực và phân quyền), JavaScript Client và AJAX (jQuery, cú pháp $(selector).action(), $.ajax, $.get, $.post, phương thức .on() và event delegation, Same-Origin Policy, CORS, JSON hợp lệ, XML well-formed), xây dựng dịch vụ với WCF và CoreWCF (ServiceContract, OperationContract, endpoint ABC gồm Address - Binding - Contract, AddServiceModelServices, host trong ASP.NET Core dưới dạng middleware) và gRPC Service (Protocol Buffers, file .proto, HTTP/2, GrpcChannel, ServerCallContext, streaming hai chiều, Server Push), khép lại bằng kiến trúc Microservices (API Gateway, Ocelot, Docker, giao tiếp đồng bộ và bất đồng bộ, cơ sở dữ liệu riêng cho từng service, runtime coupling). Tài liệu ôn thi FE dành cho sinh viên FPT University.

115Câu hỏi
3Bộ đề
10Chủ đề
5,01 đánh giá
Thử sức tại chỗ

Trả lời ngay tại đây

Chưa trả lời câu nào
1PRN232 Chương 1 - Nhập môn ASP.NET Core và RESTful Service

How do you add Swagger generation and the Swagger UI to your ASP.NET Core 8 application? // In Program.cs

Đề bài
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment()) {
  // What two lines of code are typically added here?
}
2PRN232 Chương 1 - Nhập môn ASP.NET Core và RESTful Service
In the request line 'GET /images/logo.gif HTTP/1.1', what is this line called?
3PRN232 Chương 1 - Nhập môn ASP.NET Core và RESTful Service
What does "Statelessness" in REST mean?
Còn 3 câu nữa ở trên

Trả lời hết các câu trên để xem tổng kết, hoặc vào phiên học ngay.

Học từ ngân hàng câu hỏi

Bắt đầu một phiên học theo môn

Tiến độ của bạn luôn được tính và đồng bộ trực tiếp theo tổng số lượng câu hỏi mới nhất của môn học này.

115Ngân hàng hiện tại--Tiến độ môn

Câu hỏi của môn

24/115 câuCòn 91
AHTML
BXML
CJSON
DYAML
Lời giải
Trong các lựa chọn trên, JSON (JavaScript Object Notation) là định dạng dữ liệu phổ biến nhất được sử dụng cho các gói tải phản hồi trong các API REST hiện đại. JSON cung cấp một cách đơn giản và dễ đọc để biểu diễn dữ liệu, giúp dễ dàng truyền tải và xử lý dữ liệu giữa các ứng dụng và hệ thống khác nhau. Nó cũng hỗ trợ các loại dữ liệu cơ bản như chuỗi, số, boolean, mảng và đối tượng, cũng như các thuộc tính và phương thức của đối tượng. Việc sử dụng JSON trong các API REST giúp giảm thiểu thời gian tải trang và tăng cường hiệu suất của ứng dụng. Ngoài ra, JSON cũng được hỗ trợ rộng rãi bởi các nền tảng và ngôn ngữ lập trình khác nhau, làm cho nó trở thành lựa chọn phổ biến cho các ứng dụng web và di động.
Mở trang câu hỏi này →
6What is the primary purpose of Swagger (OpenAPI) in an ASP.NET Core Web API?4 lựa chọnDễ100% trả lời đúng
ATo provide a database management interface.
BTo describe the capabilities of your API and provide interactive documentation.
CTo automatically handle user authentication and authorization.
DTo monitor the performance of the API in real-time.
Lời giải
Swagger (OpenAPI) là một công cụ quan trọng trong việc xây dựng và quản lý API. Mục đích chính của Swagger là mô tả khả năng của API và cung cấp tài liệu interact được. Điều này giúp cho các nhà phát triển và người dùng dễ dàng hiểu được cách sử dụng API, bao gồm các phương thức HTTP, tham số, phản hồi và các thông tin khác. Swagger cũng cho phép tạo ra tài liệu API tự động, giúp giảm thiểu thời gian và công sức trong việc tạo và duy trì tài liệu. Ngoài ra, Swagger còn hỗ trợ các tính năng như tạo mẫu mã, thử nghiệm API và phân tích hiệu suất, giúp cho việc phát triển và quản lý API trở nên dễ dàng hơn.
Mở trang câu hỏi này →
ATo securely encrypt data transmissions.
BTo transfer hypertext documents across the internet.
CTo manage and query databases.
DTo define the structure of a web page.
Lời giải
HTTP (Hypertext Transfer Protocol) là một giao thức mạng được sử dụng để truyền tải dữ liệu trên internet. Mục đích chính của giao thức HTTP là chuyển đổi các tài liệu siêu văn bản (hypertext documents) giữa các máy tính. Điều này bao gồm việc truyền tải các trang web, hình ảnh, âm thanh và các loại dữ liệu khác. Khi bạn nhập địa chỉ URL của một trang web vào trình duyệt, trình duyệt sẽ gửi một yêu cầu HTTP đến máy chủ lưu trữ trang web đó. Máy chủ sẽ trả lời yêu cầu bằng cách gửi lại trang web yêu cầu, và trình duyệt sẽ hiển thị trang web đó cho bạn. Vì vậy, mục đích chính của giao thức HTTP là truyền tải các tài liệu siêu văn bản trên internet.
Mở trang câu hỏi này →
AA web service that uses SOAP for communication.
BA web service that adheres to the architectural principles of REST.
CA web service that only returns XML data.
DA web service that requires a specific client-side framework.
Lời giải
Một dịch vụ web RESTful là một loại dịch vụ web được thiết kế theo nguyên tắc kiến trúc REST (Representational State of Resource). REST là một mô hình kiến trúc dựa trên tài nguyên, nơi mà mỗi tài nguyên được đại diện bởi một URI duy nhất và có thể được truy cập thông qua các phương thức HTTP khác nhau như GET, POST, PUT và DELETE. Dịch vụ web RESTful thường sử dụng các phương thức này để thực hiện các hành động như đọc, tạo, cập nhật và xóa dữ liệu. Điều này giúp tạo ra một dịch vụ web linh hoạt, dễ dàng sử dụng và có khả năng mở rộng cao.
Mở trang câu hỏi này →
9Which of the following is a key REST constraint?4 lựa chọnKhó33% trả lời đúng
AStateless communication
BServer-managed conversational state
CTight coupling between client and server
DProtocol-specific operations only
Lời giải
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.
Mở trang câu hỏi này →
ACross-platform support
BOpen-source framework
CTight integration with IIS only
DBuilt-in dependency injection
Lời giải
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.
Mở trang câu hỏi này →
11Consider this EF Core entity:4 lựa chọncó codeTrung bình50% trả lời đúng
Đề bài
public class User {
  public int Id { get; set; }
  public string Username { get; set; }
  = String.Empty;
  public string HashedPassword { get; set; }
  = String.Empty;
  public bool IsAdmin { get; set; }
}

Which of the following would be an appropriate DTO to return to a client asking for user details?

Apublic class UserDto { public int Id { get; set; } public string Username { get; set; } }
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; } }
Lời giải
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ề.
Mở trang câu hỏi này →
Đề bài
public class ApplicationDbContext : DbContext {
  public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) {
  }
  public DbSet<Product> Products { get; set; }
  public DbSet<Category> Categories { get; set; }
}
AIt scans the entire assembly for public classes.
BThrough the DbSet<T> properties defined in the DbContext.
CIt relies on XML configuration files.
DYou must manually register each class using builder.Services.AddTransient<Product>().
Lời giải

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.

Mở trang câu hỏi này →
Đề bài
var result = await _context.Products .Where(p => p.IsAvailable) .OrderBy(p => p.Name) .ToListAsync();
AIt fetches all products, then filters and sorts them in the application's memory.
BIt generates a SQL query to select and order available products, which is then executed on the database server.
CIt synchronously blocks the thread until the database returns all products.
DIt deletes all products that are not available.
Lời giải
Lệnh LINQ này được sử dụng trong một dịch vụ .NET 8 sử dụng EF Core. Nó thực hiện việc truy vấn dữ liệu từ cơ sở dữ liệu. Đầu tiên, nó lọc ra các sản phẩm có trạng thái 'IsAvailable' là true. Sau đó, nó sắp xếp các sản phẩm theo tên. Tất cả các bước này được thực hiện trên cơ sở dữ liệu, không phải trong bộ nhớ của ứng dụng. Điều này giúp giảm thiểu lượng dữ liệu cần truyền tải và xử lý.
Mở trang câu hỏi này →
ATo automatically generate API documentation.
BTo abstract the data access logic, making the application more modular and testable.
CTo handle user authentication and authorization.
DTo define the routing rules for API endpoints.
Lời giải
Repository Pattern là một mô hình thiết kế được sử dụng rộng rãi trong ASP.NET Core để truy cập dữ liệu. Nó giúp abstract hóa logic truy cập dữ liệu, làm cho ứng dụng trở nên linh hoạt và dễ dàng kiểm tra hơn. Repository Pattern giúp tách biệt logic truy cập dữ liệu khỏi logic kinh doanh, giảm thiểu sự phụ thuộc và tăng cường khả năng mở rộng. Nó cũng giúp dễ dàng thay đổi cơ sở dữ liệu mà không ảnh hưởng đến logic kinh doanh. Ngoài ra, Repository Pattern giúp dễ dàng thực hiện các tính năng như caching, logging và phân trang dữ liệu.
Mở trang câu hỏi này →
15What is the main benefit of using a library like AutoMapper?4 lựa chọnDễ100% trả lời đúng
AIt automatically creates database tables from DTOs.
BIt replaces the need for Dependency Injection.
CIt automates the process of converting one object type to another (e.g., an Entity to a DTO), reducing boilerplate code.
DIt provides an alternative to JSON for data serialization.
Lời giải
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.
Mở trang câu hỏi này →
ATo replace the need for a database.
BTo shape data specifically for the client, preventing over-posting and under-posting, and decoupling the API from the database schema.
CTo increase the performance of database queries.
DTo enforce business logic and validation.
Lời giải
DTOs (Data Transfer Objects) là một kỹ thuật được sử dụng trong xây dựng API để chuyển đổi dữ liệu từ cơ sở dữ liệu sang dạng dễ dàng sử dụng cho khách hàng. Mục đích chính của việc sử dụng DTOs là để định hình dữ liệu cụ thể cho khách hàng, ngăn chặn tình trạng quá tải (over-posting) và thiếu dữ liệu (under-posting), đồng thời tách rời API khỏi cấu trúc cơ sở dữ liệu. Điều này giúp đảm bảo rằng dữ liệu được truyền đi là chính xác và đầy đủ, cũng như giảm thiểu khả năng xảy ra lỗi do sai sót trong dữ liệu.
Mở trang câu hỏi này →
AKeep business logic inside AutoMapper profiles.
BReturn DTOs from controllers instead of EF entities.
CLet AutoMapper save changes to the database automatically.
DBind request bodies directly to domain entities.
Lời giải
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.
Mở trang câu hỏi này →
AA static class with methods for rendering HTML.
BAn interface defining controller actions.
CA class with properties representing data, often called a POCO (Plain Old CLR Object).
DAn attribute used for routing.
Lời giải
Trong lập trình C#, một Model class được sử dụng để đại diện cho dữ liệu trong ứng dụng ASP.NET Core. Nó thường được gọi là POCO (Plain Old CLR Object), tức là một lớp với các thuộc tính đại diện cho dữ liệu. Ví dụ, nếu bạn muốn tạo một lớp đại diện cho một người dùng, bạn có thể tạo một lớp có các thuộc tính như tên, tuổi, địa chỉ, v.v. Lớp này không chứa bất kỳ logic nào, chỉ đơn giản là đại diện cho dữ liệu. Điều này giúp cho việc quản lý dữ liệu trở nên dễ dàng hơn và giúp cho ứng dụng trở nên linh hoạt hơn.
Mở trang câu hỏi này →
AAuthorization
BAccept
CContent-Type
DUser-Agent
Lời giải
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.
Mở trang câu hỏi này →
AAn output formatter that can write XML.
BAn input formatter that can read XML.
CThe default JSON formatter, which will cause an error.
DAny formatter that is registered with the application.
Lời giải
Khi một khách hàng gửi một yêu cầu với Content-Type: application/xml, thì pipeline ASP.NET Core sẽ cố gắng sử dụng loại trình tạo nào để đọc cơ thể yêu cầu? Để giải quyết vấn đề này, chúng ta cần hiểu về các trình tạo đầu vào và đầu ra trong ASP.NET Core. Trình tạo đầu vào là một thành phần quan trọng trong ASP.NET Core, có trách nhiệm đọc dữ liệu từ cơ thể yêu cầu và chuyển đổi nó thành một đối tượng .NET. Trong trường hợp này, trình tạo đầu vào sẽ cố gắng đọc dữ liệu XML từ cơ thể yêu cầu và chuyển đổi nó thành một đối tượng .NET. Điều này cho phép chúng ta sử dụng dữ liệu XML trong ứng dụng ASP.NET Core của mình. Vì vậy, câu trả lời đúng cho câu hỏi này là trình tạo đầu vào có thể đọc XML.
Mở trang câu hỏi này →
AIt can only accept JSON.
BIt prefers XML (q=1.0) over JSON (q=0.9).
CIt can only accept XML.
DIt wants the response to be split between JSON and XML.
Lời giải
Khi một khách hàng gửi một tiêu đề Accept với giá trị application/json; q=0.9, application/xml; q=1.0, điều đó có nghĩa là khách hàng muốn nhận được phản hồi trong hai định dạng: JSON và XML. Giá trị q được sử dụng để chỉ định mức độ ưu tiên của mỗi định dạng. Trong trường hợp này, giá trị q=1.0 cho XML cao hơn giá trị q=0.9 cho JSON, điều đó có nghĩa là khách hàng muốn nhận được phản hồi trong định dạng XML nếu có thể, nhưng nếu không thể, họ cũng chấp nhận nhận được phản hồi trong định dạng JSON. Điều này cho thấy khách hàng có thể chấp nhận cả hai định dạng, nhưng có ưu tiên cho XML.
Mở trang câu hỏi này →
ATo specify the media type of the resource in the request body.
BTo indicate which character sets are acceptable for the response.
CTo inform the server about the media types that the client can understand.
DTo provide authentication credentials.
Lời giải
Đầu vào Accept trong yêu cầu HTTP có mục đích để thông báo cho máy chủ về các loại phương tiện mà trình duyệt hoặc ứng dụng khách có thể hiểu được. Điều này cho phép máy chủ trả về nội dung phù hợp với trình duyệt hoặc ứng dụng khách. Ví dụ, nếu trình duyệt của bạn chỉ hiểu được định dạng HTML và CSS, thì bạn có thể gửi yêu cầu HTTP với đầu vào Accept là 'text/html' hoặc 'text/css'. Điều này giúp máy chủ trả về nội dung phù hợp với trình duyệt của bạn, giúp cải thiện trải nghiệm người dùng. Ngoài ra, đầu vào Accept cũng có thể được sử dụng để chỉ định các định dạng phương tiện ưu tiên, chẳng hạn như 'text/html; q=0.5, text/css; q=0.3'. Điều này cho phép máy chủ ưu tiên trả về nội dung theo thứ tự ưu tiên.
Mở trang câu hỏi này →
AInputFormatter and OutputFormatter
BFormatter and Serializer
CMediaTypeReader and MediaTypeWriter
DRequestFormatter and ResponseFormatter
Lời giải
Trong ASP.NET Core hiện đại, các lớp cơ sở tương ứng cho các định dạng đầu vào và đầu ra là InputFormatter và OutputFormatter. InputFormatter chịu trách nhiệm chuyển đổi dữ liệu từ yêu cầu HTTP sang một định dạng cụ thể, trong khi OutputFormatter thực hiện việc chuyển đổi dữ liệu từ một định dạng cụ thể sang phản hồi HTTP. Các lớp này được sử dụng để hỗ trợ các định dạng dữ liệu như JSON, XML, v.v. trong ứng dụng ASP.NET Core. Ví dụ, bạn có thể sử dụng lớp JsonInputFormatter để chuyển đổi dữ liệu từ JSON sang một đối tượng C# và lớp JsonOutputFormatter để chuyển đổi dữ liệu từ một đối tượng C# sang JSON.
Mở trang câu hỏi này →
ATo handle user authentication and authorization.
BTo route incoming HTTP requests to the correct controller action.
CTo serialize response data into a specific format (e.g., JSON, XML) and deserialize request data from a specific format.
DTo log exceptions that occur during request processing.
Lời giải
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.
Mở trang câu hỏi này →