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 lại PRN222 SP26 RE - 50 câu có đáp án
Đề thi trắc nghiệm

Đề thi lại PRN222 SP26 RE - 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

0

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
A combination of Controller and ViewModelĐÚNG
BA replacement for HTML
CAn Entity Framework class
DA database entity
Giải thích

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

#002
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AHigh-level modules should depend on low-level modules
Both high-level and low-level modules should depend on abstractionsĐÚNG
CAbstractions should depend on details
DInterfaces should depend on classes
Giải thích

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.

#003
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aawait task;
task.Wait();ĐÚNG
Ctask.ContinueWith(...)
Dawait Task.WhenAll(tasks);
Giải thích

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

#004
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ABuilding desktop applications.
Building page-centric web applications with simplified development.ĐÚNG
CBuilding mobile applications.
DBuilding database management systems.
Giải thích

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.

#005
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Iterating over a collection in parallel.ĐÚNG
BAsynchronous network operations.
CManaging system resources.
DEncrypting data.
Giải thích

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.

#006
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define database connections.
To resolve registered services from the DI container.ĐÚNG
CTo define network protocols.
DTo define user interface elements.
Giải thích

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.

#007
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ARequires .NET runtime installed on the client
Larger initial download sizeĐÚNG
CNo component model
DNo data binding support
Giải thích

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.

#008
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ASorting a large array.
BRendering a complex 3D scene.
Downloading a file from the internet.ĐÚNG
DPerforming a CPU-intensive calculation.
Giải thích

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.

#009
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo manage database connections.
To pass data from a controller to a view.ĐÚNG
CTo encrypt data.
DTo manage user sessions.
Giải thích

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.

#010
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo manage database connections.
To allow sending messages from outside a hub class.ĐÚNG
CTo encrypt data.
DTo manage user sessions.
Giải thích

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.

#011
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AConstructor Injection
BSetter Injection
CMethod Injection
Database InjectionĐÚNG
Giải thích

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.

#012
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define a database schema.
To provide a common layout for multiple Razor Pages.ĐÚNG
CTo encrypt data.
DTo manage user sessions.
Giải thích

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.

#013
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
15ĐÚNG
B105
CError
DNothing
Giải thích

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.

#014
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A1
B2
3ĐÚNG
D6
Giải thích

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.

#015
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATcpClient
BUdpClient
CSocket
HttpClientĐÚNG
Giải thích

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.

#016
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo replace MVC controllers.
To create a long-running background service.ĐÚNG
CTo manage static website hosting.
DTo handle UI rendering.
Giải thích

Một Worker Service trong .NET là một loại ứng dụng nền tảng được thiết kế để chạy trong nền và thực hiện các tác vụ dài hạn mà không cần tương tác trực tiếp với người dùng. Mục đích chính của một Worker Service là tạo ra các dịch vụ nền tảng có thể chạy trong thời gian dài mà không bị gián đoạn, chẳng hạn 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 tương tác trực tiếp. Điều này giúp tăng cường hiệu suất và giảm tải cho ứng dụng web chính.

#017
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define CSS styles.
BTo write JavaScript code.
To write C# logic.ĐÚNG
DTo define HTML structure.
Giải thích

Trong Blazor, @code khối được sử dụng để viết logic C#. Nó cho phép bạn viết mã C# ngay trong thành phần Blazor mà không cần phải tạo một lớp riêng biệt. @code khối thường được sử dụng để thực hiện các hành động như gọi API, xử lý dữ liệu, và tương tác với cơ sở dữ liệu. Nó cũng cho phép bạn sử dụng các thuộc tính và phương thức để quản lý trạng thái của thành phần. Ngoài ra, @code khối còn cho phép bạn sử dụng các thư viện và framework .NET để thực hiện các tác vụ phức tạp. Tóm lại, @code khối là một công cụ mạnh mẽ trong Blazor giúp bạn viết logic C# một cách dễ dàng và hiệu quả.

