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
124/175 câuCòn 51
105You need to write a WPF app that fetches data from the web without freezing the UI. Which technique should you use?4 lựa chọnDễ71% trả lời đúng
AThread.Sleep()
BTask.Run() + await
CPLINQ
DBackgroundWorker (obsolete)
Lời giải
Mở trang câu hỏi này →Để viết một ứng dụng WPF mà không bị đóng băng giao diện khi fetch dữ liệu từ web, bạn cần sử dụng một kỹ thuật phù hợp. Có một số lựa chọn như sau: Thread.Sleep(), Task.Run() + await, PLINQ và BackgroundWorker (đã lỗi thời). Tuy nhiên, trong số các lựa chọn này, Task.Run() + await là lựa chọn tốt nhất. Bởi vì Task.Run() cho phép bạn chạy một tác vụ nền, trong khi await cho phép bạn chờ đợi kết quả của tác vụ đó mà không bị đóng băng giao diện. Điều này giúp ứng dụng của bạn vẫn hoạt động trơn tru và không bị chậm lại khi fetch dữ liệu từ web.
106Which architecture does a mono-processor system use?4 lựa chọnDễ86% trả lời đúng
AVon Neumann architecture
BHarvard architecture
CMIMD
DSIMD
Lời giải
Mở trang câu hỏi này →Một hệ thống máy tính mono-processor sử dụng kiến trúc Von Neumann. Kiến trúc này được đặt theo tên của nhà toán học người Hungary John von Neumann. Trong kiến trúc Von Neumann, bộ nhớ chính và bộ xử lý nằm trên cùng một mạch, điều này cho phép dữ liệu được đọc từ bộ nhớ và thực hiện các phép toán trên dữ liệu đó. Điều này giúp giảm thiểu thời gian và tăng hiệu suất của hệ thống. Ngoài ra, kiến trúc Von Neumann cũng cho phép hệ thống thực hiện các phép toán logic và tính toán phức tạp. Nó là một trong những kiến trúc cơ bản của máy tính và được sử dụng rộng rãi trong nhiều loại hệ thống máy tính khác nhau.
107Consider this C# code: services.AddSingleton<ILogger, FileLogger>(); What happens when ILogger is injected into multiple classes?4 lựa chọnDễ86% trả lời đúng
AA new instance of FileLogger is created each time
BThe same FileLogger instance is shared across the application
CA new FileLogger instance is created per request
DThe instance is disposed immediately
Lời giải
Mở trang câu hỏi này →Khi dịch vụ AddSingleton được sử dụng, nó sẽ tạo một đối tượng FileLogger duy nhất và chia sẻ nó cho tất cả các lớp trong ứng dụng. Điều này có nghĩa là khi ILogger được inject vào các lớp khác nhau, tất cả chúng sẽ sử dụng cùng một đối tượng FileLogger. Điều này giúp giảm thiểu việc tạo và quản lý các đối tượng, đồng thời cải thiện hiệu suất của ứng dụng. Tuy nhiên, cần lưu ý rằng AddSingleton không đảm bảo rằng đối tượng sẽ tồn tại mãi mãi, mà chỉ là một đối tượng được tạo và chia sẻ trong suốt vòng đời của ứng dụng.
108Consider this C# code:4 lựa chọncó codeDễ100% trả lời đúng
services.AddTransient<IEmailService, SmtpEmailService>();What happens when IEmailService is requested multiple times?
AOnly one instance is ever created
BA new instance is created each time it's requested
COne instance per request is created
DThe DI container throws an exception
Lời giải
Mở trang câu hỏi này →Khi bạn sử dụng phương thức AddTransient trong Dependency Injection (DI) của C#, nó sẽ tạo ra một đối tượng thực thi IEmailService (SmtpEmailService) mỗi khi bạn yêu cầu nó. Điều này có nghĩa là mỗi lần bạn yêu cầu IEmailService, một đối tượng mới sẽ được tạo ra. Nếu bạn yêu cầu IEmailService nhiều lần, sẽ có nhiều đối tượng SmtpEmailService được tạo ra. Điều này khác với các phương thức khác như AddScoped hoặc AddSingleton, nơi đối tượng sẽ được tạo ra một lần và sử dụng nhiều lần.
109What is "Property Injection"?4 lựa chọnDễ71% trả lời đúng
AInjecting dependencies via constructors.
BInjecting dependencies via method parameters.
CInjecting dependencies by setting public properties.
DInjecting dependencies at compile time.
Lời giải
Mở trang câu hỏi này →Property Injection là một kỹ thuật trong lập trình hướng đối tượng, cho phép bạn cung cấp các phụ thuộc (dependencies) cho một đối tượng bằng cách thiết lập các thuộc tính công khai của nó. Điều này cho phép bạn tách rời việc tạo ra phụ thuộc khỏi việc tạo ra đối tượng chính, giúp tăng tính linh hoạt và dễ dàng bảo trì trong thiết kế hệ thống. Ví dụ, khi bạn muốn tạo một đối tượng User, bạn có thể sử dụng Property Injection để cung cấp cho nó một đối tượng Database để truy cập dữ liệu. Điều này giúp giảm thiểu sự phụ thuộc giữa các lớp và tăng cường khả năng tái sử dụng.
110Which built-in container does .NET Core provide for DI?4 lựa chọnDễ100% trả lời đúng
A
AutofacB
UnityC
Microsoft.Extensions.DependencyInjectionD
NinjectLời giải
Mở trang câu hỏi này →Trong .NET Core, có một số container được sử dụng để quản lý Dependency Injection (DI). Tuy nhiên, container được tích hợp sẵn và được khuyến nghị sử dụng là Microsoft.Extensions.DependencyInjection. Nó cung cấp các tính năng cơ bản để quản lý các đối tượng và dịch vụ trong ứng dụng. Container này cho phép bạn dễ dàng thêm, xóa và quản lý các dịch vụ mà không cần phải viết mã phức tạp. Ngoài ra, nó cũng hỗ trợ các tính năng như đăng ký dịch vụ, tạo đối tượng và quản lý vòng đời của các đối tượng. Sử dụng Microsoft.Extensions.DependencyInjection giúp bạn có thể tập trung vào việc phát triển ứng dụng mà không cần phải lo lắng về việc quản lý các dịch vụ và đối tượng.
111Which protocol is typically included at the start of a URL?4 lựa chọnDễ90% trả lời đúng
AHTTP/HTTPS
BTCP/UDP
CFTP
DAll of the above
Lời giải
Mở trang câu hỏi này →Để trả lời câu hỏi này, chúng ta cần hiểu về cấu trúc của một URL (Uniform Resource Locator). URL là một chuỗi ký tự dùng để xác định vị trí của một tài nguyên trên Internet. Cấu trúc của URL thường bao gồm các phần sau: protocol, domain, path, query và fragment. Trong đó, protocol là phần đầu tiên của URL, xác định giao thức sử dụng để truy cập tài nguyên.
112Which .NET class is used for creating a UDP client?4 lựa chọnDễ100% trả lời đúng
A
TcpListenerB
UdpClientC
TcpClientD
SocketLời giải
Mở trang câu hỏi này →Để tạo một khách hàng UDP trong .NET, bạn cần sử dụng lớp UdpClient. Lớp này cung cấp các phương thức để gửi và nhận dữ liệu UDP. Bạn có thể sử dụng nó để tạo một ứng dụng UDP client đơn giản hoặc phức tạp hơn. Lớp UdpClient được sử dụng rộng rãi trong các ứng dụng mạng, chẳng hạn như trò chơi trực tuyến, ứng dụng truyền phát video và ứng dụng mạng xã hội.
113What is the purpose of a port number in networking?4 lựa chọnDễ80% trả lời đúng
ATo identify a specific network.
BTo identify a specific application or service on a host.
CTo route network traffic.
DTo encrypt network data.
Lời giải
Mở trang câu hỏi này →Số cổng (port number) trong mạng là một số duy nhất được sử dụng để xác định một ứng dụng hoặc dịch vụ cụ thể trên một máy chủ. Mỗi ứng dụng hoặc dịch vụ có thể được kết nối qua một số cổng khác nhau. Ví dụ, ứng dụng email thường sử dụng số cổng 25, trong khi ứng dụng web thường sử dụng số cổng 80. Số cổng giúp phân biệt các ứng dụng hoặc dịch vụ khác nhau trên cùng một máy chủ, từ đó giúp hệ thống mạng phân phối và quản lý lưu lượng mạng một cách hiệu quả.
114What is a "firewall" in network security?4 lựa chọnDễ100% trả lời đúng
AA device that routes network traffic.
BA system designed to prevent unauthorized access to or from a private network.
CA network protocol.
DA type of network cable.
Lời giải
Mở trang câu hỏi này →Một firewall trong bảo mật mạng là một hệ thống được thiết kế để ngăn chặn truy cập không được phép vào hoặc từ một mạng riêng tư. Nó hoạt động như một rào cản giữa mạng riêng tư và mạng công cộng, ngăn chặn các gói tin không mong muốn hoặc có hại từ mạng công cộng vào mạng riêng tư. Firewall thường được sử dụng để bảo vệ các hệ thống và dữ liệu nhạy cảm khỏi các cuộc tấn công mạng, như tấn công từ chối dịch vụ (DDoS), tấn công xâm nhập (hacking), v.v. Nó cũng có thể được sử dụng để kiểm soát lưu lượng truy cập vào và ra khỏi mạng riêng tư, dựa trên các quy tắc và chính sách được thiết lập.
115The WebRequest.Create(Uri) method is used to:4 lựa chọnDễ100% trả lời đúng
AInitialize a new WebRequest for a specific URI scheme
BOpen a database connection
CCreate a physical network cable
DDefine hardware IP addressing
Lời giải
Mở trang câu hỏi này →Método WebRequest.Create(Uri) được sử dụng để tạo một yêu cầu Web mới cho một lược đồ URI cụ thể. Lược đồ URI là một phần quan trọng trong việc xác định địa chỉ URL của một trang web. Khi bạn tạo một yêu cầu Web mới, bạn cần cung cấp một lược đồ URI để xác định loại yêu cầu mà bạn muốn thực hiện. Ví dụ, nếu bạn muốn tải một trang web, bạn sẽ sử dụng lược đồ HTTP, còn nếu bạn muốn tải một tệp tin từ một máy chủ FTP, bạn sẽ sử dụng lược đồ FTP. Phương thức WebRequest.Create(Uri) cho phép bạn tạo một yêu cầu Web mới cho một lược đồ URI cụ thể, giúp bạn thực hiện các yêu cầu Web một cách linh hoạt và hiệu quả.
116What is HttpClient designed for?4 lựa chọnDễ100% trả lời đúng
AConsuming HTTP web APIs
BHandling low-level TCP sockets
CEncrypting HTTP traffic
DServing static files
Lời giải
Mở trang câu hỏi này →HttpClient là một lớp trong .NET Framework được thiết kế để giúp lập trình viên dễ dàng sử dụng và quản lý các yêu cầu HTTP. Nó cho phép bạn gửi và nhận dữ liệu từ các API web HTTP một cách dễ dàng và hiệu quả. HttpClient cung cấp các tính năng như quản lý kết nối, quản lý yêu cầu và phản hồi, cũng như hỗ trợ các phương thức HTTP khác nhau như GET, POST, PUT, DELETE, v.v. Nó cũng hỗ trợ các tính năng như tự động hóa quá trình tải xuống và tải lên tệp, cũng như hỗ trợ các giao thức HTTP khác nhau như HTTP/1.1 và HTTP/2. Tóm lại, HttpClient được thiết kế để giúp lập trình viên dễ dàng sử dụng và quản lý các yêu cầu HTTP, giúp giảm thiểu thời gian và công sức trong quá trình phát triển ứng dụng.
117Consider this C# code:4 lựa chọncó codeDễ89% trả lời đúng
services.AddScoped<IRepository, CustomerRepository>();In an ASP.NET Core web app, how often is CustomerRepository created?
AOnce per application
BOnce per request
COnce per controller
DEvery time it's injected
Lời giải
Mở trang câu hỏi này →Trong ASP.NET Core, khi bạn sử dụng phương thức AddScoped trong dịch vụ Dependency Injection, thì đối tượng được tạo ra sẽ được lưu giữ trong suốt vòng đời của yêu cầu HTTP. Điều này có nghĩa là đối tượng sẽ được tạo ra một lần khi ứng dụng nhận được yêu cầu HTTP đầu tiên và sẽ được sử dụng cho đến khi yêu cầu HTTP đó được hoàn tất. Sau đó, đối tượng sẽ được hủy bỏ và tái tạo lại khi ứng dụng nhận được yêu cầu HTTP tiếp theo. Vì vậy, trong trường hợp của bạn, đối tượng CustomerRepository sẽ được tạo ra một lần khi ứng dụng nhận được yêu cầu HTTP đầu tiên và sẽ được sử dụng cho đến khi yêu cầu HTTP đó được hoàn tất.
118Consider this C# code:4 lựa chọncó codeDễ78% trả lời đúng
public IActionResult Index() {
ViewData["Count"] = "10";
return View();
}In Razor: <p>@((int)ViewData["Count"] + 5)</p> What happens?
ADisplays 15
BDisplays 105
CInvalidCastException
DNothing
Lời giải
Mở trang câu hỏi này →Khi chạy đoạn mã trên, chúng ta sẽ gặp một lỗi. Lỗi này xảy ra vì trong đoạn mã C#, chúng ta đã gán giá trị "10" vào ViewData với key là "Count". Tuy nhiên, trong Razor, chúng ta đã cố gắng ép giá trị này thành một số nguyên (int) để thực hiện phép tính cộng. Nhưng "10" không phải là một số nguyên, mà là một chuỗi. Do đó, khi chúng ta cố gắng ép nó thành int, sẽ xảy ra lỗi InvalidCastException.
119Which of the following attributes validates that two properties in a model match?4 lựa chọnDễ100% trả lời đúng
A[Compare]
B[Required]
C[StringLength]
D[Range]
Lời giải
Mở trang câu hỏi này →Để xác minh hai thuộc tính trong một mô hình khớp nhau, bạn cần sử dụng thuộc tính [Compare]. Ví dụ, khi bạn muốn đảm bảo rằng mật khẩu và xác nhận mật khẩu phải trùng nhau, bạn có thể sử dụng [Compare] để thực hiện việc này. Ngoài ra, [Compare] cũng có thể được sử dụng để xác minh các thuộc tính khác như email hoặc số điện thoại.
120Which folder typically contains static files (CSS, JavaScript, images) in an ASP.NET Core MVC project?4 lựa chọnDễ71% trả lời đúng
A"Views"
B"Models"
C"Controllers"
D"wwwroot"
Lời giải
Mở trang câu hỏi này →Trong một dự án ASP.NET Core MVC, thư mục thường chứa các tệp tin tĩnh (CSS, JavaScript, hình ảnh) là "wwwroot". Thư mục này được sử dụng để lưu trữ các tệp tin tĩnh mà không cần phải biên dịch lại khi chạy ứng dụng. Điều này giúp tăng tốc độ tải trang và giảm thiểu thời gian chờ đợi. Ngoài ra, thư mục "wwwroot" cũng có thể chứa các tệp tin khác như hình ảnh, video, âm thanh, v.v. Nó là một phần quan trọng của cấu trúc dự án ASP.NET Core MVC và giúp tạo điều kiện thuận lợi cho việc phát triển và triển khai ứng dụng.
121What is the purpose of the @ symbol in Razor syntax?4 lựa chọnDễ100% trả lời đúng
ATo define a CSS rule.
BTo indicate a JavaScript block.
CTo switch between HTML and C# code.
DTo define a database query.
Lời giải
Mở trang câu hỏi này →Trong Razor syntax, @ được sử dụng để chỉ định chuyển đổi giữa mã HTML và mã C# code. Khi bạn sử dụng @ trước một đoạn mã C#, nó sẽ được biên dịch thành mã HTML có thể được trình duyệt hiểu. Điều này cho phép bạn dễ dàng kết hợp mã C# và mã HTML trong một file Razor. Ví dụ, bạn có thể sử dụng @ để hiển thị giá trị của một biến C# trong một thẻ HTML. Ngoài ra, @ còn được sử dụng để gọi các phương thức của một đối tượng C# và hiển thị kết quả trong một thẻ HTML. Tóm lại, @ là một ký tự quan trọng trong Razor syntax, giúp bạn dễ dàng kết hợp mã C# và mã HTML trong một file.
122What is the purpose of the [Bind] attribute in ASP.NET Core MVC?4 lựa chọnDễ100% trả lời đúng
ATo specify which properties of a model should be bound from the request.
BTo encrypt data.
CTo manage database connections.
DTo manage user sessions.
Lời giải
Mở trang câu hỏi này →Trong ASP.NET Core MVC, [Bind] là một thuộc tính quan trọng giúp xác định các thuộc tính của mô hình (model) nào sẽ được liên kết (bound) từ yêu cầu (request). Điều này cho phép bạn kiểm soát dữ liệu được gửi từ client đến server và ngăn chặn các thuộc tính không mong muốn được liên kết. Ví dụ, khi bạn tạo một form để thêm mới một tài khoản mới, bạn có thể sử dụng [Bind] để chỉ liên kết các thuộc tính cần thiết như tên, địa chỉ email và mật khẩu, mà không liên kết các thuộc tính khác như ID hoặc ngày tạo.
123Which statement is true about Model Binding in Razor Pages?4 lựa chọnDễ100% trả lời đúng
AOnly works with GET requests
BMaps HTTP request data to PageModel properties
CMust always use TempData
DCannot bind form values
Lời giải
Mở trang câu hỏi này →Model Binding trong Razor Pages là một tính năng cho phép ánh xạ dữ liệu từ yêu cầu HTTP đến các thuộc tính của PageModel. Điều này cho phép bạn dễ dàng lấy dữ liệu từ yêu cầu HTTP và sử dụng nó trong trang Razor Pages của mình. Ví dụ, nếu bạn có một trang Razor Pages với một form và bạn muốn lấy dữ liệu từ form đó, bạn có thể sử dụng Model Binding để ánh xạ dữ liệu từ form đến các thuộc tính của PageModel. Điều này giúp giảm thiểu mã code và làm cho trang Razor Pages của bạn trở nên dễ dàng hơn để quản lý.
124Which statement is correct about Model Binding?4 lựa chọnDễ100% trả lời đúng
AIt only works with query strings
BIt maps HTTP request data to controller action parameters
CIt must always use TempData
DIt cannot bind complex types
Lời giải
Mở trang câu hỏi này →Model Binding trong ASP.NET là một tính năng giúp ánh xạ dữ liệu từ yêu cầu HTTP đến các tham số của hành động controller. Điều này cho phép bạn dễ dàng lấy dữ liệu từ các nguồn khác nhau như query string, form data, JSON, v.v. và ánh xạ nó vào các tham số của hành động controller. Ví dụ, nếu bạn có một hành động controller với tham số tên 'name', Model Binding sẽ ánh xạ giá trị của 'name' từ query string hoặc form data vào tham số 'name' của hành động controller. Điều này giúp giảm thiểu số lượng mã cần thiết để ánh xạ dữ liệu và làm cho mã của bạn trở nên dễ đọc và dễ bảo trì hơn.