Đề ôn · PRN222

PRN222 Lập trình ứng dụng đa nền tảng nâng cao với .NET – Bộ ôn tập thi lại số 1 (50 câu)

50 câu · Thi lại · Spring 2026

50câu trong đề
PRN222môn

Câu hỏi của đề

15/50 câuCòn 35
1The PageModel in Razor Pages is best described as:4 lựa chọnDễ100% trả lời đúng
AA combination of Controller and ViewModel
BA replacement for HTML
CAn Entity Framework class
DA database entity
Lời giải
PageModel trong Razor Pages được mô tả tốt nhất là một sự kết hợp giữa Controller và ViewModel. Nó chứa các thuộc tính và phương thức để xử lý dữ liệu và giao diện người dùng. PageModel thừa hưởng từ PageModelBase và có thể được sử dụng để tạo ra các trang web động. Nó cho phép bạn tách biệt logic kinh doanh và giao diện người dùng, giúp dễ dàng bảo trì và mở rộng ứng dụng. PageModel cũng cung cấp các tính năng như validation, authorization và caching, giúp bạn có thể xây dựng các ứng dụng web mạnh mẽ và hiệu quả.
Mở trang câu hỏi này →
2Dependency Inversion Principle states:4 lựa chọnDễ100% trả lời đúng
AHigh-level modules should depend on low-level modules
BBoth high-level and low-level modules should depend on abstractions
CAbstractions should depend on details
DInterfaces should depend on classes
Lời giải
Sự nguyên tắc phụ thuộc ngược (Dependency Inversion Principle) là một nguyên tắc thiết kế quan trọng trong lập trình hướng đối tượng. Nó cho rằng các mô-đun cao cấp (high-level modules) và mô-đun thấp cấp (low-level modules) nên phụ thuộc vào các abstraction (tính trừu tượng) chứ không phải vào nhau. Điều này có nghĩa là thay vì các mô-đun cao cấp phụ thuộc vào các mô-đun thấp cấp cụ thể, chúng nên phụ thuộc vào các interface hoặc abstraction chung. Điều này giúp giảm sự phụ thuộc giữa các mô-đun và tăng tính linh hoạt, dễ dàng thay đổi và mở rộng hệ thống.
Mở trang câu hỏi này →
3Which code will block the current thread?4 lựa chọnDễ83% trả lời đúng
Aawait task;
Btask.Wait();
Ctask.ContinueWith(...)
Dawait Task.WhenAll(tasks);
Lời giải

Để trả lời câu hỏi này, chúng ta cần hiểu về cách sử dụng các phương thức chờ đợi (wait) trong lập trình đa luồng. Trong lập trình đa luồng, các phương thức chờ đợi được sử dụng để ngăn chặn luồng hiện tại (thread) thực hiện các tác vụ khác cho đến khi một tác vụ cụ thể được hoàn thành. Có hai phương thức chờ đợi được sử dụng trong câu hỏi này: await task; và task.Wait();. await task; là một phương thức chờ đợi non-bloc (non-blocking), nó cho phép luồng hiện tại thực hiện các tác vụ khác trong khi chờ đợi tác vụ được chờ đợi được hoàn thành. Điều này có nghĩa là nếu có nhiều tác vụ được chờ đợi, luồng hiện tại sẽ không bị chặn. task.Wait(); là một phương thức chờ đợi bloc (blocking), nó sẽ ngăn chặn luồng hiện tại thực hiện các tác vụ khác cho đến khi tác vụ được chờ đợi được hoàn thành. Điều này có nghĩa là nếu có nhiều tác vụ được chờ đợi, luồng hiện tại sẽ bị chặn. task.ContinueWith(...) và await Task.WhenAll(tasks); không phải là phương thức chờ đợi, mà là các phương thức được sử dụng để thực hiện các tác vụ khác khi một tác vụ được chờ đợi được hoàn thành hoặc khi tất cả các tác vụ được chờ đợi được hoàn thành. Tóm lại, để trả lời câu hỏi này, chúng ta cần hiểu về cách sử dụng các phương thức chờ đợi non-bloc và bloc trong lập trình đa luồng.