#018
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ACookies
BSession
CTempData
ViewBagĐÚNG
Giải thích

Để quản lý trạng thái trong Razor Pages, chúng ta có thể sử dụng các phương thức sau: Cookies, Session, TempData. Tuy nhiên, ViewBag không phải là một phương thức hợp lệ để quản lý trạng thái. ViewBag là một đối tượng được sử dụng để truyền dữ liệu từ controller sang view, nhưng nó không được thiết kế để lưu trữ dữ liệu trạng thái. Nếu bạn cố gắng sử dụng ViewBag để lưu trữ dữ liệu trạng thái, nó sẽ không được lưu trữ sau khi bạn chuyển sang một trang khác. Vì vậy, trong các lựa chọn trên, chỉ có ViewBag là không thể sử dụng để quản lý trạng thái trong Razor Pages.

#019
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo specify a database connection.
To specify that an action method handles HTTP POST requests.ĐÚNG
CTo encrypt data.
DTo manage user sessions.
Giải thích

Trong ASP.NET Core MVC, [HttpPost] là một thuộc tính được sử dụng để chỉ định phương thức hành động (action method) sẽ xử lý yêu cầu HTTP POST. Khi một yêu cầu HTTP POST được gửi đến ứng dụng, [HttpPost] sẽ giúp xác định phương thức hành động nào sẽ được thực hiện để xử lý yêu cầu này. Điều này cho phép nhà phát triển có thể kiểm soát và quản lý các yêu cầu HTTP POST một cách hiệu quả. Ngoài ra, [HttpPost] cũng giúp ngăn chặn các yêu cầu HTTP POST không mong muốn từ được xử lý bởi các phương thức hành động khác. Vì vậy, [HttpPost] là một công cụ quan trọng trong việc xây dựng các ứng dụng web dựa trên ASP.NET Core MVC.

#020
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA physical network device.
A set of rules governing data communication.ĐÚNG
CA network security measure.
DA type of network cable.
Giải thích

Một giao thức mạng (network protocol) là một tập hợp các quy tắc và tiêu chuẩn được sử dụng để quản lý và điều khiển việc truyền tải dữ liệu qua mạng. Nó giúp đảm bảo rằng dữ liệu được truyền đi một cách chính xác và hiệu quả. Giao thức mạng bao gồm các quy tắc về cách thức truyền tải dữ liệu, cách thức xử lý lỗi, cách thức quản lý lưu lượng và cách thức đảm bảo an toàn cho dữ liệu. Ví dụ, giao thức TCP/IP là một giao thức mạng phổ biến được sử dụng để truyền tải dữ liệu qua internet.

#021
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ADatabase connections.
Persistent, bidirectional communication channels between a client and server.ĐÚNG
CFile system connections.
DUser session connections.
Giải thích

SignalR là một thư viện cho phép thiết lập các kênh giao tiếp hai chiều giữa máy chủ và khách hàng. Các kênh này cho phép máy chủ gửi thông tin đến khách hàng mà không cần khách hàng yêu cầu. Điều này cho phép các ứng dụng thực hiện các tác vụ như gửi thông báo thời gian thực, cập nhật trạng thái thời gian thực và thực hiện các tác vụ khác mà không cần phải yêu cầu khách hàng.

#022
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AHandleGet(), HandlePost()
OnGet(), OnPost()ĐÚNG
CGetHandler(), PostHandler()
DProcessGet(), ProcessPost()
Giải thích

Trong Razor Pages, phương thức xử lý (handler method) thường được đặt tên theo quy tắc sau: phương thức xử lý cho hành động GET được đặt tên là OnGet(), phương thức xử lý cho hành động POST được đặt tên là OnPost(). Ví dụ, nếu bạn muốn tạo một trang Razor Pages để hiển thị dữ liệu khi người dùng truy cập trang đó bằng cách sử dụng GET, bạn sẽ tạo một phương thức OnGet() để xử lý yêu cầu này. Tương tự, nếu bạn muốn tạo một trang để xử lý dữ liệu khi người dùng gửi yêu cầu POST, bạn sẽ tạo một phương thức OnPost() để xử lý yêu cầu này. Quy tắc đặt tên này giúp cho việc viết mã và đọc mã trở nên dễ dàng hơn.

