Qiz HUB Logo
QizHUB
QUESTION LIBRARY

Trang chủ
Môn học
Chủ đề
Đề thi
Câu hỏi
Thẻ

Đăng nhập
Qiz HUB Logo
QizHUB
QUESTION LIBRARY PLATFORM
Trang chủMôn họcChủ đềNhóm họcThẻ
Luyện đề ngayĐăng nhập
PrivacyTermsCookieAdsads.txtrobotssitemap
Trang chủMôn họcAdvanced 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
Đề thi trắc nghiệm

Đề thi chính thức PRN222 SP26 FE - 50 câu có đáp án

50Câu hỏi
Advanced Cross-Platform Application Programming With .NET - Lập trình ứng dụng đa nền tảng nâng cao với .NETMôn học

01Chọn hình thức làm bài

02Số câu hỏi

03Thời gian làm bài(chỉ áp dụng cho thi thử)

04Tuỳ chọn

Trộn thứ tự câu hỏi

Xáo trộn câu để tránh học vẹt.

Trộn thứ tự đáp án

Xáo trộn vị trí A B C D ở từng câu.

Tổng quan lượt làm

Hình thức
Chế độ học
Số câu
50 câu
Thời gian
Không giới hạn
Bạn cần đăng nhập để làm bài, lưu tiến độ và tiếp tục lần học trước.

Vui lòng đăng nhập để bắt đầu làm bài.

Tổng câu hỏi

50

Thời gian làm bài

Không giới hạn

Lượt xem

1

Câu có lời giải

50

Câu có link chi tiết

50

Xem trước 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
Sends emails every minute.ĐÚNG
BSends emails once.
CLogs emails only.
DIgnores shutdown signals.
Giải thích

Dịch vụ EmailWorker được triển khai dựa trên lớp BackgroundService trong C#. Lớp này thực hiện việc gửi email một cách lặp đi lặp lại. Trong phương thức ExecuteAsync, dịch vụ này sẽ tiếp tục gửi email cho đến khi nhận được tín hiệu hủy bỏ. Trong mỗi vòng lặp, dịch vụ sẽ gọi phương thức SendEmails để gửi email và sau đó chờ 1 phút trước khi tiếp tục. Điều này cho thấy dịch vụ sẽ gửi email mỗi phút một lần.

#002
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo manage user sessions.
To represent a database session and provide methods for querying and saving data.ĐÚNG
CTo encrypt data.
DTo render UI components.
Giải thích

DbContext trong một ứng dụng Blazor Web App sử dụng Entity Framework Core là một lớp quan trọng giúp quản lý kết nối cơ sở dữ liệu và cung cấp các phương thức để truy vấn và lưu trữ dữ liệu. Nó đại diện cho một phiên làm việc với cơ sở dữ liệu, cho phép bạn thực hiện các hoạt động như thêm, sửa, xóa và tìm kiếm dữ liệu. DbContext cũng cung cấp các phương thức để quản lý các thay đổi dữ liệu, chẳng hạn như Add, Update và Delete. Ngoài ra, nó còn giúp bạn quản lý các mối quan hệ giữa các bảng trong cơ sở dữ liệu. Tóm lại, DbContext là một lớp quan trọng giúp bạn tương tác với cơ sở dữ liệu một cách hiệu quả và an toàn.

#003
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AOnce per application
Once per requestĐÚNG
COnce per controller
DEvery time it's injected
Giải thích

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.

#004
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AOnly works with GET requests
Maps HTTP request data to PageModel propertiesĐÚNG
CMust always use TempData
DCannot bind form values
Giải thích

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

#005
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIt only works with query strings
It maps HTTP request data to controller action parametersĐÚNG
CIt must always use TempData
DIt cannot bind complex types
Giải thích

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.

#006
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AData is updated once a day.
Immediate response from server to client.ĐÚNG
CClient periodically requests updates.
DData is processed only after user refreshes the page.
Giải thích

