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á

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

84/115 câuCòn 31
AIn the appsettings.json file.
BIn the launchSettings.json file.
CIn the Program.cs file, using builder.Services.
DWithin a controller's constructor.
Mở trang câu hỏi này →
AUseAuthorization()
BUseAuthentication()
CUseCors()
DUseStaticFiles()
Lời giải
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.
Mở trang câu hỏi này →
Đề bài
app.UseAuthentication();
app.UseAuthorization();

// ...

Đề bài
app.Run();
AIt registers the authentication services.
BIt adds the authentication and authorization middleware components to the request pipeline.
CIt configures the default authentication scheme.
DIt is redundant and has no effect.
Lời giải

Trong mã .NET 8 ở Program.cs, mục đích của đoạn mã var app = builder.Build(); // ...

Lời giải
app.UseAuthentication();
app.UseAuthorization();

// ... app.Run(); là thêm các thành phần middleware cho pipeline yêu cầu. Middleware là các lớp xử lý trung gian giúp thực hiện các tác vụ như xác thực và ủy quyền. Khi sử dụng UseAuthentication() và UseAuthorization(), chúng ta đang thêm các thành phần này vào pipeline để xử lý các yêu cầu liên quan đến xác thực và ủy quyền. Điều này giúp đảm bảo rằng ứng dụng của chúng ta có thể xác thực và ủy quyền người dùng một cách chính xác và an toàn.

Mở trang câu hỏi này →
68What is ASP.NET Core Identity?4 lựa chọnDễ100% trả lời đúng
AA simple interface for generating unique IDs.
BA membership system that provides services for user authentication and authorization, including user management, password hashing, and role management.
CA client-side library for managing user profiles.
DThe default authentication scheme for Windows Authentication.
Lời giải
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ò.
Mở trang câu hỏi này →
AAccept
BAuthorization
CContent-Type
DCache-Control
Lời giải
Để 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.
Mở trang câu hỏi này →
AInclude passwords in URLs
BValidate inputs on the server
CAllow GET to delete data
DReturn detailed stack traces to clients
Lời giải
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.
Mở trang câu hỏi này →
AThe server should store the client's session state to validate every request.
BEach request from a client must contain all the information needed for the server to authenticate and authorize it, without relying on a previous request's context.
CSecurity is best handled by the client-side application, not the API.
DUsing HTTP instead of HTTPS is acceptable for internal services.
Lời giải
Một trong những nguyên tắc bảo mật cơ bản cho các dịch vụ RESTful không có trạng thái là mỗi yêu cầu từ phía khách hàng phải chứa tất cả thông tin cần thiết để máy chủ xác thực và cấp quyền cho nó mà không dựa trên bối cảnh của yêu cầu trước đó. Điều này có nghĩa là mỗi yêu cầu phải tự chứa thông tin xác thực và cấp quyền của mình, mà không dựa vào thông tin được lưu trữ trên máy chủ. Điều này giúp tăng cường bảo mật và giảm thiểu rủi ro do lỗi bảo mật của máy chủ. Ngoài ra, nguyên tắc này cũng giúp cải thiện khả năng mở rộng và tínhscalability của hệ thống, vì máy chủ không cần phải lưu trữ trạng thái của khách hàng.
Mở trang câu hỏi này →
72Which of the following questions does "Authentication" answer?4 lựa chọnDễ100% trả lời đúng
A"What can you do?"
B"Who are you?"
C"How long can you stay?"
D"Where are you from?"
Lời giải
Authentication là quá trình xác thực danh tính của một người dùng. Nó giúp xác định xem người dùng đó có phải là người thực sự hay không. Trong các câu hỏi được liệt kê, câu hỏi "Who are you?" (Ai bạn là?) là một câu hỏi phù hợp để xác thực danh tính của người dùng. Câu hỏi này giúp xác định xem người dùng có phải là người thực sự hay không, và có thể được sử dụng để xác thực thông tin đăng nhập của người dùng.
Mở trang câu hỏi này →
AIt makes the API faster by compressing the data.
BIt ensures that the data (including credentials and sensitive information) transferred between the client and server is encrypted and protected from eavesdropping.
CIt is the only protocol that supports the GET and POST verbs.
DIt automatically handles user authorization.
Lời giải
Sử dụng HTTPS cho RESTful APIs là rất quan trọng vì nó đảm bảo rằng dữ liệu được truyền giữa client và server được mã hóa và bảo vệ khỏi việc nghe trộm. Điều này đặc biệt quan trọng khi truyền dữ liệu nhạy cảm như thông tin đăng nhập, mật khẩu, hoặc thông tin cá nhân. Nếu dữ liệu không được mã hóa, bất kỳ ai cũng có thể truy cập và đọc dữ liệu này, điều này có thể dẫn đến các vấn đề bảo mật nghiêm trọng. Ngoài ra, HTTPS cũng giúp ngăn chặn các cuộc tấn công như eavesdropping, tampering và replay attacks. Vì vậy, sử dụng HTTPS cho RESTful APIs là một biện pháp bảo mật quan trọng để bảo vệ dữ liệu và ngăn chặn các cuộc tấn công.
Mở trang câu hỏi này →
AA string representing the name of the event ("click").
BThe HTML element that was clicked.
CAn object containing information about the event, such as the mouse position and the target element.
DA boolean value indicating if the click was successful.
Lời giải
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.
Mở trang câu hỏi này →
A$("div > p")
B$("div p")
C$("div + p")
D$("div ~ p")
Lời giải