Mở trang câu hỏi này →
4What is the primary purpose of ASP.NET Core Razor Pages?4 lựa chọnDễ100% trả lời đúng
ABuilding desktop applications.
BBuilding page-centric web applications with simplified development.
CBuilding mobile applications.
DBuilding database management systems.
Lời giải
ASP.NET Core Razor Pages là một framework được sử dụng để xây dựng các ứng dụng web tập trung vào trang (page-centric) với quy trình phát triển được đơn giản hóa. Mục đích chính của nó là cung cấp một cách tiếp cận linh hoạt và dễ sử dụng để xây dựng các ứng dụng web, cho phép các nhà phát triển tập trung vào việc xây dựng các trang web và chức năng của chúng, thay vì phải lo lắng về các chi tiết kỹ thuật. Với Razor Pages, các nhà phát triển có thể tạo ra các ứng dụng web nhanh chóng và hiệu quả, đồng thời cũng có thể tận dụng được các tính năng và công nghệ tiên tiến của ASP.NET Core.
Mở trang câu hỏi này →
5What is the Parallel.ForEach method used for?4 lựa chọnDễ86% trả lời đúng
AIterating over a collection in parallel.
BAsynchronous network operations.
CManaging system resources.
DEncrypting data.
Lời giải
Métodu Parallel.ForEach được sử dụng để lặp qua một tập hợp dữ liệu song song. Điều này có nghĩa là nó sẽ thực hiện các tác vụ lặp lại đồng thời trên nhiều luồng, giúp tăng tốc độ thực hiện và hiệu suất của chương trình. Điều này đặc biệt hữu ích khi bạn cần xử lý một lượng lớn dữ liệu và muốn tận dụng tối đa khả năng của máy tính. Ví dụ, nếu bạn cần đọc dữ liệu từ một tập tin lớn, bạn có thể sử dụng Parallel.ForEach để đọc dữ liệu đồng thời từ nhiều phần của tập tin, giúp giảm thời gian thực hiện.
Mở trang câu hỏi này →
6What is the purpose of the IServiceProvider interface?4 lựa chọnDễ100% trả lời đúng
ATo define database connections.
BTo resolve registered services from the DI container.
CTo define network protocols.
DTo define user interface elements.
Lời giải
Lớp IServiceProvider là một giao diện quan trọng trong mô hình Dependency Injection (DI). Mục đích chính của giao diện này là cung cấp một cách thức để giải quyết các dịch vụ đã được đăng ký trong container DI. Khi một ứng dụng sử dụng mô hình DI, nó sẽ đăng ký các dịch vụ cần thiết vào container. Sau đó, khi ứng dụng cần sử dụng một dịch vụ, nó sẽ sử dụng giao diện IServiceProvider để giải quyết dịch vụ đó từ container. Điều này giúp ứng dụng trở nên linh hoạt và dễ dàng quản lý các dịch vụ của mình.
Mở trang câu hỏi này →
7Which of the following is a drawback of Blazor WebAssembly?4 lựa chọnTrung bình50% trả lời đúng
ARequires .NET runtime installed on the client
BLarger initial download size
CNo component model
DNo data binding support
Lời giải
Blazor WebAssembly là một công nghệ phát triển ứng dụng web sử dụng mã nguồn mở .NET. Mặc dù nó mang lại nhiều lợi ích, nhưng cũng có một số nhược điểm. Một trong những nhược điểm chính của Blazor WebAssembly là kích thước tải về ban đầu lớn hơn so với các công nghệ khác. Điều này có thể gây khó khăn cho người dùng có kết nối internet chậm hoặc thiết bị có bộ nhớ hạn chế. Ngoài ra, kích thước lớn của Blazor WebAssembly cũng có thể ảnh hưởng đến hiệu suất của ứng dụng. Tuy nhiên, cần lưu ý rằng kích thước tải về ban đầu có thể được giảm thiểu bằng cách sử dụng các công nghệ như mã hóa và nén.
Mở trang câu hỏi này →
ASorting a large array.
BRendering a complex 3D scene.
CDownloading a file from the internet.
DPerforming a CPU-intensive calculation.
Lời giải
Một ví dụ về hoạt động I/O có thể được thực hiện bằng cách lập trình đồng bộ là tải một tệp từ internet. Hoạt động I/O là những hoạt động liên quan đến nhập/xuất dữ liệu từ các thiết bị ngoại vi như mạng internet, đĩa cứng, v.v. Các hoạt động này thường chậm hơn so với các hoạt động tính toán và có thể được thực hiện đồng thời với các hoạt động khác. Lập trình đồng bộ là một kỹ thuật lập trình cho phép các hoạt động I/O được thực hiện đồng thời với các hoạt động khác, giúp tăng hiệu suất và giảm thời gian chờ đợi. Ví dụ, khi tải một tệp từ internet, bạn có thể thực hiện các hoạt động khác trong khi chờ đợi tệp được tải xong.
Mở trang câu hỏi này →
9What is the purpose of the ViewBag or ViewData in ASP.NET Core MVC?4 lựa chọnDễ100% trả lời đúng
ATo manage database connections.
BTo pass data from a controller to a view.
CTo encrypt data.
DTo manage user sessions.
Lời giải
Trong ASP.NET Core MVC, ViewBag và ViewData là hai đối tượng được sử dụng để truyền dữ liệu từ controller sang view. Chúng giúp bạn có thể dễ dàng chia sẻ dữ liệu giữa các lớp controller và view mà không cần phải sử dụng đến các phương thức phức tạp. ViewBag và ViewData đều là các đối tượng động, có thể được sử dụng để truyền dữ liệu của bất kỳ loại nào, bao gồm cả các đối tượng phức tạp như danh sách hoặc các đối tượng có liên quan. Việc sử dụng ViewBag và ViewData giúp bạn có thể dễ dàng quản lý dữ liệu và giảm thiểu sự phức tạp trong việc chia sẻ dữ liệu giữa các lớp.
Mở trang câu hỏi này →
10What is the role of the IHubContext interface?4 lựa chọnDễ100% trả lời đúng
ATo manage database connections.
BTo allow sending messages from outside a hub class.
CTo encrypt data.
DTo manage user sessions.
Lời giải
IHubContext là một giao diện quan trọng trong ASP.NET Core SignalR, cho phép bạn gửi tin nhắn từ bên ngoài một lớp trung tâm (hub class). Điều này cho phép bạn tương tác với các phương thức trong lớp trung tâm từ các lớp khác, giúp tăng tính linh hoạt và khả năng mở rộng của ứng dụng. Khi sử dụng IHubContext, bạn có thể gửi tin nhắn đến các khách hàng (clients) đã kết nối với lớp trung tâm, giúp cập nhật trạng thái hoặc thực hiện các hành động khác. Điều này đặc biệt hữu ích khi bạn cần tương tác với lớp trung tâm từ các lớp khác trong ứng dụng.
Mở trang câu hỏi này →
11Which of the following is NOT a type of Dependency Injection?4 lựa chọnDễ71% trả lời đúng
AConstructor Injection
BSetter Injection
CMethod Injection
DDatabase Injection
Lời giải
Tùy chọn không phải là loại Dependency Injection là Database Injection. Dependency Injection là một kỹ thuật lập trình giúp giảm sự phụ thuộc giữa các lớp và các thành phần trong một ứng dụng. Có ba loại Dependency Injection chính: Constructor Injection, Setter Injection và Method Injection. Constructor Injection là kỹ thuật truyền đối tượng phụ thuộc vào một lớp thông qua phương thức constructor của lớp đó. Điều này giúp giảm sự phụ thuộc giữa các lớp và tăng tính linh hoạt của ứng dụng. Setter Injection là kỹ thuật truyền đối tượng phụ thuộc vào một lớp thông qua phương thức setter của lớp đó. Điều này giúp giảm sự phụ thuộc giữa các lớp và tăng tính linh hoạt của ứng dụng. Method Injection là kỹ thuật truyền đối tượng phụ thuộc vào một lớp thông qua phương thức khác của lớp đó. Điều này giúp giảm sự phụ thuộc giữa các lớp và tăng tính linh hoạt của ứng dụng. Database Injection là một kỹ thuật tấn công bảo mật, không phải là một loại Dependency Injection. Nó liên quan đến việc sử dụng mã SQL để tấn công các ứng dụng web và lấy được dữ liệu nhạy cảm.
Mở trang câu hỏi này →
12What is the role of the _Layout.cshtml file in Razor Pages?4 lựa chọnDễ100% trả lời đúng
ATo define a database schema.
BTo provide a common layout for multiple Razor Pages.
CTo encrypt data.
DTo manage user sessions.
Lời giải
Trong Razor Pages, _Layout.cshtml là một file quan trọng giúp định nghĩa cấu trúc chung cho nhiều trang Razor Pages. Nó giống như một bản thiết kế chung cho các trang web, bao gồm các phần như header, footer, navigation menu, v.v. Mục đích chính của _Layout.cshtml là giúp tạo ra một giao diện thống nhất cho toàn bộ ứng dụng, từ đó dễ dàng quản lý và cập nhật các phần tử giao diện.
Mở trang câu hỏi này →
13Consider this C# code:4 lựa chọncó codeDễ89% trả lời đúng
Đề bài
public IActionResult Index() {
  ViewBag.Count = 10;
  return View();
}