Trong bối cảnh ứng dụng web thời gian thực, "thời gian thực" chủ yếu có nghĩa là gì? Đây là một khái niệm quan trọng trong việc xây dựng các ứng dụng web thời gian thực. Nói một cách đơn giản, "thời gian thực" có nghĩa là dữ liệu được cập nhật ngay lập tức và phản hồi từ máy chủ đến khách hàng cũng phải ngay lập tức. Điều này cho phép người dùng nhận được thông tin mới nhất và cập nhật ngay lập tức, mà không cần phải chờ đợi. Ví dụ, khi bạn gửi một tin nhắn trên ứng dụng thời gian thực, bạn sẽ nhận được phản hồi ngay lập tức, chứ không phải sau một khoảng thời gian chờ đợi. Điều này đòi hỏi các ứng dụng web phải có khả năng xử lý và phản hồi nhanh chóng, để đảm bảo trải nghiệm người dùng tốt nhất.

#007
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
HTTP/HTTPSĐÚNG
BTCP/UDP
CFTP
DAll of the above
Giải thích

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

#008
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define a constant.
To pause execution until an asynchronous operation completes.ĐÚNG
CTo create a new thread.
DTo handle exceptions.
Giải thích

Từ khóa await trong C# được sử dụng để tạm dừng thực thi chương trình cho đến khi một hoạt động bất đồng bộ hoàn thành. Điều này giúp chương trình có thể tiếp tục thực thi các hoạt động khác trong khi chờ đợi kết quả của hoạt động bất đồng bộ. Khi sử dụng await, chương trình sẽ không bị đứng yên và chờ đợi kết quả của hoạt động bất đồng bộ, mà sẽ tiếp tục thực thi các hoạt động khác và khi kết quả của hoạt động bất đồng bộ sẵn sàng, chương trình sẽ tiếp tục thực thi từ điểm mà nó đã tạm dừng. Điều này giúp chương trình trở nên hiệu suất cao hơn và dễ dàng quản lý hơn.

#009
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AModel.Check()
ModelState.IsValidĐÚNG
CValidateModel()
DModel.IsValid()
Giải thích