Để 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>.

Mở trang câu hỏi này →
AIt is shorter to type than .click().
BIt can attach event handlers to elements that do not yet exist in the DOM (event delegation).
CIt only works for mouse-related events.
DIt prevents the default action of the event automatically.
Lời giải
Khi sử dụng phương thức .on() trong jQuery, lợi thế chính là khả năng gắn các xử lý sự kiện vào các phần tử chưa tồn tại trong DOM (đại diện sự kiện). Điều này cho phép bạn gắn các xử lý sự kiện vào các phần tử sẽ được tạo sau này trong quá trình chạy chương trình. Ví dụ, bạn có thể gắn một xử lý sự kiện click vào các phần tử có class 'button' mà không cần phải biết trước số lượng phần tử sẽ được tạo. Phương thức .on() cũng cho phép bạn gắn các xử lý sự kiện vào các phần tử cha hoặc mẹ của phần tử đích, giúp giảm thiểu số lượng xử lý sự kiện cần gắn.
Mở trang câu hỏi này →
A$.get()
B$.post()
C$.ajax()
DAll of the above
Lời giải
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.
Mở trang câu hỏi này →
AThe code is guaranteed to execute in a specific, synchronous order.
BThe web browser can continue to be responsive to the user while waiting for the server to send back a response.
CThe server must respond to the request immediately.
DThe data must be in XML format.
Lời giải
AJAX là một kỹ thuật cho phép thực hiện các yêu cầu với máy chủ mà không cần phải tải lại toàn bộ trang web. Khi nói đến khái niệm 'asynchronous', điều đó có nghĩa là trình duyệt web có thể tiếp tục phản hồi với người dùng trong khi chờ đợi máy chủ gửi lại phản hồi. Điều này cho phép người dùng tương tác với trang web mà không cần phải chờ đợi phản hồi từ máy chủ. Ví dụ, khi bạn nhấp vào một nút, trình duyệt web có thể tiếp tục phản hồi với người dùng ngay lập tức, ngay cả khi máy chủ vẫn đang xử lý yêu cầu. Điều này giúp cải thiện trải nghiệm người dùng và tăng tốc độ tải trang.
Mở trang câu hỏi này →
Aelement.action()
B$(selector).action()
CjQuery(action).selector()
Dselect(element).do(action)
Lời giải
Để 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ả.
Mở trang câu hỏi này →
AA policy that states all variables in a script must be of the same type.
BA security measure that prevents a web page from making AJAX requests to a different domain than the one it originated from.
CA rule that requires all AJAX requests to return JSON.
DA policy that ensures all developers on a team use the same coding style.
Lời giải
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.
Mở trang câu hỏi này →
AString, Number, Boolean, Array, Object, null
BString, Integer, Float, Date, Array, Hashtable
CText, Decimal, Bit, List, Dictionary, null
DVarchar, Number, Boolean, Collection, Object, undefined
Lời giải
JSON hỗ trợ nhiều loại dữ liệu khác nhau. Trong đó có String, Number, Boolean, Array và Object. String được sử dụng để lưu trữ chuỗi ký tự, Number để lưu trữ số nguyên và số thực, Boolean để lưu trữ giá trị logic True hoặc False, Array để lưu trữ danh sách các giá trị và Object để lưu trữ các thuộc tính và giá trị. null được sử dụng để biểu thị giá trị không có. JSON không hỗ trợ các loại dữ liệu như Integer, Float, Date, Text, Decimal, Bit, List, Dictionary, Varchar, Number, Boolean, Collection, Object, undefined vì chúng không phải là các loại dữ liệu cơ bản trong JSON.
Mở trang câu hỏi này →
82Which of the following is a valid JSON object?4 lựa chọnDễ75% trả lời đúng
A{ 'name': 'John Doe', "age": 30 }
B{ name: "John Doe", age: 30 }
C{ "name": "John Doe", "age": 30, }
D{ "name": "John Doe", "age": 30 }
Lời giải
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.
Mở trang câu hỏi này →
83Which of the following is a well-formed XML document?4 lựa chọnDễ100% trả lời đúng
A<note> <to>Tove</to> <from>Jani</from> </note>
B<note> <to>Tove <from>Jani</from> </to> </note>
C<note> <to>Tove</to> <from>Jani <note>
D<note> <to>Tove</from><from>Jani</to> </note>
Lời giải

