Hỗ trợ đào tạo

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

8Chủ đề
175Câu hỏi

PRN222 - Lập trình ứng dụng đa nền tảng nâng cao với .NET là môn học xây dựng ứng dụng web đa nền tảng bằng C# 12 và .NET 8 với ASP.NET Core. Ngân hàng câu hỏi trắc nghiệm PRN222 có đáp án bao quát trọn bộ chương trình: lập trình mạng trong .NET (địa chỉ IP, hostname, DNS, URI, giao thức mạng, TCP và UDP, TcpListener, TcpClient, Socket, AcceptSocketAsync, lớp Stream, HttpClient và GetAsync), lập trình bất đồng bộ và song song (async/await, Task, Task.Wait, Task.WhenAll, System.Threading.Tasks, Parallel.ForEach, Task Parallel Library, PLINQ và AsParallel, tác vụ I/O-bound và CPU-bound), Dependency Injection cùng Inversion of Control và nguyên lý SOLID (AddScoped, AddTransient, AddSingleton, vòng đời service, constructor injection, property injection, IServiceProvider, Dependency Inversion, Open Closed), ASP.NET Core MVC (controller, action, IActionResult, ViewResult, HttpPost, Bind, Compare, directive @model, cú pháp Razor, ViewData và ViewBag, PartialView, thư mục wwwroot, model binding, model validation với ModelState), Razor Pages (file .cshtml, thư mục Pages, PageModel, handler OnGet và OnPost, AddRazorPages, BindProperty, _Layout.cshtml, TempData, Session, Cookies, tiêm phụ thuộc vào PageModel, kiểm tra dữ liệu phía client bằng jQuery Unobtrusive Validation), Blazor (Blazor Server và Blazor WebAssembly, hai chế độ render, component, App.razor, directive @page, @bind, @inject, khối @code, thuộc tính Parameter, C# Everywhere), giao tiếp thời gian thực với SignalR (lớp Hub, IHubContext, Clients, Groups.AddToGroupAsync, Hub filters, MessagePack, tự động kết nối lại, namespace Microsoft.AspNetCore.SignalR, AddSignalR, Context, User) và Worker Service cùng BackgroundService (IHostedService, Microsoft.Extensions.Hosting, ExecuteAsync, StartAsync, StopAsync, CancellationToken, appsettings.json, tác vụ nền, xử lý hàng đợi), kèm Entity Framework Core và DbContext. Tài liệu ôn thi FE dành cho sinh viên FPT University.

Chủ đề học tập

Lập trình ứng dụng đa nền tảng nâng cao với .NET

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.

0Bộ đềbộ đề
21+Câu hỏicâu hỏi
đăng ngày
Lập trình ứng dụng đa nền tảng nâng cao với .NET

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.

0Bộ đềbộ đề
23+Câu hỏicâu hỏi
đăng ngày
Lập trình ứng dụng đa nền tảng nâng cao với .NET

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.

0Bộ đềbộ đề
19+Câu hỏicâu hỏi
đăng ngày
Lập trình ứng dụng đa nền tảng nâng cao với .NET

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.

0Bộ đềbộ đề
20+Câu hỏicâu hỏi
đăng ngày
Lập trình ứng dụng đa nền tảng nâng cao với .NET

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.

0Bộ đềbộ đề
23+Câu hỏicâu hỏi
đăng ngày
Lập trình ứng dụng đa nền tảng nâng cao với .NET

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.

0Bộ đềbộ đề
22+Câu hỏicâu hỏi
đăng ngày
Lập trình ứng dụng đa nền tảng nâng cao với .NET

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.

0Bộ đềbộ đề
27+Câu hỏicâu hỏi
đăng ngày
Lập trình ứng dụng đa nền tảng nâng cao với .NET

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.

0Bộ đềbộ đề
20+Câu hỏicâu hỏi
đăng ngày

Đề thi trắc nghiệm

Xem tất cả
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 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.

175Ngân hàng hiện tại
--Tiến độ môn
Số câu hỏi
Độ khó
Phiên sắp tạo
175 câu Chế độ học Không giới hạn Trộn

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.

0Dễ · --
0Trung bình · --
0Khó · --
--Đã học
--Đang nắm chắc
Đăng nhập để xemLần hoàn tất gần nhất

Đang tải phân bố độ khó.

Đăng nhập để bắt đầu học từ ngân hàng câu hỏi, lưu tiến độ theo môn, resume phiên đang dở và cập nhật thống kê dài hạn.
Đánh giá môn học

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ệ.

5.0
1 lượt chấm

Ngân hàng câu hỏi

Xem trước · Cuộn vô hạn
Xem tất cả
Đang hiển thị 8 / 175 câu hỏi
Bấm vào từng câu để xem đáp án
#001
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA system with a single CPU core.
A system with multiple CPUs.ĐÚNG
CA system with a single thread.
DA system with no network connection.
Giải thích

Đá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ý.

#002
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIncreased memory usage.
BReduced network bandwidth.
CSimplified debugging.
Data races and inconsistent results.ĐÚNG
Giải thích

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

#003
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
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.
Both ViewBag and ViewData are dynamically typed.ĐÚNG
Giải thích

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

#004
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AEvent-based Asynchronous Pattern (EAP)
BAsynchronous Programming Model (APM)
Task-based Asynchronous Pattern (TAP)ĐÚNG
DDelegate pattern
Giải thích

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

#005
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AOn the server.
In the browser using WebAssembly.ĐÚNG
CIn a separate desktop application.
DOn a mobile device.
Giải thích

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

#006
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo create tightly coupled classes.
To depend on abstractions, not concretions.ĐÚNG
CTo create large, monolithic classes.
DTo avoid using interfaces.
Giải thích

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

#007
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ASingle Responsibility Principle
BOpen/Closed Principle
Dependency Inversion PrincipleĐÚNG
DInterface Segregation Principle
Giải thích

Đá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).

#008
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
StopAsync()ĐÚNG
BEndAsync()
CseAsync()
DShutdownAsync()
Giải thích

Đá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ụ.

Cuộn để tải thêm…