Để kiểm tra xem mô hình (model) có hợp lệ sau khi submit form trong một phương thức xử lý Razor Page, bạn cần sử dụng phương thức ModelState.IsValid. Phương thức này sẽ kiểm tra xem tất cả các thuộc tính của mô hình có được nhập đúng hay không, và trả về giá trị boolean (true hoặc false) để chỉ ra mô hình có hợp lệ hay không. Nếu mô hình hợp lệ, bạn có thể thực hiện các hành động cần thiết. Ví dụ: public IActionResult OnPost() { if (ModelState.IsValid) { // Xử lý dữ liệu } return Page(); }

#010
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATcpListener
UdpClientĐÚNG
CTcpClient
DSocket
Giải thích

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

#011
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo create new threads directly
To handle queuing of tasks onto threadsĐÚNG
CTo manage garbage collection of tasks
DTo provide thread synchronization
Giải thích

Trong C#, lớp TaskScheduler đóng vai trò chính là quản lý việc sắp xếp các tác vụ (task) vào các luồng (thread). Lớp này chịu trách nhiệm đảm bảo rằng các tác vụ được thực hiện một cách hiệu quả và an toàn. Khi bạn tạo một tác vụ mới, nó sẽ được thêm vào hàng đợi của TaskScheduler, và sau đó sẽ được thực hiện bởi một luồng thích hợp. Điều này giúp tránh được tình trạng xung đột giữa các tác vụ và đảm bảo rằng các tác vụ được thực hiện một cách đồng bộ. Ngoài ra, lớp TaskScheduler cũng cung cấp các phương thức để quản lý và điều khiển các tác vụ, chẳng hạn như hủy bỏ tác vụ, chờ đợi tác vụ hoàn thành, v.v.

#012
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A@page
@modelĐÚNG
C@pagemodel
D@controller
Giải thích

Trong Razor Pages, một trang web được tạo thành từ các phần tử nhỏ hơn được gọi là các trang. Mỗi trang được định nghĩa bởi một lớp riêng biệt. Để định nghĩa một trang, chúng ta sử dụng một số thuộc tính đặc biệt trong Razor. Trong đó, thuộc tính '@page' được sử dụng để định nghĩa mô hình trang. Nó cho phép chúng ta chỉ định tên của trang và các thuộc tính khác mà trang đó có thể sử dụng.

#013
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
System.Threading.TasksĐÚNG
BSystem.Linq
CSystem.Collections
DSystem.IO
Giải thích

Task Parallel Library (TPL) là một thư viện trong .NET Framework cho phép thực hiện các tác vụ song song và đồng bộ. Để sử dụng TPL, chúng ta cần sử dụng không gian tên System.Threading.Tasks. Không gian tên này cung cấp các lớp và phương thức để tạo và quản lý các tác vụ song song, chẳng hạn như Task, Parallel, ParallelOptions, v.v. Ngoài ra, không gian tên này cũng cung cấp các phương thức để đồng bộ các tác vụ, chẳng hạn như Wait, Result, v.v. Vì vậy, không gian tên System.Threading.Tasks là không gian tên mà Task Parallel Library (TPL) thuộc về.

#014
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Program.csĐÚNG
BApp.cs
Cappsettings.json
DlaunchSettings.json
Giải thích

Trong một ứng dụng .NET Core, Worker Service được cấu hình ở đâu?

#015
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A/Controllers
B/Views
/PagesĐÚNG
D/Models
Giải thích

Razor Pages sử dụng thư mục nào làm gốc cho routing mặc định? Khi tạo một ứng dụng Razor Pages mới, .NET Core sẽ tạo ra một số thư mục và file cơ bản. Trong đó, thư mục quan trọng là /Pages. Thư mục này chứa các file Razor Pages, mỗi file tương ứng với một trang web. Khi bạn tạo một file Razor Pages mới, .NET Core sẽ tự động tạo ra một đường dẫn routing cho nó. Đường dẫn này được xác định bởi tên file và tên phương thức trong file đó. Ví dụ, nếu bạn tạo một file Index.cshtml trong thư mục Pages, đường dẫn routing mặc định sẽ là /Pages/Index. Điều này cho phép bạn truy cập trang web dễ dàng thông qua đường dẫn này.

#016
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ADisplays 15
BDisplays 105
InvalidCastExceptionĐÚNG
DNothing
Giải thích

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.

#017
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ASystem.Threading
Microsoft.Extensions.HostingĐÚNG
CMicrosoft.Extensions.Logging
DSystem.ServiceProcess
Giải thích

Namespace chứa lớp BackgroundService là Microsoft.Extensions.Hosting. Lớp BackgroundService là một lớp cơ bản trong framework .NET Core, được sử dụng để tạo các dịch vụ chạy nền. Nó cho phép bạn tạo các dịch vụ có thể chạy nền mà không cần phải tạo một ứng dụng Windows Service. Để sử dụng BackgroundService, bạn cần thêm Microsoft.Extensions.Hosting vào dự án của mình. Sau đó, bạn có thể tạo một lớp con của BackgroundService và thực hiện các tác vụ cần thiết trong phương thức Run().

#018
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AStatic and dynamic.
BClient-side and server-side.
WebAssembly and Server.ĐÚNG
DLocal and remote.
Giải thích

Blazor cung cấp hai chế độ rendering chính là WebAssembly và Server. Chế độ WebAssembly cho phép chạy ứng dụng Blazor trên máy khách (client-side), trong khi chế độ Server cho phép chạy ứng dụng Blazor trên máy chủ (server-side). Chế độ WebAssembly sử dụng công nghệ WebAssembly để biên dịch mã C# thành mã máy tính có thể chạy trên trình duyệt, trong khi chế độ Server sử dụng ASP.NET Core để chạy ứng dụng Blazor trên máy chủ. Mỗi chế độ rendering có ưu và nhược điểm riêng, và người dùng có thể chọn chế độ phù hợp với nhu cầu của mình.

#019
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aconnect()
start()ĐÚNG
Copen()
Dinit()
Giải thích

Để bắt đầu kết nối SignalR trên phía client, chúng ta cần sử dụng phương thức start(). Phương thức này được sử dụng để khởi tạo và bắt đầu kết nối với server SignalR. Khi gọi phương thức start(), client sẽ gửi yêu cầu đến server để thiết lập kết nối và bắt đầu truyền thông tin. Phương thức start() là phương thức quan trọng và bắt buộc để bắt đầu sử dụng SignalR trên phía client.

#020
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
[Compare]ĐÚNG
B[Required]
C[StringLength]
D[Range]
Giải thích

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

#021
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
They manage client connectionsĐÚNG
They can call methods on clientsĐÚNG
CThey store persistent messages
DThey require HTTPS
Giải thích

Các câu hỏi về các trung tâm (hubs) trong SignalR như sau: - Các trung tâm có thể quản lý kết nối của các client. - Các trung tâm có thể gọi các phương thức trên các client. - Các trung tâm lưu trữ các tin nhắn có tính bền vững. - Các trung tâm yêu cầu HTTPS. Trong đó, hai câu hỏi đúng là: - Các trung tâm có thể quản lý kết nối của các client. - Các trung tâm có thể gọi các phương thức trên các client. Các trung tâm trong SignalR có thể quản lý các kết nối của các client và gọi các phương thức trên các client để thực hiện các tác vụ khác nhau.

#022
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo refresh the client browser automatically.
To act as a high-level pipeline allowing clients and servers to call methods on each other.ĐÚNG
CTo send HTTP requests only from server to client.
DTo replace all API controllers in ASP.NET Core.
Giải thích

Một SignalR hub là một lớp trung gian cao cấp cho phép các khách hàng và máy chủ gọi các phương thức vào nhau. Nó cho phép các ứng dụng thực hiện giao tiếp hai chiều giữa máy chủ và khách hàng, cho phép các máy chủ gửi thông tin đến các khách hàng và ngược lại. Điều này giúp tạo ra các ứng dụng thời gian thực, chẳng hạn như trò chơi trực tuyến, ứng dụng thời gian thực và các ứng dụng khác yêu cầu giao tiếp đồng bộ giữa máy chủ và khách hàng.

#023
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo identify a specific network.
To identify a specific application or service on a host.ĐÚNG
CTo route network traffic.
DTo encrypt network data.
Giải thích

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

#024
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAsynchronous file operations.
Executing a loop in parallel.ĐÚNG
CHandling network requests.
DCreating user interfaces.
Giải thích

Métodu Parallel.For được sử dụng để thực hiện một vòng lặp trong môi trường đa luồng. Nó cho phép bạn thực hiện một khối mã nhiều lần, đồng thời với nhau, trên nhiều luồng khác nhau. Điều này giúp tăng tốc độ thực hiện của chương trình, đặc biệt là khi xử lý dữ liệu lớn. Bạn có thể sử dụng Parallel.For để thực hiện các tác vụ như tính toán, sắp xếp dữ liệu, hoặc bất kỳ tác vụ nào khác có thể được thực hiện song song.

#025
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A"Views"
B"Models"
C"Controllers"
"wwwroot"ĐÚNG
Giải thích

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.

#026
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
@bindĐÚNG
B@twoWay
C@model
D@dataBind
Giải thích

Để thực hiện hai chiều dữ liệu (two-way data binding), chúng ta sử dụng chỉ thị @bind. Chỉ thị này cho phép dữ liệu được cập nhật đồng bộ giữa giao diện người dùng và lớp mẫu (model). Điều này có nghĩa là bất kỳ thay đổi nào được thực hiện trên giao diện người dùng sẽ được phản ánh ngay lập tức trong lớp mẫu, và ngược lại. @bind là một trong những chỉ thị quan trọng nhất trong Angular, giúp tạo ra ứng dụng có tính tương tác cao và dễ sử dụng.

#027
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AReduced code reusability.
Ability to write client-side logic in C#.ĐÚNG
CIncreased reliance on JavaScript.
DLimited cross-platform support.
Giải thích

ASP.NET Core Blazor là một công nghệ phát triển ứng dụng web tiên tiến. Một trong những lợi ích chính của nó là khả năng viết logic phía client bằng ngôn ngữ C#. Điều này cho phép các nhà phát triển có thể tận dụng kiến thức và kỹ năng của họ trong C# để xây dựng các ứng dụng web phức tạp mà không cần phải chuyển sang JavaScript. Việc này giúp giảm thiểu thời gian và công sức cần thiết để phát triển ứng dụng, đồng thời cũng giúp đảm bảo chất lượng và tính ổn định của ứng dụng. Ngoài ra, khả năng viết logic phía client bằng C# cũng giúp tăng cường khả năng bảo mật và giảm thiểu rủi ro bảo mật trong ứng dụng.

#028
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ADbContext
ServiceCollectionĐÚNG
CWebRequest
DTask
Giải thích

Trong .NET, lớp được sử dụng để đăng ký dịch vụ cho Dependency Injection là lớp ServiceCollection. Lớp này cung cấp các phương thức để thêm, xóa và kiểm tra các dịch vụ đã được đăng ký. ServiceCollection được sử dụng để quản lý các dịch vụ trong ứng dụng .NET và cung cấp khả năng tùy chỉnh cao để đăng ký các dịch vụ khác nhau. Khi sử dụng Dependency Injection, ServiceCollection được sử dụng để đăng ký các dịch vụ và cung cấp khả năng giải quyết các dịch vụ cho các lớp khác trong ứng dụng.

#029
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AddSignalR()ĐÚNG
BUseSignalR()
CConfigureSignalR()
DEnableSignalR()
Giải thích

Để thêm dịch vụ SignalR vào bộ chứa DI (Dependency Injection), bạn cần sử dụng phương thức AddSignalR(). Phương thức này cho phép bạn cấu hình và thêm dịch vụ SignalR vào ứng dụng ASP.NET Core của mình. Khi sử dụng AddSignalR(), bạn có thể cấu hình các tùy chọn như loại giao thức, số lượng kết nối và các tùy chọn khác để phù hợp với nhu cầu của ứng dụng. Ngoài ra, bạn cũng có thể sử dụng AddSignalR() để thêm dịch vụ SignalR vào ứng dụng ASP.NET Core trong môi trường phát triển hoặc sản xuất.

#030
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA new instance of FileLogger is created each time
The same FileLogger instance is shared across the applicationĐÚNG
CA new FileLogger instance is created per request
DThe instance is disposed immediately
Giải thích

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.

#031
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA database query language.
A binary serialization format used by SignalR.ĐÚNG
CA JavaScript library.
DA network protocol.
Giải thích

MessagePack là một định dạng serialize binary được sử dụng để chuyển đổi dữ liệu giữa các ngôn ngữ lập trình khác nhau. Nó được thiết kế để có kích thước nhỏ và tốc độ nhanh chóng, giúp giảm thiểu thời gian truyền dữ liệu qua mạng. MessagePack được sử dụng rộng rãi trong các ứng dụng cần truyền tải dữ liệu nhanh chóng và hiệu quả, chẳng hạn như SignalR, một thư viện truyền thông thực thời gian cho ASP.NET. Nó cũng được sử dụng trong các ứng dụng khác như Node.js và Python. MessagePack có thể serialize các dữ liệu phức tạp như mảng, đối tượng và chuỗi, giúp giảm thiểu thời gian truyền dữ liệu và tăng hiệu suất ứng dụng.

#032
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AOnly one instance is ever created
A new instance is created each time it's requestedĐÚNG
COne instance per request is created
DThe DI container throws an exception
Giải thích

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.

#033
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define a database connection.
To inject dependencies into a component.ĐÚNG
CTo encrypt data.
DTo manage user sessions.
Giải thích

Đạo lệnh @inject trong Blazor được sử dụng để chèn phụ thuộc vào một thành phần. Điều này có nghĩa là bạn có thể sử dụng các dịch vụ hoặc đối tượng khác trong ứng dụng của mình mà không cần phải tạo ra chúng từ đầu. Ví dụ, nếu bạn có một dịch vụ để lưu trữ dữ liệu, bạn có thể sử dụng @inject để chèn dịch vụ này vào một thành phần của ứng dụng. Điều này giúp giảm thiểu mã nguồn và tăng cường khả năng tái sử dụng. Ngoài ra, @inject cũng giúp bạn dễ dàng thay đổi hoặc cập nhật các phụ thuộc mà không cần phải thay đổi mã nguồn của ứng dụng.

#034
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AThread.Sleep()
Task.Run() + awaitĐÚNG
CPLINQ
DBackgroundWorker (obsolete)
Giải thích

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

#035
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AInjecting dependencies via constructors.
BInjecting dependencies via method parameters.
Injecting dependencies by setting public properties.ĐÚNG
DInjecting dependencies at compile time.
Giải thích

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.

#036
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Von Neumann architectureĐÚNG
BHarvard architecture
CMIMD
DSIMD
Giải thích

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.

#037
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo build web applications.
BTo build desktop applications.
To build long-running background tasks or services.ĐÚNG
DTo build mobile applications.
Giải thích

Một .NET Worker Service là một loại ứng dụng .NET Core được thiết kế để chạy trong nền và thực hiện các tác vụ chạy trong nền lâu dài. Mục đích chính của một .NET Worker Service là chạy các tác vụ nền trong thời gian dài mà không cần tương tác trực tiếp từ người dùng. Điều này có thể bao gồm các tác vụ như gửi email hàng ngày, cập nhật dữ liệu trong cơ sở dữ liệu hoặc thực hiện các tác vụ khác mà không cần người dùng phải chờ đợi. .NET Worker Service cung cấp một cách linh hoạt để xây dựng các ứng dụng chạy trong nền mà không cần phải tạo một ứng dụng web hoặc desktop.

#038
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Task.Run()ĐÚNG
BIHostedService
CBackgroundService
DWorker Service
Giải thích

Khi thực hiện công việc nền trong thời gian dài trong các controller, chúng ta cần chọn phương pháp phù hợp để tránh gây ra các vấn đề về hiệu suất và bảo trì. Phương pháp Task.Run() không nên được sử dụng cho các công việc nền này vì nó sẽ chiếm dụng luồng chính của ứng dụng và gây ra các vấn đề về hiệu suất. Ngoài ra, Task.Run() không cung cấp các tính năng cần thiết để quản lý và giám sát các công việc nền, chẳng hạn như khả năng bắt đầu và dừng lại, cũng như khả năng phục hồi sau khi ứng dụng bị restart. Thay vào đó, chúng ta nên sử dụng các phương pháp như IHostedService, BackgroundService và Worker Service để thực hiện các công việc nền trong thời gian dài. Những phương pháp này cung cấp các tính năng cần thiết để quản lý và giám sát các công việc nền, giúp chúng ta dễ dàng bảo trì và hiệu suất cao hơn.

#039
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAutofac
BUnity
Microsoft.Extensions.DependencyInjectionĐÚNG
DNinject
Giải thích

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.

#040
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AServer-side rendering only.
Automatic reconnection handling.ĐÚNG
CLimited support for modern web standards.
DDependency on Internet Explorer.
Giải thích

SignalR là một thư viện cho ASP.NET Core cho phép tạo ứng dụng thời gian thực. Một trong những tính năng quan trọng của SignalR là khả năng tự động quản lý kết nối lại. Điều này có nghĩa là nếu kết nối bị mất do lỗi mạng hoặc do người dùng đóng trang, SignalR sẽ tự động cố gắng kết nối lại mà không cần người dùng phải thực hiện bất kỳ hành động nào. Tính năng này giúp đảm bảo rằng ứng dụng thời gian thực luôn hoạt động ổn định và không bị gián đoạn. Ngoài ra, SignalR cũng hỗ trợ các tính năng khác như gửi tin nhắn thời gian thực, cập nhật trạng thái thời gian thực, v.v.

#041
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ADbContext
ViewResultĐÚNG
CServiceCollection
DTask
Giải thích

Trong ASP.NET Core MVC, 'Action Result' là một loại kết quả được trả về bởi một hành động. Nó đại diện cho kết quả của một hành động và có thể là một trang web (ViewResult), một chuyển hướng (RedirectResult), một tập tin (FileResult), v.v. ViewResult là một ví dụ về Action Result, nó được sử dụng để trả về một trang web (View) sau khi thực hiện một hành động. ViewResult có thể được sử dụng để trả về một trang web có nội dung được tạo động hoặc một trang web có nội dung được lưu trữ trong tệp.

#042
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA device that routes network traffic.
A system designed to prevent unauthorized access to or from a private network.ĐÚNG
CA network protocol.
DA type of network cable.
Giải thích

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.

#043
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Abuilder.Services.AddControllers()
builder.Services.AddRazorPages()ĐÚNG
Cbuilder.Services.AddMvc()
Dbuilder.Services.AddViews()
Giải thích

Để đăng ký dịch vụ Razor Pages vào container DI trong Program.cs, bạn cần sử dụng phương thức builder.Services.AddRazorPages(). Phương thức này cho phép ASP.NET Core biết rằng ứng dụng của bạn sử dụng Razor Pages và cần đăng ký các dịch vụ liên quan. Khi bạn gọi phương thức này, các dịch vụ cần thiết cho Razor Pages sẽ được đăng ký vào container DI, bao gồm các dịch vụ như Razor Pages Model, Razor Pages Controller, v.v. Điều này cho phép bạn sử dụng các tính năng của Razor Pages trong ứng dụng của mình.

#044
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define a CSS rule.
BTo indicate a JavaScript block.
To switch between HTML and C# code.ĐÚNG
DTo define a database query.
Giải thích

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.

#045
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIController
BIDbContext
IHostedServiceĐÚNG
DIViewComponent
Giải thích

Để được đăng ký như một dịch vụ được lưu trữ trong .NET, một lớp phải thực hiện một giao diện cụ thể. Giao diện này cho phép lớp đó được quản lý và chạy trong môi trường ứng dụng. Trong các lựa chọn đã cho, giao diện "IHostedService" là giao diện cần được thực hiện để đăng ký lớp như một dịch vụ được lưu trữ. Giao diện này cung cấp các phương thức để quản lý vòng đời của dịch vụ, chẳng hạn như phương thức StartAsync và StopAsync. Bằng cách thực hiện giao diện này, lớp có thể được đăng ký như một dịch vụ được lưu trữ và chạy trong môi trường ứng dụng.

#046
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Initialize a new WebRequest for a specific URI schemeĐÚNG
BOpen a database connection
CCreate a physical network cable
DDefine hardware IP addressing
Giải thích

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

#047
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Consuming HTTP web APIsĐÚNG
BHandling low-level TCP sockets
CEncrypting HTTP traffic
DServing static files
Giải thích

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.

#048
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AHTTP
BgRPC
SignalRĐÚNG
DWebSocket only
Giải thích

Blazor Server sử dụng SignalR để cập nhật giao diện người dùng. SignalR là một thư viện ASP.NET cho phép thực hiện giao tiếp thực thời gian giữa client và server. Khi bạn sử dụng Blazor Server, giao diện người dùng được cập nhật thông qua SignalR. Điều này cho phép giao diện người dùng được cập nhật ngay lập tức mà không cần phải tải lại trang web. SignalR sử dụng các kết nối WebSocket để thực hiện giao tiếp thực thời gian giữa client và server.

#049
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define a database connection.
To specify the PageModel type for the Razor Page.ĐÚNG
CTo encrypt data.
DTo manage user sessions.
Giải thích

Mục đích của chỉ thị @model trong một trang Razor là để chỉ định loại PageModel cho trang Razor. Khi bạn tạo một trang Razor mới, bạn sẽ thấy một file có tên tương tự với tên trang Razor đó, nhưng có phần mở rộng là .cs. Đây là nơi bạn sẽ định nghĩa PageModel cho trang Razor. Chỉ thị @model được sử dụng để chỉ định loại PageModel mà trang Razor sẽ sử dụng. Ví dụ, nếu bạn muốn sử dụng PageModel có tên là MyPageModel, bạn sẽ sử dụng chỉ thị @model như sau: @model MyPageModel. Điều này cho phép bạn sử dụng các thuộc tính và phương thức của PageModel trong trang Razor.

#050
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
To specify which properties of a model should be bound from the request.ĐÚNG
BTo encrypt data.
CTo manage database connections.
DTo manage user sessions.
Giải thích

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.