#023
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Awww.example.com.vn
B[email protected]
192.168.1.1ĐÚNG
DHTTP/1.1
Giải thích

Một địa chỉ IP hợp lệ là một chuỗi gồm bốn số nguyên từ 0 đến 255, được ngăn cách bằng dấu chấm. Ví dụ, 192.168.1.1 là một địa chỉ IP hợp lệ vì nó đáp ứng các yêu cầu trên. Trong khi đó, www.example.com.vn và [email protected] là tên miền và địa chỉ email, không phải là địa chỉ IP. HTTP/1.1 là một giao thức truyền thông, cũng không phải là địa chỉ IP. Do đó, chỉ có 192.168.1.1 là một ví dụ về địa chỉ IP hợp lệ.

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

Trong lập trình .NET, việc sử dụng các kỹ thuật lập trình đồng bộ hóa (asynchronous programming) là rất quan trọng để tăng hiệu suất và giảm thiểu thời gian chờ đợi. Một trong những cách phổ biến để thực hiện điều này là sử dụng các lớp trong namespace System.Threading.Tasks. Namespace 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ụ (task) đồng bộ hóa, giúp cho các chương trình .NET trở nên linh hoạt và hiệu quả hơn.

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

Mục đích của chỉ thị @page ở đầu trang Razor Page là để xác định trang web đó là một trang Razor Page. Khi bạn tạo một trang Razor Page mới, bạn sẽ thấy một dòng mã ở đầu trang như sau: @page. Chỉ thị này cho biết trang đó được tạo dựa trên mô hình Razor Page và có thể chứa các yếu tố như layout, model, view, v.v. Nó giúp cho trình biên dịch biết cách xử lý trang đó và cung cấp các tính năng như layout động, model động, v.v. Ngoài ra, chỉ thị @page cũng giúp cho trình biên dịch xác định các trang Razor Page khác nhau và tránh nhầm lẫn giữa chúng.

#026
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA database query.
A reusable UI element written in C# and HTML.ĐÚNG
CA JavaScript function.
DA network protocol.
Giải thích

Một Blazor Component là một phần tử UI có thể tái sử dụng được viết bằng C# và HTML. Nó cho phép bạn tạo ra các phần tử UI độc lập có thể được sử dụng lại trong nhiều trang web khác nhau. Các component có thể chứa logic kinh doanh, giao diện người dùng và dữ liệu, giúp bạn tạo ra các ứng dụng web phức tạp và dễ dàng bảo trì. Ví dụ, bạn có thể tạo ra một component để hiển thị thông tin về một sản phẩm, và sau đó sử dụng component đó trên nhiều trang web khác nhau. Điều này giúp giảm thiểu mã nguồn và tăng cường tính linh hoạt của ứng dụng.

#027
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AOnly for the duration of an HTTP request.
Until the application is manually stopped.ĐÚNG
COnly for the duration of a database transaction.
DOnly for the duration of a user session.
Giải thích

Một Worker Service trong ASP.NET Core là một loại ứng dụng web không tương tác, chạy nền và không có giao diện người dùng. Nó được sử dụng để thực hiện các tác vụ lặp đi lặp lại, chẳng hạn như gửi email, cập nhật dữ liệu cơ sở dữ liệu hoặc thực hiện các tác vụ khác mà không cần tương tác với người dùng. Thời gian tồn tại của một Worker Service thường kéo dài cho đến khi ứng dụng được dừng lại thủ công. Điều này có nghĩa là Worker Service sẽ tiếp tục chạy cho đến khi ứng dụng được dừng lại hoặc bị lỗi. Điều này cho phép Worker Service thực hiện các tác vụ lặp đi lặp lại mà không cần phải khởi động lại sau mỗi lần thực hiện.