Một tài liệu XML được coi là hợp lệ nếu nó tuân theo các quy tắc về cấu trúc và ngữ nghĩa của XML. Trong các lựa chọn trên, tài liệu XML hợp lệ phải có các phần tử được đóng mở đúng cách và các phần tử con phải được đóng gói trong phần tử cha. Ví dụ, trong tài liệu XML « <note> <to>Tove</to> <from>Jani</from> </note> », phần tử «note» được mở và đóng đúng cách, và các phần tử «to» và «from» được đóng gói trong phần tử «note». Ngược lại, trong tài liệu XML « <note> <to>Tove <from>Jani</from> </to> </note> », phần tử «to» không được đóng đúng cách vì nó không có phần tử đóng. Trong tài liệu XML « <note> <to>Tove</to> <from>Jani <note>», phần tử «from» không được đóng đúng cách vì nó không có phần tử đóng. Cuối cùng, trong tài liệu XML « <note> <to>Tove</from><from>Jani</to> </note> », các phần tử «to» và «from» không được đóng gói trong phần tử «note». Vì vậy, chỉ có tài liệu XML « <note> <to>Tove</to> <from>Jani</from> </note> » là hợp lệ.

Mở trang câu hỏi này →
A$("a[target='_blank']")
B$("a.target._blank")
C$("a where target is _blank")
D$("a{target:'_blank'}")
Lời giải

Để chọn tất cả các thẻ <a> có thuộc tính target bằng '_blank', bạn cần sử dụng selector đúng. Selector là một phần của CSS hoặc jQuery dùng để chọn phần tử HTML. Trong trường hợp này, bạn cần sử dụng selector có dạng 'a[target='_blank']'. Điều này sẽ chọn tất cả các thẻ <a> có thuộc tính target bằng '_blank'.

Mở trang câu hỏi này →