PRN222DễKỳ 7Chuyên ngành Cập nhật 07/09/2026
Advanced Cross-Platform Application Programming With .NET - Lập trình ứng dụng đa nền tảng nâng cao với .NET
175Câu hỏi
4Bộ đề
8Chủ đề
5,01 đánh giá
Câu hỏi của môn
175/175 câuHết danh sách
165In Blazor Server, where does the C# code execute?4 lựa chọn
AIn the browser using WebAssembly.
BOn the server.
CIn a separate desktop application.
DOn a mobile device.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "On the server". Trong Blazor Server, toàn bộ mã C# và cây component chạy TRÊN MÁY CHỦ. Trình duyệt chỉ giữ một kết nối SignalR thường trực, gửi sự kiện người dùng lên máy chủ và nhận về phần chênh lệch của DOM để cập nhật giao diện. Nhờ vậy tải tải về ban đầu rất nhẹ và mã nguồn không lộ ra máy khách, nhưng ứng dụng phụ thuộc vào độ trễ mạng và không chạy được khi mất kết nối. Chạy trong trình duyệt bằng WebAssembly là mô hình của Blazor WebAssembly; "In a separate desktop application" và "On a mobile device" mô tả những môi trường không liên quan.
AIt stores data in memory only.
BIt stores data in session state or cookies, depending on configuration.
CIt stores data in the database.
DIt stores data in the file system.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "It stores data in session state or cookies, depending on configuration". TempData dùng để giữ dữ liệu qua ĐÚNG một lần chuyển hướng, và nơi lưu phụ thuộc vào provider được cấu hình: mặc định trong ASP.NET Core là CookieTempDataProvider - lưu vào cookie đã mã hoá; nếu đăng ký SessionStateTempDataProvider thì dữ liệu nằm trong session state. Vì vậy phát biểu đúng là lưu trong session hoặc cookie tuỳ cấu hình. Phương án "It stores data in memory only" sai vì dữ liệu không chỉ nằm trong bộ nhớ tiến trình; các phương án "It stores data in the database" và "It stores data in the file system" sai vì TempData không ghi xuống cơ sở dữ liệu hay hệ thống tệp.
AA system with multiple CPUs.
BA system with a single CPU.
CA system with multiple cores.
DA distributed system.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "A system with a single CPU." Hệ thống đơn bộ xử lý (mono-processor, còn gọi uniprocessor) là hệ chỉ có MỘT CPU đảm nhiệm toàn bộ việc thực thi lệnh; tại một thời điểm nó chỉ chạy được một luồng lệnh, và cảm giác đa nhiệm có được là nhờ hệ điều hành luân phiên chia thời gian. Hệ nhiều CPU ("A system with multiple CPUs.") là multi-processor; hệ một CPU nhiều lõi ("A system with multiple cores.") đã có khả năng thực thi song song thật sự nên không còn là mono-processor theo nghĩa cổ điển; hệ phân tán ("A distributed system.") gồm nhiều máy độc lập nối mạng, thuộc phạm trù hoàn toàn khác.
168Which method stops a hosted service?4 lựa chọn
A
StopAsync()B
EndAsync()C
seAsync()D
ShutdownAsync()Lời giải
Mở trang câu hỏi này →Đáp án đúng: "StopAsync()". Giao diện IHostedService định nghĩa đúng hai phương thức: StartAsync(CancellationToken) được host gọi khi khởi động và StopAsync(CancellationToken) được gọi khi ứng dụng tắt để dịch vụ dọn dẹp và kết thúc êm. Lớp BackgroundService hiện thực hoá sẵn cặp này và cho ta ghi đè ExecuteAsync. Các tên EndAsync(), seAsync() và ShutdownAsync() không tồn tại trong hợp đồng IHostedService nên đều không phải phương thức dừng dịch vụ.
169Consider this C# code:4 lựa chọncó code
public class FileLogger
{
public void Log(string message)
=> Console.WriteLine(message);
}
public class OrderService
{
private FileLogger logger = new FileLogger();
}Which principle is violated here?
ASingle Responsibility Principle
BOpen/Closed Principle
CDependency Inversion Principle
DInterface Segregation Principle
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Dependency Inversion Principle". OrderService tự khởi tạo một FileLogger cụ thể bằng new, nghĩa là mô-đun cấp cao phụ thuộc trực tiếp vào lớp hiện thực cấp thấp thay vì vào một trừu tượng như ILogger. Đó chính là vi phạm Nguyên lý Đảo ngược Phụ thuộc; cách sửa là khai báo interface ILogger, cho OrderService nhận nó qua constructor và để DI container cung cấp. Trách nhiệm của OrderService vẫn đơn nhất nên chưa vi phạm SRP ("Single Responsibility Principle"); không có chỗ nào phải sửa mã cũ để mở rộng nên chưa động tới OCP ("Open/Closed Principle"); và cũng không có interface phình to nào để nói tới ISP ("Interface Segregation Principle").
ATo create tightly coupled classes.
BTo depend on abstractions, not concretions.
CTo create large, monolithic classes.
DTo avoid using interfaces.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "To depend on abstractions, not concretions". Nguyên lý Đảo ngược Phụ thuộc phát biểu rằng mô-đun cấp cao và mô-đun cấp thấp đều phải phụ thuộc vào TRỪU TƯỢNG, và trừu tượng không phụ thuộc vào chi tiết mà ngược lại. Mục đích là cắt đứt sự ràng buộc cứng giữa các lớp, giúp thay thế hiện thực, viết kiểm thử với đối tượng giả và mở rộng hệ thống dễ dàng. Phương án "To create tightly coupled classes" đi ngược mục tiêu vì tạo ra ghép nối chặt; "To create large, monolithic classes" nói về lớp lớn monolithic, thuộc vấn đề của SRP; "To avoid using interfaces" sai hoàn toàn vì DIP dựa chính vào interface.
AOn the server.
BIn the browser using WebAssembly.
CIn a separate desktop application.
DOn a mobile device.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "In the browser using WebAssembly." Trong Blazor WebAssembly, thời gian chạy .NET được biên dịch sang WebAssembly và tải về trình duyệt, nên toàn bộ mã C# thực thi NGAY TRONG TRÌNH DUYỆT ở phía máy khách. Nhờ vậy ứng dụng chạy được cả khi ngoại tuyến và không tốn kết nối thường trực tới máy chủ, đổi lại tải về ban đầu lớn hơn và mã có thể bị xem xét từ phía người dùng. Chạy trên máy chủ ("On the server.") là mô hình Blazor Server; "In a separate desktop application." và "On a mobile device." mô tả những môi trường thực thi không đúng với Blazor WebAssembly.
172async/await in C# is based on which pattern?4 lựa chọn
AEvent-based Asynchronous Pattern (EAP)
BAsynchronous Programming Model (APM)
CTask-based Asynchronous Pattern (TAP)
DDelegate pattern
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Task-based Asynchronous Pattern (TAP)". async/await trong C# được xây trên Task-based Asynchronous Pattern: một phương thức bất đồng bộ trả về Task hoặc Task<T>, và await tạm dừng phương thức cho tới khi Task hoàn tất mà không chặn luồng. TAP ra đời từ .NET 4 và là mẫu được khuyến nghị hiện nay. Event-based Asynchronous Pattern là mẫu cũ dùng cặp phương thức MethodAsync kèm sự kiện MethodCompleted; Asynchronous Programming Model là mẫu còn cũ hơn với cặp BeginXxx/EndXxx và IAsyncResult; mẫu delegate không phải một mô hình bất đồng bộ chuẩn.
173Which of the following statements is true regarding ViewBag and ViewData?4 lựa chọncó code
// Controller
ViewData["Number"] = 123; // ViewData requires casting in the view.
ViewBag.Text = "Hello"; // ViewBag does not require casting.
//View
<p>Number: @((int)ViewData["Number"])</p>
<p>Text: @ViewBag.Text</p>AViewBag is strongly typed, while ViewData is dynamically typed.
BViewData is strongly typed, while ViewBag is dynamically typed.
CBoth ViewBag and ViewData are strongly typed.
DBoth ViewBag and ViewData are dynamically typed.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Both ViewBag and ViewData are dynamically typed.". Cả ViewBag lẫn ViewData đều KHÔNG phải kiểu mạnh. ViewData là ViewDataDictionary, tức từ điển chuỗi - object, nên khi lấy ra phải ép kiểu như @((int)ViewData["Number"]) và lỗi ép kiểu chỉ lộ ra lúc chạy. ViewBag chỉ là lớp bọc dynamic quanh chính ViewData, nhờ dynamic mà viết @ViewBag.Text không cần ép kiểu nhưng cũng không được trình biên dịch kiểm tra. Vì vậy A, B và C đều sai khi gán nhãn "strongly typed" cho một trong hai. Muốn kiểu mạnh thì phải dùng view model với chỉ thị @model.
174What is the potential risk of using parallel programming without proper synchronization?4 lựa chọn
AIncreased memory usage.
BReduced network bandwidth.
CSimplified debugging.
DData races and inconsistent results.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Data races and inconsistent results." Khi nhiều luồng cùng đọc và ghi lên một vùng dữ liệu chia sẻ mà không có cơ chế đồng bộ như lock, Monitor, Interlocked hay các bộ sưu tập concurrent, thì thứ tự thao tác trở nên bất định và sinh ra data race: kết quả sai lệch, thay đổi giữa các lần chạy và rất khó tái hiện khi gỡ lỗi. Đó là rủi ro nghiêm trọng nhất của lập trình song song. Tăng bộ nhớ ("Increased memory usage.") chỉ là chi phí phụ; giảm băng thông mạng ("Reduced network bandwidth.") không liên quan; và gỡ lỗi trở nên KHÓ hơn chứ không đơn giản hơn nên "Simplified debugging." sai hẳn.
175What is a multi-processor system?4 lựa chọn
AA system with a single CPU core.
BA system with multiple CPUs.
CA system with a single thread.
DA system with no network connection.
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "A system with multiple CPUs." Hệ đa bộ xử lý là hệ thống có từ hai CPU trở lên cùng chia sẻ bộ nhớ và hệ điều hành, nhờ đó nhiều luồng lệnh thực sự chạy đồng thời chứ không chỉ luân phiên chia thời gian. Đây là nền tảng phần cứng cho lập trình song song với Task Parallel Library hay Parallel.For trong .NET. Hệ một lõi CPU ("A system with a single CPU core.") chính là mono-processor; hệ chỉ có một luồng ("A system with a single thread.") nói về mô hình thực thi phần mềm chứ không phải cấu hình phần cứng; và việc có hay không kết nối mạng ("A system with no network connection.") hoàn toàn không liên quan tới số bộ xử lý.