#028
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AStartAsync()
StopAsync()ĐÚNG
CRunAsync()
DExecute()
Giải thích

Khi ứng dụng đang shutting down, phương thức được gọi là khi ứng dụng đang tắt. Phương thức này thường được sử dụng để thực hiện các hành động cần thiết trước khi ứng dụng tắt, chẳng hạn như lưu trữ dữ liệu tạm thời, kết nối mạng, hoặc thực hiện các tác vụ cuối cùng. Trong trường hợp này, phương thức được gọi là StopAsync().

#029
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ABy writing JavaScript functions.
By using appsettings.json and dependency injection.ĐÚNG
CBy using static HTML files.
DBy using database queries.
Giải thích

Để xử lý các thiết lập cấu hình trong một Worker Service, bạn có thể sử dụng file appsettings.json và dependency injection. File appsettings.json được sử dụng để lưu trữ các giá trị cấu hình dưới dạng key-value, trong khi dependency injection giúp bạn có thể dễ dàng inject các giá trị cấu hình vào các lớp của ứng dụng. Điều này giúp bạn có thể dễ dàng quản lý và thay đổi các thiết lập cấu hình mà không cần phải sửa đổi mã nguồn của ứng dụng. Ngoài ra, sử dụng appsettings.json và dependency injection còn giúp bạn có thể dễ dàng phân chia và quản lý các giá trị cấu hình giữa các môi trường khác nhau, chẳng hạn như môi trường phát triển, thử nghiệm và sản xuất.

#030
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AEasier to read
Produces smaller, faster messagesĐÚNG
CRequires no serialization
DUses XML format
Giải thích

MessagePack thường được ưa chuộng hơn JSON trong SignalR vì nó có thể tạo ra các tin nhắn nhỏ hơn và nhanh hơn. Điều này là do MessagePack sử dụng một định dạng dữ liệu khác biệt so với JSON, cho phép nó nén dữ liệu một cách hiệu quả hơn. Kết quả là, các tin nhắn được gửi qua mạng sẽ nhỏ hơn và có thể được xử lý nhanh hơn. Điều này đặc biệt quan trọng trong các ứng dụng thời gian thực như SignalR, nơi tốc độ và hiệu suất là rất quan trọng. Ngoài ra, MessagePack cũng có thể hỗ trợ các loại dữ liệu phức tạp hơn so với JSON, làm cho nó trở thành lựa chọn tốt hơn cho các ứng dụng cần xử lý dữ liệu lớn.

#031
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo create dependencies inside a class
To remove hard-coded dependenciesĐÚNG
CTo increase code complexity
DTo avoid using interfaces
Giải thích

Dependency Injection (DI) là một kỹ thuật lập trình giúp giảm sự phụ thuộc giữa các lớp hoặc mô-đun trong một ứng dụng. Mục đích chính của DI là loại bỏ các phụ thuộc cứng (hard-coded dependencies) giữa các lớp, giúp tăng tính linh hoạt và dễ dàng bảo trì của ứng dụng. Khi sử dụng DI, bạn có thể dễ dàng thay thế các phụ thuộc bằng các implementation khác nhau mà không cần phải thay đổi mã nguồn của lớp sử dụng phụ thuộc. Điều này giúp giảm sự phức tạp và tăng tính tái sử dụng của mã nguồn. Ngoài ra, DI cũng giúp giảm sự phụ thuộc vào các framework hoặc thư viện cụ thể, giúp ứng dụng trở nên dễ dàng di chuyển sang các nền tảng khác nhau.

#032
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AInterface Segregation
Open/Closed PrincipleĐÚNG
CDependency Inversion
DLiskov Substitution
Giải thích