Razor: <p>@(ViewBag.Count + 5)</p> What happens?

A15
B105
CError
DNothing
Lời giải
Khi chạy mã C# trên, chúng ta sẽ thấy kết quả là 15. Lý do là vì trong phương thức Index(), chúng ta đã gán giá trị 10 vào biến ViewBag.Count. Sau đó, trong Razor, chúng ta sử dụng biểu thức @ để truy cập vào giá trị của ViewBag.Count và thực hiện phép tính cộng với 5. Kết quả của phép tính này sẽ được hiển thị trên màn hình. Điều này cho thấy rằng ViewBag là một cách để truyền dữ liệu từ controller sang view trong ứng dụng ASP.NET.
Mở trang câu hỏi này →
14How many tasks does the following code create?4 lựa chọncó codeDễ86% trả lời đúng
Đề bài
for (int i = 0; i < 3; i++) {
  Task t = new Task(() => Console.WriteLine(i));
  t.Start();
}
A1
B2
C3
D6
Lời giải
Mã nguồn trên tạo ra 3 nhiệm vụ. Khi sử dụng vòng lặp for để tạo ra các nhiệm vụ, mỗi lần lặp sẽ tạo ra một nhiệm vụ mới. Trong trường hợp này, mã nguồn sẽ lặp 3 lần, tạo ra 3 nhiệm vụ. Tuy nhiên, cần lưu ý rằng mỗi nhiệm vụ sẽ thực hiện một hành động tương tự, đó là in ra giá trị của biến i. Do đó, mặc dù có 3 nhiệm vụ nhưng giá trị in ra sẽ chỉ là 0, 1 và 2 lần lượt trong 3 nhiệm vụ đầu tiên. Nhiệm vụ thứ 4 sẽ không được tạo ra vì điều kiện vòng lặp là i < 3.
Mở trang câu hỏi này →
ATcpClient
BUdpClient
CSocket
DHttpClient
Lời giải
Trong .NET, để thực hiện các yêu cầu HTTP và nhận lại các phản hồi HTTP, bạn cần sử dụng lớp HttpClient. Lớp này cung cấp các phương thức để gửi yêu cầu HTTP và nhận lại phản hồi, giúp bạn có thể tương tác với các dịch vụ web một cách dễ dàng. HttpClient được thiết kế để hỗ trợ các yêu cầu HTTP khác nhau, bao gồm cả GET, POST, PUT, DELETE và nhiều hơn nữa. Nó cũng cung cấp các tính năng như tự động quản lý kết nối, hỗ trợ các tiêu chuẩn HTTP mới nhất và khả năng tùy chỉnh cao. Vì vậy, nếu bạn cần thực hiện các yêu cầu HTTP trong ứng dụng .NET của mình, HttpClient là lựa chọn tốt nhất.
Mở trang câu hỏi này →
Đánh giá quiz

Người học chấm PRN222 Lập trình ứng dụng đa nền tảng nâng cao với .NET – Bộ ôn tập thi lại số 1 (50 câu) ra sao?

Trung bình từ các phiên học hợp lệ.

5.0
1 lượt chấm