Đáp án đúng: B. 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) chính là mono-processor; hệ chỉ có một luồng (C) 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 (D) hoàn toàn không liên quan tới số bộ xử lý.
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
Chủ đề học tập
PRN222 - Chương 1: Lập trình mạng trong .NET
Chương 1 môn PRN222. Lập trình mạng trong .NET ở môn PRN222: địa chỉ IP, hostname, DNS, URI, số hiệu cổng, giao thức TCP và UDP. Bộ câu hỏi trắc nghiệm có đáp án và giải thích bao gồm TcpListener với AcceptSocketAsync, TcpClient, UdpClient, Socket, lớp Stream, HttpClient và GetAsync để tiêu thụ web API, WebRequest.Create, phương thức HTTP, mã trạng thái HTTP, header Authorization và khái niệm firewall. Chương 1 giáo trình PRN222, ôn thi FE cho sinh viên FPT University.
PRN222 - Chương 2: Lập trình bất đồng bộ và song song
Chương 2 môn PRN222. Lập trình bất đồng bộ và song song trong PRN222 với C# 12 và .NET 8: async/await, Task, Task.Wait, Task.WhenAll, TaskScheduler và Task Parallel Library. Bộ câu hỏi trắc nghiệm có đáp án và giải thích bao gồm Parallel.For, Parallel.ForEach, PLINQ với AsParallel, namespace System.Threading.Tasks, phân biệt tác vụ I/O-bound với CPU-bound, khi nào Task.Run làm treo giao diện, cùng kiến trúc Von Neumann và công nghệ Hyper-Threading. Chương 2 giáo trình PRN222, ôn thi FE cho sinh viên FPT University.
PRN222 - Chương 3: Dependency Injection và IoC
Chương 3 môn PRN222. Dependency Injection và Inversion of Control trong PRN222: vòng đời service AddSingleton, AddScoped, AddTransient và cách chọn đúng vòng đời. Bộ câu hỏi trắc nghiệm có đáp án và giải thích bao gồm constructor injection, property injection cho phụ thuộc tuỳ chọn, method injection, ServiceCollection, IServiceProvider, container built-in Microsoft.Extensions.DependencyInjection, cùng nguyên lý SOLID với Dependency Inversion và Open Closed. Chương 3 giáo trình PRN222, ôn thi FE cho sinh viên FPT University.
PRN222 - Chương 4: ASP.NET Core MVC
Chương 4 môn PRN222. ASP.NET Core MVC trong PRN222: controller, action, IActionResult, ViewResult, PartialView và attribute HttpPost. Bộ câu hỏi trắc nghiệm có đáp án và giải thích bao gồm directive @model cho strongly-typed view, cú pháp Razor, ViewData và ViewBag dùng chung một kho dữ liệu, bẫy ép kiểu InvalidCastException, model binding, model validation với ModelState.IsValid, attribute Bind và Compare, thư mục wwwroot chứa file tĩnh. Chương 4 giáo trình PRN222, ôn thi FE cho sinh viên FPT University.
PRN222 - Chương 5: ASP.NET Core Razor Pages
Chương 5 môn PRN222. ASP.NET Core Razor Pages trong PRN222: file .cshtml, lớp PageModel kết hợp Controller và ViewModel, handler OnGet và OnPost. Bộ câu hỏi trắc nghiệm có đáp án và giải thích bao gồm directive @page và @model, thư mục Pages làm gốc định tuyến, AddRazorPages trong Program.cs, attribute BindProperty, layout dùng chung _Layout.cshtml, quản lý trạng thái với TempData, Session và Cookies, kiểm tra dữ liệu phía client bằng jQuery Unobtrusive Validation. Chương 5 giáo trình PRN222, ôn thi FE cho sinh viên FPT University.
PRN222 - Chương 6: Blazor Server và WebAssembly
Chương 6 môn PRN222. Blazor trong PRN222: hai mô hình Blazor Server và Blazor WebAssembly, hai chế độ render và ưu nhược điểm của từng loại. Bộ câu hỏi trắc nghiệm có đáp án và giải thích bao gồm component tái sử dụng viết bằng C# và HTML, component gốc App.razor, directive @page, @bind cho binding hai chiều, @inject, khối @code, thuộc tính Parameter nhận dữ liệu từ component cha, Blazor Server cập nhật giao diện qua SignalR, cùng DbContext của Entity Framework Core. Chương 6 giáo trình PRN222, ôn thi FE cho sinh viên FPT University.
PRN222 - Chương 7: SignalR và giao tiếp thời gian thực
Chương 7 môn PRN222. SignalR và giao tiếp thời gian thực trong PRN222: lớp Hub, kết nối bền vững hai chiều giữa client và server, đăng ký dịch vụ bằng AddSignalR. Bộ câu hỏi trắc nghiệm có đáp án và giải thích bao gồm namespace Microsoft.AspNetCore.SignalR, đối tượng Context và Clients, IHubContext để gửi message từ ngoài hub, Groups.AddToGroupAsync, Hub filters, định dạng nhị phân MessagePack, tự động kết nối lại, khởi tạo connection.start và bắt sự kiện phía client. Chương 7 giáo trình PRN222, ôn thi FE cho sinh viên FPT University.
PRN222 - Chương 8: Worker Service và tác vụ nền
Chương 8 môn PRN222. Worker Service và tác vụ nền trong PRN222: lớp BackgroundService, interface IHostedService và namespace Microsoft.Extensions.Hosting. Bộ câu hỏi trắc nghiệm có đáp án và giải thích bao gồm override ExecuteAsync, CancellationToken để dừng dịch vụ êm, vòng lặp kết hợp Task.Delay chạy theo chu kỳ, StartAsync và StopAsync, đăng ký worker trong Program.cs, đọc cấu hình từ appsettings.json qua dependency injection, xử lý message hàng đợi và lý do không dùng Task.Run trong controller. Chương 8 giáo trình PRN222, ôn thi FE cho sinh viên FPT University.
Đề thi trắc nghiệm
Xem tất cảPRN222
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
PRN222_RE_B5_SU26 - Có đáp án và giải thích chi tiết
PRN222
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
Đề thi thử PRN222 - Bộ 50 câu FE có đáp án
PRN222
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
Đề thi chính thức PRN222 SP26 FE - 50 câu có đáp án
PRN222
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
Đề thi lại PRN222 SP26 RE - 50 câu có đáp án
Bắt đầu một phiên học theo môn
Tiến độ của bạn sẽ luôn được tính toán 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.
Bạn cần đăng nhập để bắt đầu học từ ngân hàng câu hỏi và lưu tiến độ theo môn.
Đang tải phân bố độ khó.
Người học chấm 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 ra sao?
Trung bình từ các phiên học hợp lệ.
Ngân hàng câu hỏi
Xem trước · Cuộn vô hạnĐáp án đúng: D. 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ớ (A) chỉ là chi phí phụ; giảm băng thông mạng (B) 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 C sai hẳn.
Đáp án đúng: D. 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.
Đáp án đúng: C. 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 (A) là mẫu cũ dùng cặp phương thức MethodAsync kèm sự kiện MethodCompleted; Asynchronous Programming Model (B) là mẫu còn cũ hơn với cặp BeginXxx/EndXxx và IAsyncResult; mẫu delegate (D) không phải một mô hình bất đồng bộ chuẩn.
Đáp án đúng: B. 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ủ (A) là mô hình Blazor Server; C và D mô tả những môi trường thực thi không đúng với Blazor WebAssembly.
Đáp án đúng: B. 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 A đi ngược mục tiêu vì tạo ra ghép nối chặt; phương án C nói về lớp lớn monolithic, thuộc vấn đề của SRP; phương án D sai hoàn toàn vì DIP dựa chính vào interface.
Đáp án đúng: C. 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 (A); không có chỗ nào phải sửa mã cũ để mở rộng nên chưa động tới OCP (B); và cũng không có interface phình to nào để nói tới ISP (D).
Đáp án đúng: A. 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() (B, C, D) 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ụ.