SOLID là một nhóm nguyên tắc thiết kế giúp đảm bảo tính mở rộng và bảo trì của mã nguồn. Trong đó, nguyên tắc Open/Closed Principle (OCP) cho rằng một lớp nên được mở rộng, nhưng không được sửa đổi khi có yêu cầu mới. Nếu một lớp phải được sửa đổi liên tục khi có yêu cầu mới, điều đó có nghĩa là lớp đó không tuân thủ nguyên tắc OCP. Điều này dẫn đến việc lớp đó không có khả năng mở rộng và bảo trì, khiến cho việc thêm mới yêu cầu trở nên khó khăn và phức tạp.

#033
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Hi | HiĐÚNG
BHi | null
Cnull | null
DError
Giải thích

Khi thực hiện yêu cầu trước đó, TempData['Message'] đã được gán giá trị 'Hi'. Trong phương thức Next(), chúng ta đang truy xuất giá trị này và gán nó vào biến msg và lại. Sau đó, chúng ta sử dụng Content() để trả về nội dung của phương thức. Nội dung này sẽ là kết hợp của msg và lại. Vì TempData['Message'] đã được gán giá trị 'Hi' trước đó, nên giá trị của msg và lại sẽ đều là 'Hi'. Do đó, nội dung trả về sẽ là 'Hi | Hi'.

#034
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
onclickĐÚNG
Bonpress
Conselect
Donactivate
Giải thích

Khi một nút được nhấp vào, sự kiện được kích hoạt là sự kiện onclick. Sự kiện onclick là một thuộc tính của HTML và JavaScript, được sử dụng để thực hiện một hành động khi một nút hoặc một phần tử khác được nhấp vào. Nó cho phép bạn viết mã JavaScript để thực hiện một hành động cụ thể khi nút được nhấp vào. Ví dụ, bạn có thể sử dụng sự kiện onclick để hiển thị một thông báo, thực hiện một chức năng tính toán, hoặc chuyển hướng đến một trang web khác. Sự kiện onclick rất phổ biến và được sử dụng rộng rãi trong việc tạo ra các ứng dụng web và di động.

#035
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo return a complete HTML page.
To return a reusable portion of a view.ĐÚNG
CTo return a JSON response.
DTo redirect to another action.
Giải thích

Trong ASP.NET Core MVC, PartialView được sử dụng để trả về một phần tái sử dụng của một view. Điều này có nghĩa là PartialView sẽ trả về một phần của HTML mà bạn có thể tái sử dụng trong nhiều trang khác nhau. Ví dụ, bạn có thể sử dụng PartialView để tạo ra một menu hoặc một phần header mà có thể được sử dụng trên nhiều trang khác nhau. PartialView được sử dụng khi bạn muốn tái sử dụng một phần của view mà không cần phải tạo ra một view hoàn chỉnh. Đ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.

#036
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AManaging database connections.
Communicating between clients and servers.ĐÚNG
CEncrypting data.
DManaging user sessions.
Giải thích

SignalR Hubs là một công cụ quan trọng trong việc xây dựng các ứng dụng thời gian thực (real-time application) bằng cách cung cấp một cách để các máy khách (client) và máy chủ (server) giao tiếp với nhau. Nó cho phép các máy khách kết nối đến máy chủ và nhận thông tin cập nhật ngay lập tức, đồng thời cũng cho phép các máy chủ gửi thông tin đến các máy khách. Điều này rất hữu ích trong các ứng dụng như trò chơi trực tuyến, ứng dụng thời gian thực, và các ứng dụng cần cập nhật dữ liệu ngay lập tức.

#037
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATempData
BApplication Variables
HibernateĐÚNG
DCookies
Giải thích

Razor Pages cung cấp một số cách quản lý trạng thái, bao gồm TempData, Application Variables và Cookies. Tuy nhiên, Hibernate không phải là một trong những cách được hỗ trợ. Hibernate là một framework quản lý trạng thái trong các ứng dụng web, nhưng nó không được tích hợp trực tiếp vào Razor Pages. Thay vào đó, các nhà phát triển có thể sử dụng các cách quản lý trạng thái khác như TempData, Application Variables và Cookies để quản lý dữ liệu trong ứng dụng.

#038
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo manage IP addresses.
To provide a sequence of bytes for reading or writing data.ĐÚNG
CTo handle HTTP requests.
DTo establish TCP connections.
Giải thích

Trong lập trình .NET, lớp Stream được sử dụng để quản lý một chuỗi các byte. Nó cung cấp một cách cơ bản để đọc hoặc ghi dữ liệu. Lớp Stream không chỉ giới hạn ở việc đọc hoặc ghi dữ liệu mà còn có thể được sử dụng để đọc hoặc ghi dữ liệu từ hoặc vào các nguồn khác nhau như tệp tin, mạng, hoặc các thiết bị ngoại vi. Nó cung cấp các phương thức cơ bản để đọc hoặc ghi dữ liệu, chẳng hạn như Read, Write, Seek, và Flush. Ngoài ra, lớp Stream cũng cung cấp các phương thức để kiểm tra xem dữ liệu đã được đọc hoặc ghi thành công hay chưa. Tóm lại, lớp Stream là một lớp cơ bản trong .NET mà cung cấp một cách cơ bản để quản lý và đọc hoặc ghi dữ liệu.

#039
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ADatabase query filters.
Middleware components that can intercept and modify hub method invocations.ĐÚNG
CCSS style filters.
DJavaScript event filters.
Giải thích

Trong SignalR, Hub filters là các thành phần trung gian có thể chặn và sửa đổi các phương thức hub. Chúng cho phép bạn thực hiện các hành động trước và sau khi gọi phương thức hub, chẳng hạn như xác thực người dùng, kiểm tra quyền truy cập, hoặc thậm chí là thay đổi dữ liệu được gửi qua mạng. Hub filters hoạt động như các lớp trung gian giữa các phương thức hub và các phương thức thực thi, cho phép bạn tách biệt logic kinh doanh khỏi logic mạng. Điều này giúp bạn dễ dàng quản lý và bảo trì các ứng dụng SignalR phức tạp hơn.

#040
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo manage database connections.
To send messages to connected clients.ĐÚNG
CTo encrypt data.
DTo manage user sessions.
Giải thích

Mục đích của đối tượng Clients trong một hub SignalR là để quản lý các kết nối với các khách hàng đã kết nối. Đối tượng này cho phép bạn gửi tin nhắn đến các khách hàng cụ thể hoặc tất cả khách hàng đã kết nối. Điều này giúp bạn có thể tương tác với các khách hàng một cách linh hoạt và hiệu quả. Ví dụ, bạn có thể sử dụng đối tượng Clients để gửi thông báo đến tất cả khách hàng khi có một sự kiện xảy ra. Ngoài ra, bạn cũng có thể sử dụng nó để gửi tin nhắn riêng tư đến một khách hàng cụ thể. Tóm lại, đối tượng Clients là một công cụ quan trọng trong SignalR giúp bạn quản lý và tương tác với các khách hàng một cách hiệu quả.

#041
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
APhysically transfer files between computers
Identify a resource on the internet or LANĐÚNG
CEncrypt data during transmission
DDefine network hardware speed
Giải thích

Một URI (Uniform Resource Identifier) chủ yếu được sử dụng để xác định một tài nguyên trên internet hoặc mạng LAN. Nó cung cấp một cách duy nhất để truy cập và tham chiếu đến tài nguyên này. Ví dụ, một URI có thể được sử dụng để truy cập một trang web, một tệp tin hoặc một dịch vụ mạng. URI giúp người dùng và máy tính xác định vị trí và tính chất của tài nguyên, từ đó có thể thực hiện các hành động như tải xuống, xem hoặc sử dụng tài nguyên đó. Trong khi các lựa chọn khác như truyền tệp tin, mã hóa dữ liệu và định nghĩa tốc độ mạng hardware không liên quan trực tiếp đến chức năng chính của URI.

#042
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AaddToGroup()
BgroupAdd()
Groups.AddToGroupAsync()ĐÚNG
DaddClientToGroup()
Giải thích

Để thêm một khách hàng vào một nhóm SignalR, bạn cần sử dụng phương thức Groups.AddToGroupAsync(). Phương thức này cho phép bạn thêm một khách hàng vào một nhóm đã tồn tại. Bạn có thể sử dụng nó trong một ứng dụng SignalR để quản lý các nhóm và khách hàng. Ví dụ, bạn có thể sử dụng nó để thêm một khách hàng vào một nhóm khi họ đăng ký hoặc khi họ thực hiện một hành động cụ thể. Phương thức này rất hữu ích khi bạn cần quản lý các nhóm và khách hàng trong ứng dụng của mình.

#043
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo define a database connection.
To define a property that can be set from a parent component.ĐÚNG
CTo encrypt data.
DTo manage user sessions.
Giải thích

Trong Blazor, [Parameter] là một thuộc tính quan trọng được sử dụng để định nghĩa một thuộc tính có thể được thiết lập từ một thành phần cha. Khi một thành phần con sử dụng [Parameter], nó cho phép thành phần cha truyền giá trị cho thuộc tính đó. Điều này giúp tăng cường khả năng tương tác giữa các thành phần trong ứng dụng Blazor. Ví dụ, nếu bạn có một thành phần cha chứa một danh sách dữ liệu và muốn truyền danh sách đó cho thành phần con để hiển thị, bạn có thể sử dụng [Parameter] để định nghĩa thuộc tính nhận danh sách dữ liệu. Đ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.

#044
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA numerical IP address.
A human-readable name for a network device.ĐÚNG
CA network protocol.
DA network security certificate.
Giải thích

Hostname là một tên gọi dễ đọc và dễ nhớ cho một thiết bị mạng. Nó được sử dụng để xác định và truy cập một thiết bị mạng trên internet. Ví dụ, khi bạn truy cập trang web của một công ty, bạn thường nhập tên miền của công ty vào trình duyệt, như google.com. Trong thực tế, trình duyệt của bạn sẽ chuyển tên miền này thành một địa chỉ IP cụ thể để kết nối với máy chủ web của công ty. Hostname giúp người dùng dễ dàng nhớ và nhập tên của một thiết bị mạng, thay vì phải nhớ địa chỉ IP phức tạp.

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

BackgroundService là một lớp trong .NET Core được sử dụng để tạo các dịch vụ chạy nền. Nó thực hiện một số giao diện quan trọng, bao gồm IHostedService. Giao diện IHostedService cho phép các dịch vụ chạy nền được quản lý và khởi động bởi IWebHost. Điều này cho phép các dịch vụ chạy nền được khởi động và dừng cùng với ứng dụng. Ngoài ra, giao diện IHostedService cũng cung cấp các phương thức như StartAsync và StopAsync để quản lý trạng thái của dịch vụ chạy nền. Vì vậy, khi nói về giao diện mà BackgroundService thực hiện nội bộ, câu trả lời chính xác là IHostedService.

#046
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ACore i3
Xeon server processorsĐÚNG
CPentium 4
DCore i7
Giải thích

Công nghệ Hyper-Threading được giới thiệu lần đầu tiên trong các loại vi xử lý Xeon server processors. Công nghệ này cho phép mỗi lõi xử lý có thể thực hiện nhiều luồng xử lý cùng một lúc, giúp tăng hiệu suất và khả năng đa nhiệm của hệ thống. Xeon server processors là loại vi xử lý được thiết kế cho các máy chủ và hệ thống server, và công nghệ Hyper-Threading được sử dụng để tăng cường hiệu suất và khả năng xử lý dữ liệu của chúng. Điều này giúp các hệ thống server có thể xử lý nhiều tác vụ cùng một lúc, tăng cường hiệu suất và giảm thời gian chờ đợi.

#047
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAMVC and MVVM
Blazor Server and Blazor WebAssemblyĐÚNG
CREST and SOAP
DSignalR and gRPC
Giải thích

Blazor hỗ trợ hai mô hình hosting chính là Blazor Server và Blazor WebAssembly. Blazor Server là mô hình hosting chạy ứng dụng Blazor trên máy chủ, giúp giảm tải công việc xử lý trên máy khách. Trong khi đó, Blazor WebAssembly là mô hình hosting chạy ứng dụng Blazor trên máy khách, giúp tăng tốc độ tải trang và cải thiện trải nghiệm người dùng. Cả hai mô hình hosting đều có ưu và nhược điểm riêng, nhưng đều hỗ trợ xây dựng ứng dụng web động và tương tác cao.

#048
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AThey are available across multiple requests.
BThey are only available within the current view.
They are available between the controller action and the corresponding view.ĐÚNG
DThey are available across all controllers and views.
Giải thích

ViewBag và ViewData là hai đối tượng được sử dụng để truyền dữ liệu từ controller sang view trong ASP.NET. Chúng được sử dụng để lưu trữ dữ liệu tạm thời trong quá trình xử lý yêu cầu. Câu hỏi này hỏi về phạm vi của hai đối tượng này. Chọn đáp án đúng: Chúng có sẵn giữa hành động controller và view tương ứng. ViewBag và ViewData đều là các đối tượng được sử dụng để truyền dữ liệu từ controller sang view. Chúng được sử dụng để lưu trữ dữ liệu tạm thời trong quá trình xử lý yêu cầu. Chúng không được lưu trữ trong session hoặc database, mà chỉ được lưu trữ trong quá trình xử lý yêu cầu. Vì vậy, chúng không có sẵn giữa các yêu cầu khác nhau. Chúng cũng không có sẵn giữa các controller và view khác nhau. Chúng chỉ có sẵn giữa hành động controller và view tương ứng. Điều này có nghĩa là dữ liệu được lưu trữ trong ViewBag và ViewData sẽ bị xóa sau khi view được tải lên và không thể truy cập được trong các yêu cầu khác nhau.

#049
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AConstructor Injection
Property InjectionĐÚNG
CMethod Injection
DAmbient Context
Giải thích

Mẫu thiết kế DI (Dependency Injection) cung cấp tùy chọn phụ thuộc là Property Injection. Trong Property Injection, phụ thuộc được cung cấp cho đối tượng thông qua thuộc tính của nó. Điều này cho phép phụ thuộc được cung cấp một cách linh hoạt và có thể được thay đổi trong thời gian chạy. Điều này đặc biệt hữu ích khi cần phải cung cấp phụ thuộc tùy thuộc vào tình huống cụ thể hoặc môi trường cụ thể. Ví dụ, một đối tượng có thể được thiết kế để sử dụng một cơ sở dữ liệu cụ thể trong môi trường sản xuất nhưng sử dụng một cơ sở dữ liệu khác trong môi trường thử nghiệm. Property Injection cho phép thực hiện điều này một cách dễ dàng và linh hoạt.

#050
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AControllerBase
BackgroundServiceĐÚNG
CDbContext
DViewComponent
Giải thích

Để thực hiện một Worker Service, bạn thường sử dụng lớp cơ sở BackgroundService. Lớp này được thiết kế để chạy nền và thực hiện các tác vụ lặp đi lặp lại mà không cần tương tác trực tiếp với người dùng. BackgroundService cung cấp các phương thức như StartAsync và StopAsync để quản lý vòng đời của dịch vụ. Ngoài ra, nó cũng hỗ trợ các tính năng như đồng bộ hóa và lỗi để giúp bạn xây dựng các dịch vụ đáng tin cậy và hiệu quả.