1. Trong hệ sinh thái .NET hiện đại, phiên bản nào sau đây được Microsoft xác định là phiên bản hỗ trợ dài hạn (LTS) phát hành vào cuối năm 2023?
A. .NET 5
B. .NET 6
C. .NET 7
D. .NET 8
2. Trong Garbage Collection (GC) của .NET, các đối tượng mới được khởi tạo thường được phân bổ vào thế hệ (Generation) nào?
A. Thế hệ 0 (Gen 0)
B. Thế hệ 1 (Gen 1)
C. Thế hệ 2 (Gen 2)
D. Thế hệ 3 (Gen 3)
3. Tính năng ‘Primary Constructors’ được giới thiệu chính thức cho các lớp (class) thông thường trong phiên bản C# nào?
A. C# 9
B. C# 10
C. C# 11
D. C# 12
4. Trong LINQ, hiện tượng truy vấn chỉ thực sự được thực thi khi chúng ta duyệt qua dữ liệu (ví dụ dùng vòng lặp foreach) được gọi là gì?
A. Immediate Execution
B. Deferred Execution
C. Early Loading
D. Static Execution
5. Trong ASP.NET Core Middleware, middleware nào thường nên được đặt ở vị trí đầu tiên của pipeline để xử lý các lỗi phát sinh từ các thành phần phía sau?
A. UseRouting
B. UseEndpoints
C. UseExceptionHandler
D. UseAuthentication
6. Khi đăng ký dịch vụ trong Dependency Injection của ASP.NET Core, thời gian sống ‘Scoped’ có đặc điểm gì?
A. Tạo một phiên bản duy nhất cho toàn bộ vòng đời ứng dụng
B. Tạo một phiên bản mới mỗi khi có yêu cầu dịch vụ
C. Tạo một phiên bản duy nhất trong phạm vi mỗi yêu cầu HTTP
D. Tạo một phiên bản mới sau mỗi 10 phút
7. Trong Entity Framework Core, phương thức nào được sử dụng để tối ưu hóa hiệu năng khi chỉ muốn đọc dữ liệu mà không cần theo dõi thay đổi (tracking)?
A. AsTracking()
B. AsNoTracking()
C. Include()
D. ToList()
8. Thông thường, các kiểu dữ liệu giá trị (Value types) như ‘int’ hoặc ‘bool’ trong .NET được lưu trữ tại vùng bộ nhớ nào?
A. Heap
B. Stack
C. Global Memory
D. LOH (Large Object Heap)
9. Điểm khác biệt chính giữa từ khóa ‘const’ và ‘readonly’ trong C# là gì?
A. const được xác định tại thời điểm biên dịch, readonly được xác định tại thời điểm chạy
B. const có thể thay đổi giá trị, readonly thì không
C. readonly chỉ dùng được trong phương thức, const dùng được trong lớp
D. Không có sự khác biệt nào về chức năng
10. Để đợi nhiều tác vụ không đồng bộ (Tasks) hoàn thành đồng thời mà không chặn luồng chính, phương thức nào sau đây là phù hợp nhất?
A. Task.WaitAll()
B. Task.WhenAll()
C. Task.Run()
D. Thread.Sleep()
11. Thành phần nào của .NET Runtime chịu trách nhiệm chuyển đổi mã trung gian (MSIL) thành mã máy (Native Code) tại thời điểm thực thi?
A. Garbage Collector
B. JIT Compiler
C. Class Loader
D. Security Manager
12. Công cụ sửa đổi truy cập (Access Modifier) nào cho phép một thành viên chỉ được truy cập trong cùng một dự án (Assembly)?
A. private
B. protected
C. internal
D. public
13. Sự khác biệt cơ bản giữa ‘IEnumerable’ và ‘IQueryable’ khi làm việc với cơ sở dữ liệu từ xa là gì?
A. IEnumerable thực hiện lọc dữ liệu tại phía máy chủ cơ sở dữ liệu
B. IQueryable thực hiện lọc dữ liệu tại phía máy chủ cơ sở dữ liệu
C. Cả hai đều thực hiện lọc dữ liệu tại bộ nhớ máy client
D. IEnumerable không hỗ trợ LINQ
14. Máy chủ web mặc định, đa nền tảng và có hiệu suất cao được tích hợp sẵn trong ASP.NET Core là gì?
A. IIS
B. Apache
C. Kestrel
D. Nginx
15. Trong C#, từ khóa ‘with’ thường được sử dụng với kiểu dữ liệu nào để tạo ra một bản sao đối tượng với một vài thuộc tính thay đổi?
A. class
B. interface
C. record
D. enum
16. Một ‘Delegate’ trong .NET có thể giữ tham chiếu đến nhiều phương thức cùng lúc và gọi chúng theo thứ tự được gọi là gì?
A. Single-cast Delegate
B. Multicast Delegate
C. Static Delegate
D. Generic Delegate
17. Kỹ thuật nào trong .NET cho phép ứng dụng kiểm tra thông tin kiểu dữ liệu (metadata) và khởi tạo đối tượng tại thời điểm chạy (runtime)?
A. Encapsulation
B. Inheritance
C. Reflection
D. Abstraction
18. Trong Entity Framework Core, kỹ thuật nào cho phép tải các dữ liệu liên quan (Related Data) ngay trong truy vấn ban đầu bằng cách sử dụng phương thức ‘Include’?
A. Lazy Loading
B. Eager Loading
C. Explicit Loading
D. Delayed Loading
19. Các ‘Attributes’ trong .NET được sử dụng để làm gì?
A. Để định nghĩa các biến cục bộ
B. Để cung cấp thông tin mô tả (metadata) cho các thành phần của chương trình
C. Để quản lý việc thu gom rác
D. Để tăng tốc độ truy cập ổ đĩa
20. Trong khối lệnh try-catch-finally, đoạn mã nằm trong khối ‘finally’ sẽ được thực thi khi nào?
A. Chỉ khi có ngoại lệ xảy ra
B. Chỉ khi không có ngoại lệ xảy ra
C. Luôn luôn được thực thi bất kể có ngoại lệ hay không
D. Không bao giờ thực thi nếu có lệnh return trong khối try
21. Để cho phép một lớp có thể được truy cập như một mảng bằng cách sử dụng chỉ số (ví dụ: obj[0]), bạn cần định nghĩa thành phần nào?
A. Property
B. Method
C. Indexer
D. Field
22. Cơ chế ‘String Interning’ trong .NET có mục đích chính là gì?
A. Chuyển đổi chuỗi thành số
B. Tiết kiệm bộ nhớ bằng cách dùng chung một tham chiếu cho các chuỗi có nội dung giống hệt nhau
C. Tự động mã hóa chuỗi để bảo mật
D. Xóa các khoảng trắng thừa trong chuỗi
23. Sự khác biệt về mặt kế thừa giữa ‘struct’ và ‘class’ trong C# là gì?
A. Cả hai đều có thể kế thừa từ một lớp khác
B. Struct có thể kế thừa từ class, nhưng class không thể kế thừa từ struct
C. Class hỗ trợ kế thừa từ lớp khác, còn struct không hỗ trợ kế thừa lớp
D. Struct hỗ trợ đa kế thừa, class thì không
24. Điều kiện bắt buộc để định nghĩa một phương thức mở rộng (Extension Method) trong C# là gì?
A. Phải nằm trong một lớp static và có tham số đầu tiên sử dụng từ khóa ‘this’
B. Phải nằm trong một interface
C. Phải được đánh dấu bằng từ khóa ‘override’
D. Phải nằm trong lớp mà nó muốn mở rộng
25. Cách tiếp cận định tuyến (Routing) nào cho phép bạn cấu hình đường dẫn URL ngay trên phía đầu của phương thức hành động (Action method)?
A. Conventional Routing
B. Attribute Routing
C. Static Routing
D. Default Routing
26. Từ khóa ‘yield’ trong C# được sử dụng để thực hiện chức năng gì?
A. Để dừng chương trình ngay lập tức
B. Để báo cho trình biên dịch rằng một phương thức là một trình lặp (iterator)
C. Để giải phóng bộ nhớ của các biến không dùng tới
D. Để ép kiểu dữ liệu một cách an toàn
27. Giao diện (Interface) nào được sử dụng để thực hiện việc giải phóng các tài nguyên không được quản lý (unmanaged resources) một cách chủ động?
A. ICloneable
B. IComparable
C. IDisposable
D. IConvertible
28. Trong C#, cấu trúc dữ liệu ‘ValueTuple’ có đặc điểm gì khác biệt so với lớp ‘Tuple’ truyền thống?
A. ValueTuple là kiểu tham chiếu (reference type)
B. ValueTuple là kiểu giá trị (value type) và hỗ trợ đặt tên cho các thành phần
C. ValueTuple không cho phép thay đổi giá trị sau khi khởi tạo
D. ValueTuple chậm hơn Tuple
29. .NET Standard 2.0 có mục đích chính là gì?
A. Thay thế hoàn toàn .NET Framework
B. Tạo ra một tập hợp các API chung để các nền tảng .NET khác nhau có thể chia sẻ thư viện
C. Chỉ dùng để lập trình ứng dụng di động
D. Là một hệ điều hành mới của Microsoft
30. Đặc điểm nổi bật nhất của kiểu dữ liệu ‘record’ trong C# khi so sánh bằng toán tử ‘==’ là gì?
A. So sánh dựa trên địa chỉ bộ nhớ
B. So sánh dựa trên giá trị của các thuộc tính (Value-based equality)
C. Không thể sử dụng toán tử ‘==’
D. Luôn trả về kết quả false
31. Thành phần nào trong kiến trúc .NET chịu trách nhiệm quản lý việc thực thi mã, quản lý bộ nhớ và bảo mật?
A. Common Language Specification (CLS)
B. Common Type System (CTS)
C. Common Language Runtime (CLR)
D. Base Class Library (BCL)
32. Trong C#, từ khóa nào được sử dụng để ngăn chặn một lớp (class) bị kế thừa bởi các lớp khác?
A. readonly
B. static
C. abstract
D. sealed
33. Trong ASP.NET Core Dependency Injection, dịch vụ có vòng đời ‘Scoped’ sẽ hoạt động như thế nào?
A. Một thực thể mới được tạo ra mỗi khi dịch vụ được yêu cầu
B. Chỉ một thực thể duy nhất được tạo ra cho toàn bộ vòng đời ứng dụng
C. Một thực thể mới được tạo ra cho mỗi yêu cầu HTTP (HTTP Request) và được chia sẻ trong yêu cầu đó
D. Dịch vụ chỉ được tạo khi ứng dụng bắt đầu khởi chạy lần đầu
34. Cơ chế ‘Deferred Execution’ (Thực thi trì hoãn) trong LINQ có ý nghĩa gì?
A. Câu lệnh LINQ sẽ thực thi ngay lập tức khi được khai báo
B. Dữ liệu được tải toàn bộ vào bộ nhớ trước khi thực hiện truy vấn
C. Truy vấn chỉ thực sự thực hiện khi chúng ta bắt đầu duyệt kết quả (ví dụ qua vòng lặp foreach)
D. LINQ sẽ tự động tối ưu hóa câu lệnh SQL trước khi gửi tới database
35. Trong Garbage Collection của .NET, đối tượng thuộc ‘Generation 0’ đại diện cho điều gì?
A. Các đối tượng có kích thước lớn hơn 85.000 bytes
B. Các đối tượng mới được tạo và có thời gian tồn tại ngắn nhất
C. Các đối tượng đã tồn tại qua nhiều chu kỳ dọn rác
D. Các đối tượng tĩnh (static) không bao giờ bị xóa
36. Sự khác biệt chính giữa ‘interface’ và ‘abstract class’ trong C# là gì?
A. Interface có thể chứa constructor còn abstract class thì không
B. Một class có thể kế thừa nhiều abstract class nhưng chỉ thực thi được một interface
C. Abstract class có thể chứa mã thực thi cho phương thức, trong khi interface truyền thống (trước C# 8.0) chỉ chứa khai báo
D. Interface không thể chứa các thuộc tính (properties)
37. Từ khóa ‘await’ trong lập trình bất đồng bộ C# có tác dụng gì?
A. Tạm dừng luồng chính (Main Thread) cho đến khi tác vụ hoàn thành
B. Tạm dừng thực thi phương thức hiện tại một cách không gây treo luồng cho đến khi tác vụ hoàn thành
C. Tạo ra một luồng mới chạy song song để xử lý tác vụ
D. Bắt buộc phương thức phải chạy đồng bộ (synchronous)
38. Trong Entity Framework Core, phương thức nào được dùng để thực hiện cập nhật các thay đổi từ DbContext vào cơ sở dữ liệu?
A. UpdateChanges()
B. Commit()
C. SaveChangesAsync()
D. SubmitChanges()
39. Tại sao ‘StringBuilder’ thường được ưu tiên hơn ‘String’ khi thực hiện nhiều thao tác nối chuỗi trong vòng lặp?
A. Vì String là kiểu dữ liệu tham chiếu còn StringBuilder là kiểu giá trị
B. Vì String là bất biến (immutable), mỗi lần nối chuỗi sẽ tạo ra một đối tượng mới trong bộ nhớ gây tốn tài nguyên
C. Vì StringBuilder tự động mã hóa chuỗi sang chuẩn UTF-8
D. Vì String không hỗ trợ các ký tự Unicode
40. Từ khóa ‘yield return’ trong C# có mục đích gì?
A. Kết thúc ngay lập tức một vòng lặp và trả về giá trị cuối cùng
B. Cung cấp một giá trị cho đối tượng iterator và tạm dừng thực thi cho đến khi phần tử tiếp theo được yêu cầu
C. Chuyển quyền kiểm soát từ luồng này sang luồng khác
D. Xóa toàn bộ dữ liệu trong một mảng và trả về mảng rỗng
41. Trong C# 9.0 trở đi, ‘record’ được sử dụng chủ yếu để làm gì?
A. Để định nghĩa các lớp chỉ chứa logic xử lý nghiệp vụ phức tạp
B. Để tạo ra các kiểu dữ liệu hướng giá trị (value-based equality) và bất biến (immutable) một cách ngắn gọn
C. Để thay thế hoàn toàn cho kiểu dữ liệu ‘struct’
D. Để quản lý việc kết nối trực tiếp đến database
42. Access modifier ‘internal’ trong C# giới hạn phạm vi truy cập của một thành phần như thế nào?
A. Chỉ có thể truy cập bên trong lớp định nghĩa nó
B. Chỉ có thể truy cập bên trong cùng một project (assembly)
C. Có thể truy cập từ bất kỳ project nào trong cùng một solution
D. Chỉ có thể truy cập từ các lớp con kế thừa
43. Sự khác biệt giữa ‘IEnumerable’ và ‘IQueryable’ khi làm việc với Entity Framework là gì?
A. IEnumerable thực hiện lọc dữ liệu tại phía server database
B. IQueryable thực hiện lọc dữ liệu tại phía server database, trong khi IEnumerable thực hiện tại bộ nhớ client
C. IEnumerable hỗ trợ lập trình bất đồng bộ tốt hơn IQueryable
D. IQueryable chỉ dùng được với các mảng (array) trong bộ nhớ
44. Trong ASP.NET Core, Middleware là gì?
A. Một thành phần phần cứng dùng để tăng tốc website
B. Các đoạn mã xử lý được sắp xếp thành một đường ống (pipeline) để xử lý yêu cầu và phản hồi HTTP
C. Một loại cơ sở dữ liệu trung gian giữa SQL Server và ứng dụng
D. Một công cụ dùng để biên dịch mã C# sang mã máy
45. Phương thức ‘Dispose()’ thuộc interface IDisposable được sử dụng để làm gì?
A. Giải phóng bộ nhớ Managed (Managed Memory) ngay lập tức
B. Đóng các tài nguyên không được quản lý (unmanaged resources) như file stream, kết nối DB một cách chủ động
C. Xóa bỏ hoàn toàn đối tượng khỏi bộ nhớ Stack
D. Tạm dừng hoạt động của một luồng đang chạy
46. Trong C#, ‘boxing’ là quá trình gì?
A. Chuyển đổi một kiểu tham chiếu sang một kiểu giá trị
B. Chuyển đổi một kiểu giá trị sang kiểu ‘object’ hoặc một interface mà nó thực thi
C. Đóng gói mã nguồn thành một file .dll
D. Quá trình nén dữ liệu để truyền qua mạng
47. Mục đích của tệp ‘appsettings.json’ trong một ứng dụng .NET Core là gì?
A. Lưu trữ mã nguồn C# của ứng dụng
B. Lưu trữ các cấu hình của ứng dụng như chuỗi kết nối database, các tham số hệ thống
C. Lưu trữ danh sách các thư viện NuGet được cài đặt
D. Chứa các đoạn mã HTML để hiển thị giao diện người dùng
48. Server mặc định, đa nền tảng, hiệu năng cao được sử dụng để chạy ứng dụng ASP.NET Core là gì?
A. IIS (Internet Information Services)
B. Apache
C. Kestrel
D. Nginx
49. Trong C#, từ khóa ‘dynamic’ khác với ‘var’ ở điểm nào?
A. Var được xác định kiểu tại thời điểm biên dịch, dynamic được xác định kiểu tại thời điểm thực thi
B. Dynamic không yêu cầu khởi tạo giá trị khi khai báo, var thì có
C. Dynamic chỉ dùng cho các kiểu số, var dùng cho mọi kiểu
D. Var nhanh hơn dynamic về mặt tốc độ thực thi vì không cần kiểm tra kiểu lúc chạy
50. Phát biểu nào sau đây là ĐÚNG về ‘static constructor’ trong C#?
A. Nó có thể nhận tham số đầu vào
B. Nó được gọi tự động một lần duy nhất trước khi thực thể đầu tiên được tạo hoặc thành viên tĩnh được truy cập
C. Nó có thể được gọi thủ công bởi lập trình viên bằng từ khóa ‘new’
D. Một lớp có thể có nhiều static constructor với các chữ ký khác nhau
51. Trong Entity Framework Core, ‘Migration’ được dùng để làm gì?
A. Để chuyển dữ liệu từ SQL Server sang Oracle
B. Để đồng bộ hóa cấu trúc cơ sở dữ liệu với các thay đổi trong các lớp Model của mã nguồn .NET
C. Để sao lưu (backup) cơ sở dữ liệu hàng ngày
D. Để tối ưu hóa các chỉ mục (indexes) trong database
52. Thuộc tính ‘Init-only setters’ (từ khóa ‘init’) trong C# 9.0 dùng để làm gì?
A. Cho phép thay đổi giá trị thuộc tính bất cứ lúc nào
B. Chỉ cho phép gán giá trị cho thuộc tính trong lúc khởi tạo đối tượng
C. Tự động gán giá trị mặc định là 0 cho mọi thuộc tính
D. Ngăn chặn việc gán giá trị ngay cả trong constructor
53. Trong LINQ, phương thức ‘SelectMany’ khác với ‘Select’ như thế nào?
A. SelectMany chỉ dùng được với các mảng số nguyên
B. SelectMany dùng để làm phẳng (flatten) một tập hợp các tập hợp thành một tập hợp duy nhất
C. Select nhanh hơn SelectMany về tốc độ xử lý
D. SelectMany luôn trả về một kiểu dữ liệu kiểu ‘string’
54. Cấu trúc dữ liệu ‘Stack’ trong quản lý bộ nhớ .NET lưu trữ loại dữ liệu nào?
A. Các đối tượng kiểu ‘class’
B. Các biến cục bộ và các kiểu giá trị (Value types) trong phạm vi thực thi hàm
C. Tất cả các mảng dữ liệu có kích thước lớn
D. Các chuỗi văn bản (String)
55. Khái niệm ‘Delegate’ trong C# có thể được hiểu là gì?
A. Một kiểu biến dùng để lưu trữ dữ liệu số thực
B. Một con trỏ hàm an toàn (type-safe), cho phép truyền phương thức như một tham số
C. Một lớp đặc biệt dùng để kết nối với mạng
D. Một thuộc tính dùng để đánh dấu lớp là trừu tượng
56. Trong C#, từ khóa ‘base’ được dùng để làm gì?
A. Truy cập các thành viên (biến, hàm) của lớp cha từ lớp con
B. Khai báo một lớp cơ sở mới
C. Ép kiểu một đối tượng về kiểu dữ liệu gốc
D. Khởi tạo một luồng thực thi mới
57. Lợi ích chính của việc sử dụng ‘Generics’ trong .NET là gì?
A. Giúp ứng dụng chạy đa luồng tốt hơn
B. Tăng tính tái sử dụng mã, an toàn kiểu dữ liệu (type safety) và giảm chi phí boxing/unboxing
C. Tự động dịch mã sang ngôn ngữ máy nhanh hơn
D. Cho phép truy cập vào các thành phần private của lớp
58. Trong ASP.NET Core MVC, thành phần nào chịu trách nhiệm điều phối các yêu cầu từ người dùng và chọn View phù hợp?
A. Model
B. Controller
C. View
D. Entity
59. Lệnh nào trong .NET CLI được dùng để cài đặt một gói thư viện từ NuGet?
A. dotnet install package [Tên_Gói]
B. dotnet add package [Tên_Gói]
C. dotnet nuget get [Tên_Gói]
D. dotnet build package [Tên_Gói]
60. Phát biểu nào sau đây đúng về sự khác biệt giữa ‘Value Type’ và ‘Reference Type’?
A. Value type luôn lưu trữ trên Heap, Reference type luôn lưu trên Stack
B. Value type chứa trực tiếp dữ liệu, trong khi Reference type chứa địa chỉ vùng nhớ trỏ đến dữ liệu
C. Kiểu ‘string’ là một Value type
D. Value type có thể được gán giá trị null theo mặc định (không dùng Nullable)
61. Thành phần nào trong .NET chịu trách nhiệm quản lý việc thực thi mã, thu gom rác (Garbage Collection) và quản lý bộ nhớ?
A. Common Intermediate Language (CIL)
B. Common Language Runtime (CLR)
C. Base Class Library (BCL)
D. Universal Windows Platform (UWP)
62. Trong ASP.NET Core Middleware, phương thức ‘Next()’ có tác dụng gì?
A. Chuyển tiếp yêu cầu HTTP đến Middleware tiếp theo trong đường ống xử lý (pipeline)
B. Dừng toàn bộ quá trình xử lý yêu cầu ngay lập tức
C. Khởi động lại máy chủ Web Kestrel
D. Xóa toàn bộ các thiết lập cấu hình trong tệp ‘appsettings.json’
63. Kỹ thuật ‘Deferred Execution’ (thực thi trì hoãn) trong LINQ có đặc điểm gì?
A. Truy vấn được thực thi ngay tại thời điểm nó được khai báo
B. Truy vấn chỉ được thực thi khi dữ liệu thực sự được duyệt qua (ví dụ dùng vòng lặp ‘foreach’)
C. Truy vấn luôn trả về kết quả rỗng nếu không có từ khóa ‘await’
D. Dữ liệu được tải toàn bộ vào RAM ngay khi viết câu lệnh ‘Where’
64. Trong C#, từ khóa ‘yield’ được sử dụng để làm gì?
A. Tạm dừng luồng thực thi để chờ một tác vụ bất đồng bộ hoàn thành
B. Cho biết một phương thức là trình lặp (iterator) và trả về từng phần tử một mà không cần tạo bộ sưu tập tạm thời
C. Ngăn chặn việc kế thừa lớp từ các lớp cha
D. Giải phóng bộ nhớ ngay lập tức cho các đối tượng không dùng đến
65. Vòng đời (Lifetime) ‘Transient’ trong Dependency Injection của ASP.NET Core hoạt động như thế nào?
A. Dịch vụ được tạo một lần duy nhất cho toàn bộ vòng đời của ứng dụng
B. Dịch vụ được tạo mới mỗi khi nó được yêu cầu từ bộ chứa dịch vụ
C. Dịch vụ chỉ được tạo một lần cho mỗi yêu cầu HTTP (Request)
D. Dịch vụ sẽ tự động bị hủy ngay sau khi phương thức ‘Main’ kết thúc
66. Kiểu dữ liệu ‘struct’ trong C# thuộc nhóm nào và được lưu trữ chủ yếu ở đâu?
A. Reference type, lưu trữ trên Heap
B. Value type, lưu trữ trên Stack
C. Reference type, lưu trữ trên Stack
D. Value type, lưu trữ trên Heap
67. Sự khác biệt chính giữa ‘String’ và ‘StringBuilder’ trong .NET là gì?
A. ‘String’ có thể thay đổi kích thước còn ‘StringBuilder’ thì không
B. ‘String’ là kiểu tham chiếu còn ‘StringBuilder’ là kiểu tham trị
C. ‘String’ là đối tượng không thay đổi (immutable), trong khi ‘StringBuilder’ cho phép thay đổi nội dung mà không tạo đối tượng mới
D. ‘String’ chỉ lưu trữ được ký tự ASCII còn ‘StringBuilder’ lưu được Unicode
68. Trong Entity Framework Core, phương thức ‘Include’ được sử dụng nhằm mục đích gì?
A. Thực hiện ‘Lazy Loading’ để tải dữ liệu khi cần thiết
B. Thực hiện ‘Eager Loading’ để tải các dữ liệu liên quan (Related Data) ngay trong một truy vấn SQL duy nhất
C. Loại bỏ các bản ghi trùng lặp trong cơ sở dữ liệu
D. Mã hóa các cột dữ liệu nhạy cảm trước khi lưu vào database
69. Giao diện ‘IDisposable’ trong .NET được sử dụng chủ yếu để làm gì?
A. Tăng tốc độ thực thi của các vòng lặp ‘for’
B. Cung cấp cơ chế giải phóng các tài nguyên không được quản lý (unmanaged resources) như tệp tin hoặc kết nối DB
C. Cho phép lớp có thể được kế thừa bởi nhiều lớp khác nhau
D. Chuyển đổi một đối tượng thành định dạng JSON
70. Từ khóa ‘async’ và ‘await’ trong C# có mục đích chính là gì?
A. Làm cho mã chạy nhanh hơn gấp nhiều lần nhờ ép xung CPU
B. Thực hiện các tác vụ song song mà không bao giờ gây lỗi xung đột dữ liệu
C. Viết mã bất đồng bộ theo phong cách tuần tự, giúp ứng dụng không bị treo (non-blocking) khi xử lý tác vụ lâu
D. Chỉ định rằng phương thức đó sẽ luôn chạy trên một luồng (thread) mới hoàn toàn
71. Trong kiến trúc .NET, ‘Garbage Collector’ (GC) phân chia bộ nhớ Heap thành bao nhiêu thế hệ (Generations)?
A. thế hệ (Gen 0)
B. thế hệ (Gen 0 và Gen 1)
C. thế hệ (Gen 0, Gen 1 và Gen 2)
D. thế hệ (Gen 0, Gen 1, Gen 2 và Gen 3)
72. Một lớp ‘sealed’ trong C# có đặc điểm gì nổi bật?
A. Lớp đó không thể chứa bất kỳ phương thức nào
B. Lớp đó không thể bị kế thừa bởi bất kỳ lớp nào khác
C. Lớp đó bắt buộc phải có phương thức khởi tạo tĩnh (static constructor)
D. Lớp đó chỉ có thể chứa các hằng số (constants)
73. Trong ASP.NET Core, tệp ‘appsettings.json’ thường được dùng để làm gì?
A. Lưu trữ toàn bộ mã nguồn của ứng dụng để bảo mật
B. Lưu trữ các thông tin cấu hình như chuỗi kết nối cơ sở dữ liệu hoặc các cài đặt ứng dụng
C. Chứa các đoạn mã HTML để hiển thị giao diện người dùng
D. Tự động biên dịch mã C# sang mã máy
74. Điểm khác biệt cơ bản giữa ‘IEnumerable’ và ‘IQueryable’ khi truy vấn dữ liệu là gì?
A. ‘IEnumerable’ thực hiện lọc dữ liệu tại phía máy chủ cơ sở dữ liệu
B. ‘IQueryable’ thực hiện lọc dữ liệu trên bộ nhớ (in-memory) sau khi đã tải hết về
C. ‘IQueryable’ hỗ trợ dịch truy vấn sang ngôn ngữ của nguồn dữ liệu (như SQL) để lọc dữ liệu tại phía máy chủ
D. Cả hai đều thực hiện lọc dữ liệu hoàn toàn giống nhau và không có sự khác biệt về hiệu năng
75. Từ khóa ‘readonly’ khác với ‘const’ ở điểm nào trong C#?
A. ‘const’ được gán giá trị lúc chạy chương trình (runtime), ‘readonly’ được gán lúc biên dịch (compile-time)
B. ‘const’ bắt buộc phải gán giá trị khi khai báo, còn ‘readonly’ có thể gán giá trị trong phương thức khởi tạo (constructor)
C. ‘readonly’ chỉ dùng cho các biến số, còn ‘const’ dùng cho mọi kiểu dữ liệu
D. Không có sự khác biệt, cả hai đều dùng để khai báo hằng số không thể thay đổi
76. Lớp ‘Record’ được giới thiệu từ phiên bản C# 9.0 chủ yếu dùng để làm gì?
A. Thay thế hoàn toàn cho kiểu dữ liệu ‘interface’
B. Định nghĩa các kiểu tham chiếu cung cấp tính năng tích hợp sẵn cho việc đóng gói dữ liệu và so sánh dựa trên giá trị (Value-based equality)
C. Tăng tốc độ truy cập ổ cứng khi đọc các tệp văn bản
D. Quản lý các kết nối mạng trong ứng dụng Web
77. Trong .NET, ‘Boxing’ là quá trình gì?
A. Chuyển đổi một kiểu tham chiếu thành một kiểu tham trị
B. Chuyển đổi một kiểu tham trị sang kiểu ‘object’ hoặc bất kỳ kiểu giao diện nào mà nó thực thi
C. Nén mã nguồn ứng dụng thành một tệp thực thi duy nhất
D. Quá trình đóng gói ứng dụng vào một container Docker
78. Mục đích của việc sử dụng ‘Extension Methods’ trong C# là gì?
A. Cho phép thêm các phương thức mới vào các kiểu dữ liệu đã tồn tại mà không cần sửa đổi mã nguồn gốc của kiểu đó
B. Tự động tăng kích thước của mảng khi mảng bị đầy
C. Cho phép truy cập các biến riêng tư (private) của một lớp khác
D. Thay đổi kiểu dữ liệu của biến từ ‘int’ sang ‘string’ lúc đang chạy
79. Trong kiến trúc ASP.NET Core, ‘Kestrel’ là gì?
A. Một hệ quản trị cơ sở dữ liệu quan hệ
B. Một Web Server mã nguồn mở, đa nền tảng, hiệu năng cao được tích hợp sẵn trong .NET
C. Một thư viện dùng để thiết kế giao diện người dùng CSS
D. Một ngôn ngữ lập trình mới thay thế cho C#
80. Lợi ích lớn nhất của việc sử dụng ‘Generic Collections’ (ví dụ List của T) thay vì ‘ArrayList’ trong C# là gì?
A. ‘ArrayList’ chiếm ít bộ nhớ hơn
B. ‘Generic Collections’ cung cấp tính an toàn về kiểu dữ liệu (Type-safety) và tránh được chi phí của việc ‘Boxing/Unboxing’
C. ‘ArrayList’ hỗ trợ nhiều luồng (multithreading) tốt hơn
D. Không có sự khác biệt vì cả hai đều lưu trữ dữ liệu dưới dạng mảng
81. Từ khóa ‘abstract’ áp dụng cho một phương thức trong một lớp có ý nghĩa gì?
A. Phương thức đó đã có nội dung và không thể được viết đè (override)
B. Phương thức đó không có nội dung xử lý và bắt buộc các lớp con (không phải abstract) phải triển khai nội dung cho nó
C. Phương thức đó chỉ có thể được gọi thông qua tên lớp mà không cần khởi tạo đối tượng
D. Phương thức đó sẽ được thực thi tự động khi ứng dụng khởi động
82. Trong Entity Framework Core, ‘Migration’ được sử dụng để làm gì?
A. Di chuyển dữ liệu giữa hai máy chủ SQL Server khác nhau
B. Cập nhật cấu trúc lược đồ (schema) của cơ sở dữ liệu để đồng bộ với các thay đổi trong mã nguồn (Model)
C. Tự động sao lưu dữ liệu hàng ngày vào đám mây Azure
D. Dịch mã C# sang mã JavaScript để chạy trên trình duyệt
83. Lớp ‘Task’ trong .NET đại diện cho điều gì?
A. Một luồng phần cứng (Hardware Thread) duy nhất
B. Một đơn vị công việc bất đồng bộ có thể trả về giá trị hoặc không
C. Một thông báo lỗi (Exception) xảy ra trong hệ thống
D. Một tệp cấu hình chứa các biến môi trường
84. Từ khóa ‘static’ khi áp dụng cho một biến thành viên trong một lớp có nghĩa là gì?
A. Biến đó sẽ được tạo mới mỗi khi có một đối tượng của lớp được tạo ra
B. Biến đó thuộc về chính lớp đó chứ không thuộc về bất kỳ thực thể (instance) cụ thể nào, và được chia sẻ giữa các đối tượng
C. Biến đó chỉ có thể được truy cập bên trong các phương thức của chính lớp đó
D. Biến đó sẽ bị xóa khỏi bộ nhớ ngay sau khi phương thức chứa nó kết thúc
85. Trong C#, làm thế nào để xử lý nhiều ngoại lệ (Exceptions) khác nhau một cách riêng biệt?
A. Sử dụng một khối ‘catch’ duy nhất cho tất cả các loại ngoại lệ
B. Sử dụng nhiều khối ‘catch’ liên tiếp cho mỗi loại ngoại lệ cụ thể
C. Sử dụng từ khóa ‘finally’ để kiểm tra loại ngoại lệ
D. Khởi động lại ứng dụng mỗi khi gặp lỗi
86. Cơ chế ‘Reflection’ trong .NET cho phép thực hiện điều gì?
A. Tăng cường bảo mật bằng cách mã hóa toàn bộ tệp tin DLL
B. Kiểm tra và thao tác với siêu dữ liệu (metadata) của các cụm lắp ráp (assemblies), kiểu dữ liệu và đối tượng tại thời điểm thực thi
C. Tự động dịch mã C# sang mã Python
D. Tạo ra bản sao lưu vật lý cho ổ đĩa cứng
87. Trong ASP.NET Core, Middleware nào thường được sử dụng để xử lý các vấn đề về bảo mật tên miền chéo?
A. Static Files Middleware
B. CORS (Cross-Origin Resource Sharing) Middleware
C. Routing Middleware
D. Authentication Middleware
88. Giá trị mặc định của một biến kiểu ‘int’ trong C# nếu không được khởi tạo là bao nhiêu?
89. Mục đích của việc sử dụng từ khóa ‘using’ trong câu lệnh (ví dụ: using (var stream = …)) là gì?
A. Đảm bảo phương thức ‘Dispose’ được gọi tự động để giải phóng tài nguyên ngay khi khối mã kết thúc
B. Khai báo thư viện để sử dụng các lớp trong mã nguồn
C. Tạo ra một bản sao của đối tượng trong bộ nhớ tạm
D. Chặn các luồng khác không cho truy cập vào biến đó
90. Trong lập trình hướng đối tượng với C#, ‘Polymorphism’ (Tính đa hình) được thể hiện chủ yếu qua kỹ thuật nào?
A. Việc sử dụng các biến cục bộ trong phương thức
B. Sử dụng các phương thức ảo (virtual) và ghi đè phương thức (override) ở lớp con
C. Khai báo các hằng số với từ khóa ‘const’
D. Đóng gói dữ liệu bằng các thuộc tính private
91. Thành phần nào trong kiến trúc .NET chịu trách nhiệm quản lý bộ nhớ thông qua bộ thu gom rác (Garbage Collector) và thực thi mã lệnh?
A. Common Type System (CTS)
B. Common Language Specification (CLS)
C. Common Language Runtime (CLR)
D. Framework Class Library (FCL)
92. Trong C#, thuật ngữ ‘Managed Code’ (mã nguồn quản lý) dùng để chỉ loại mã nguồn nào?
A. Mã nguồn được viết bằng ngôn ngữ C++ thuần túy
B. Mã nguồn được thực thi trực tiếp bởi hệ điều hành
C. Mã nguồn được viết cho nền tảng di động
D. Mã nguồn được thực thi và quản lý bởi Common Language Runtime
93. Trình biên dịch JIT (Just-In-Time) trong .NET có nhiệm vụ chính là gì?
A. Chuyển đổi mã C# trực tiếp sang mã máy khi viết code
B. Chuyển đổi ngôn ngữ trung gian MSIL sang mã máy tại thời điểm thực thi
C. Kiểm tra lỗi cú pháp của chương trình
D. Tối ưu hóa các tệp tin hình ảnh trong ứng dụng
94. Sự khác biệt cơ bản giữa ‘struct’ và ‘class’ trong C# về mặt quản lý bộ nhớ là gì?
A. Struct được lưu trữ trên Stack, Class được lưu trữ trên Heap
B. Struct được lưu trữ trên Heap, Class được lưu trữ trên Stack
C. Cả hai đều được lưu trữ trên Heap
D. Cả hai đều được lưu trữ trên Stack
95. Trong bộ thu gom rác (Garbage Collector) của .NET, các đối tượng mới được khởi tạo thường được xếp vào thế hệ (Generation) nào?
A. Generation 2
B. Generation 1
C. Generation 0
D. Generation 3
96. Khái niệm ‘Boxing’ trong C# được định nghĩa như thế nào?
A. Chuyển đổi một kiểu tham chiếu sang một kiểu tham trị
B. Chuyển đổi một kiểu tham trị sang kiểu ‘object’ hoặc kiểu giao diện
C. Giải phóng bộ nhớ của một đối tượng
D. Nén tệp tin thực thi thành định dạng nhỏ hơn
97. Tại sao nên sử dụng ‘StringBuilder’ thay vì ‘string’ khi thực hiện nhiều thao tác nối chuỗi trong vòng lặp?
A. StringBuilder chiếm ít bộ nhớ hơn cho một chuỗi duy nhất
B. StringBuilder có nhiều phương thức bảo mật hơn
C. StringBuilder là kiểu tham trị nên nhanh hơn
D. StringBuilder cho phép thay đổi nội dung mà không tạo ra đối tượng mới trong bộ nhớ
98. Trong lập trình hướng đối tượng với C#, một lớp (class) có thể thực hiện tối đa bao nhiêu giao diện (interface)?
A. Chỉ duy nhất 1
B. Tối đa 2
C. Không giới hạn số lượng
D. Tối đa 10
99. Trong ASP.NET Core Dependency Injection, dịch vụ được đăng ký với thời gian tồn tại là ‘Scoped’ sẽ hoạt động như thế nào?
A. Mỗi khi được yêu cầu sẽ tạo ra một instance mới
B. Tạo ra một instance duy nhất cho toàn bộ vòng đời ứng dụng
C. Tạo ra một instance duy nhất cho mỗi yêu cầu HTTP (HTTP Request)
D. Chỉ tạo instance khi ứng dụng khởi động lại
100. Thứ tự đăng ký các Middleware trong tệp ‘Program.cs’ của ASP.NET Core có quan trọng không?
A. Không quan trọng, .NET sẽ tự sắp xếp lại
B. Có quan trọng, vì Middleware được thực thi theo thứ tự đăng ký trong đường ống xử lý
C. Chỉ quan trọng đối với các dịch vụ cơ sở dữ liệu
D. Chỉ quan trọng khi sử dụng IIS
101. Sự khác biệt chính giữa ‘IEnumerable’ và ‘IQueryable’ khi sử dụng LINQ là gì?
A. IEnumerable thực hiện lọc dữ liệu phía Server, IQueryable thực hiện phía Client
B. IEnumerable tốt hơn cho dữ liệu lớn từ Database
C. IQueryable hỗ trợ lọc dữ liệu phía Server (Database), IEnumerable lọc dữ liệu trên bộ nhớ (Client)
D. Cả hai đều thực hiện lọc dữ liệu như nhau
102. Từ khóa ‘await’ trong lập trình bất đồng bộ C# có tác dụng gì?
A. Dừng toàn bộ luồng chính cho đến khi tác vụ hoàn thành
B. Tạm dừng việc thực thi phương thức hiện tại cho đến khi tác vụ hoàn thành mà không chặn luồng chính
C. Tạo ra một luồng (Thread) mới ngay lập tức
D. Tăng tốc độ xử lý của CPU
103. Kỹ thuật ‘Reflection’ trong .NET thường được sử dụng để làm gì?
A. Tăng tốc độ truy cập tệp tin
B. Mã hóa dữ liệu nhạy cảm
C. Kiểm tra thông tin kiểu dữ liệu (metadata) và khởi tạo đối tượng tại thời điểm thực thi
D. Thay thế hoàn toàn cho vòng lặp ‘for’
104. Mục đích của việc triển khai giao diện ‘IDisposable’ trong một lớp là gì?
A. Để cho phép đối tượng được sao chép nhanh hơn
B. Để giải phóng thủ công các tài nguyên không được quản lý (như handle tệp, kết nối DB)
C. Để tăng kích thước của bộ nhớ Heap
D. Để ngăn chặn việc xóa đối tượng bởi Garbage Collector
105. Trong C# 9.0 trở lên, kiểu ‘record’ khác với ‘class’ thông thường ở điểm chính nào?
A. Record không thể kế thừa
B. Record là kiểu tham trị còn Class là kiểu tham chiếu
C. Record cung cấp khả năng so sánh bằng dựa trên giá trị của các thuộc tính thay vì tham chiếu
D. Record không thể chứa các phương thức
106. Một ‘Extension Method’ (phương thức mở rộng) trong C# bắt buộc phải được định nghĩa trong loại lớp nào?
A. Lớp trừu tượng (Abstract class)
B. Lớp tĩnh (Static class)
C. Lớp riêng tư (Private class)
D. Lớp niêm phong (Sealed class)
107. Khái niệm ‘Delegate’ trong C# có thể được hiểu một cách đơn giản nhất là gì?
A. Một biến lưu trữ giá trị số nguyên
B. Một con trỏ hàm an toàn về kiểu dữ liệu
C. Một lớp dùng để quản lý chuỗi
D. Một từ khóa để kết thúc chương trình
108. Trong C#, các ‘Attributes’ được sử dụng để làm gì?
A. Thay đổi giá trị của các biến cục bộ
B. Cung cấp thêm thông tin mô tả (metadata) cho các thành phần của chương trình
C. Để thay thế cho các ghi chú ‘comment’
D. Để quản lý các tệp tin cấu hình JSON
109. Khi sử dụng Entity Framework Core, phương thức nào dùng để tải dữ liệu liên quan ngay lập tức (Eager Loading)?
A. Phương thức .Load()
B. Phương thức .Include()
C. Phương thức .Then()
D. Phương thức .Fetch()
110. Khái niệm ‘.NET Standard’ đóng vai trò gì trong hệ sinh thái .NET?
A. Là một hệ điều hành mới của Microsoft
B. Là một bộ các API đặc tả mà mọi nền tảng .NET (Framework, Core, Xamarin) phải thực hiện
C. Là phiên bản rút gọn của .NET Core
D. Là ngôn ngữ lập trình kế thừa từ C#
111. Kestrel là gì trong ngữ cảnh của ASP.NET Core?
A. Một hệ quản trị cơ sở dữ liệu
B. Một Web Server đa nền tảng, mã nguồn mở, có hiệu suất cao
C. Một thư viện xử lý hình ảnh
D. Một công cụ kiểm thử đơn vị
112. Công cụ nào được sử dụng để quản lý các gói thư viện bên thứ ba trong dự án .NET?
A. npm
B. pip
C. NuGet
D. Maven
113. Khi một lớp được đánh dấu với từ khóa ‘sealed’ trong C#, điều đó có nghĩa là gì?
A. Lớp đó không thể chứa các biến tĩnh
B. Lớp đó không thể được kế thừa bởi bất kỳ lớp nào khác
C. Lớp đó không thể chứa các phương thức công khai
D. Lớp đó bắt buộc phải có ít nhất một constructor
114. Đặc điểm nào đúng đối với ‘Static Constructor’ (hàm khởi tạo tĩnh) trong C#?
A. Nó có thể nhận tham số truyền vào
B. Người dùng có thể gọi trực tiếp nó bất cứ lúc nào
C. Nó chỉ được thực thi một lần duy nhất trước khi instance đầu tiên được tạo hoặc thành viên tĩnh được truy cập
D. Nó có thể có các mức độ truy cập như public hoặc private
115. Sử dụng từ khóa ‘where’ trong Generic của C# nhằm mục đích gì?
A. Để định nghĩa vị trí lưu trữ của file
B. Để thiết lập các ràng buộc (constraints) lên kiểu dữ liệu truyền vào Generic
C. Để tìm kiếm dữ liệu trong mảng
D. Để thay thế cho câu lệnh ‘if-else’
116. Kiểu ‘ValueTuple’ (ví dụ: (int, string)) trong các phiên bản C# mới có ưu điểm gì so với lớp ‘Tuple’ cũ?
A. Nó là kiểu tham trị, giúp giảm áp lực lên bộ nhớ Heap và cho phép đặt tên cho các phần tử
B. Nó không thể chứa nhiều hơn 2 giá trị
C. Nó chỉ hoạt động trên hệ điều hành Windows
D. Nó bắt buộc phải chuyển đổi sang JSON
117. Toán tử điều kiện null (Null-conditional operator) ‘?.’ trong C# có lợi ích gì?
A. Làm cho chương trình chạy chậm hơn để an toàn hơn
B. Tự động khởi tạo đối tượng nếu nó đang null
C. Kiểm tra null cho đối tượng trước khi truy cập thành viên, giúp tránh lỗi NullReferenceException
D. Xóa đối tượng khỏi bộ nhớ nếu nó bằng null
118. Từ khóa ‘yield’ trong phương thức trả về ‘IEnumerable’ được sử dụng để làm gì?
A. Kết thúc chương trình ngay lập tức
B. Tạo ra một danh sách tạm thời trong bộ nhớ
C. Thực hiện ‘tạm dừng’ và trả về từng phần tử cho vòng lặp mà không cần tạo toàn bộ danh sách
D. Chuyển hướng luồng thực thi sang một website khác
119. Tại sao lại sử dụng ‘Partial Class’ trong C#?
A. Để tăng tốc độ thực thi của lớp
B. Để cho phép định nghĩa một lớp trên nhiều tệp tin nguồn khác nhau
C. Để ẩn các phương thức khỏi các lập trình viên khác
D. Để lớp đó có thể chạy trên nhiều CPU cùng lúc
120. Sự khác biệt giữa từ khóa ‘out’ và ‘ref’ khi truyền tham số vào phương thức là gì?
A. ‘ref’ yêu cầu biến phải được khởi tạo trước, còn ‘out’ thì không
B. ‘out’ yêu cầu biến phải được khởi tạo trước, còn ‘ref’ thì không
C. Cả hai đều yêu cầu khởi tạo trước
D. Cả hai đều không yêu cầu khởi tạo trước
121. Trong hệ sinh thái .NET, thành phần Common Language Runtime (CLR) đóng vai trò gì quan trọng nhất khi thực thi mã nguồn?
A. Chỉ dùng để biên dịch mã nguồn C# sang mã máy trực tiếp.
B. Cung cấp môi trường thực thi để quản lý bộ nhớ, biên dịch JIT và xử lý ngoại lệ.
C. Là một trình soạn thảo mã nguồn tích hợp cho các ngôn ngữ .NET.
D. Chỉ chịu trách nhiệm thiết kế giao diện người dùng cho ứng dụng desktop.
122. Trong ASP.NET Core, thời gian sống (lifetime) ‘Scoped’ của một dịch vụ trong Dependency Injection có đặc điểm gì?
A. Dịch vụ được tạo mới mỗi khi có yêu cầu (request) từ thành phần khác.
B. Dịch vụ được tạo một lần duy nhất trong suốt vòng đời của ứng dụng.
C. Dịch vụ được tạo một lần cho mỗi yêu cầu HTTP và được chia sẻ trong yêu cầu đó.
D. Dịch vụ chỉ được tạo khi người dùng đăng nhập thành công vào hệ thống.
123. Từ khóa ‘yield’ trong C# thường được sử dụng trong ngữ cảnh nào để tối ưu hóa hiệu suất?
A. Để dừng thực thi một luồng (thread) ngay lập tức.
B. Để tạo ra các vòng lặp vô hạn mà không gây treo chương trình.
C. Để triển khai phương thức lặp (iterator) giúp trả về từng phần tử một mà không cần nạp toàn bộ danh sách vào bộ nhớ.
D. Để giải phóng bộ nhớ của các biến cục bộ ngay sau khi sử dụng.
124. Sự khác biệt chính giữa ‘String’ và ‘StringBuilder’ trong .NET là gì?
A. String là kiểu tham chiếu còn StringBuilder là kiểu giá trị.
B. String là bất biến (immutable), trong khi StringBuilder cho phép thay đổi nội dung chuỗi mà không tạo đối tượng mới.
C. StringBuilder chỉ dùng được trong các ứng dụng Console, còn String dùng được mọi nơi.
D. String hỗ trợ Unicode còn StringBuilder thì không hỗ trợ.
125. Trong Entity Framework Core, phương thức ‘Include’ được sử dụng nhằm mục đích gì?
A. Để thêm một bản ghi mới vào cơ sở dữ liệu.
B. Để thực hiện ‘Eager Loading’, giúp nạp các thực thể liên quan cùng với thực thể chính trong một truy vấn.
C. Để lọc dữ liệu dựa trên một điều kiện logic cụ thể.
D. Để nhúng một tệp tin cấu hình JSON vào trong mã nguồn C#.
126. Thành phần ‘Middleware’ trong ASP.NET Core có chức năng chính là gì?
A. Là các đoạn mã xử lý yêu cầu HTTP và phản hồi trong đường ống (pipeline) của ứng dụng.
B. Chỉ dùng để kết nối ứng dụng với các hệ quản trị cơ sở dữ liệu SQL Server.
C. Dùng để biên dịch mã C# sang ngôn ngữ trung gian MSIL.
D. Là một công cụ để thiết kế các bảng báo cáo (report) trong ứng dụng web.
127. Từ phiên bản C# 9.0, kiểu dữ liệu ‘record’ được giới thiệu chủ yếu để làm gì?
A. Để thay thế hoàn toàn các class trong việc lập trình hướng đối tượng.
B. Để lưu trữ dữ liệu trong tệp tin định dạng CSV một cách tự động.
C. Cung cấp một cú pháp ngắn gọn cho các kiểu dữ liệu bất biến và hỗ trợ so sánh dựa trên giá trị.
D. Chỉ dùng để định nghĩa các phương thức tĩnh (static methods) trong ứng dụng.
128. Trong lập trình bất đồng bộ với C#, từ khóa ‘await’ có tác dụng gì?
A. Bắt buộc luồng hiện tại phải dừng lại hoàn toàn cho đến khi ứng dụng kết thúc.
B. Tạm dừng việc thực thi phương thức hiện tại một cách không gây tắc nghẽn cho đến khi tác vụ được chờ hoàn thành.
C. Tạo ra một luồng mới chạy song song và không bao giờ quay lại luồng chính.
D. Xóa bỏ các tác vụ đang chạy ngầm để giải phóng tài nguyên CPU.
129. Garbage Collector (GC) trong .NET phân chia các đối tượng vào các thế hệ (Generations) nhằm mục đích gì?
A. Để phân loại đối tượng theo dung lượng lưu trữ trên đĩa cứng.
B. Để tối ưu hóa hiệu suất thu gom bằng cách tập trung vào các đối tượng có tuổi thọ ngắn hơn.
C. Để xác định xem đối tượng đó thuộc về lớp cha hay lớp con trong kế thừa.
D. Để giới hạn số lượng biến mà một lập trình viên có thể khai báo.
130. Lợi ích lớn nhất của việc sử dụng ‘Interface’ thay vì ‘Abstract Class’ khi thiết kế hệ thống là gì?
A. Interface cho phép một lớp thực thi nhiều giao diện, hỗ trợ tính đa kế thừa hành vi.
B. Interface có thể chứa các trường dữ liệu (fields) để lưu trữ trạng thái của đối tượng.
C. Interface giúp chương trình chạy nhanh hơn do không tốn chi phí quản lý bộ nhớ.
D. Interface có thể chứa các hàm khởi tạo (constructor) phức tạp.
131. Trong .NET, ‘LINQ to Objects’ được sử dụng để làm gì?
A. Để truy vấn trực tiếp vào các tệp tin hệ thống của Windows.
B. Để thực hiện các câu lệnh SQL trên giao diện người dùng web.
C. Cung cấp cách thức truy vấn dữ liệu từ các tập hợp trong bộ nhớ (như List, Array) bằng cú pháp nhất quán.
D. Để mã hóa dữ liệu người dùng trước khi lưu vào bộ nhớ tạm.
132. Tại sao nên sử dụng phương thức ‘Dispose’ hoặc khối ‘using’ khi làm việc với các đối tượng như ‘FileStream’?
A. Để tăng tốc độ xử lý các phép toán số học trong chương trình.
B. Để đảm bảo các tài nguyên không được quản lý (unmanaged resources) như file handle được giải phóng kịp thời.
C. Để chuyển đổi tự động dữ liệu từ dạng text sang dạng binary.
D. Để ngăn chặn việc người dùng khác truy cập vào mã nguồn của ứng dụng.
133. Trong ASP.NET Core, ‘Kestrel’ đóng vai trò là gì?
A. Là một thư viện dùng để vẽ biểu đồ trên phía client.
B. Là một web server đa nền tảng, mã nguồn mở, có hiệu suất cao được tích hợp mặc định.
C. Là một ngôn ngữ lập trình mới thay thế cho C# trong tương lai.
D. Là một công cụ bảo mật dùng để quét virus cho mã nguồn .NET.
134. Khái niệm ‘Reflection’ trong .NET cho phép lập trình viên thực hiện điều gì?
A. Tự động sao lưu mã nguồn lên các dịch vụ đám mây.
B. Kiểm tra thông tin kiểu (metadata) và thao tác với các đối tượng tại thời điểm thực thi (runtime).
C. Phản chiếu màn hình ứng dụng lên các thiết bị di động khác.
D. Tăng cường độ sáng của giao diện người dùng dựa trên môi trường xung quanh.
135. Cơ chế ‘Delegates’ trong C# có thể được hiểu đơn giản là gì?
A. Là một biến chỉ dùng để lưu trữ các giá trị số nguyên lớn.
B. Là một kiểu dữ liệu an toàn (type-safe) đại diện cho các tham chiếu đến các phương thức.
C. Là một kỹ thuật dùng để nén tệp tin thực thi .exe.
D. Là một quy trình bàn giao công việc giữa các lập trình viên trong dự án.
136. Đặc điểm nào dưới đây là đúng khi nói về ‘Value Types’ (như struct) trong .NET?
A. Chúng luôn được lưu trữ trên vùng nhớ Heap và được quản lý bởi GC.
B. Chúng chứa dữ liệu trực tiếp và thường được lưu trữ trên Stack (trừ khi là thành phần của class).
C. Chúng hỗ trợ tính kế thừa từ các struct khác một cách không giới hạn.
D. Chúng bắt buộc phải được khởi tạo bằng từ khóa ‘new’ với các giá trị null.
137. Trong ASP.NET Core Web API, ‘Attribute Routing’ được sử dụng như thế nào?
A. Định nghĩa các quy tắc định tuyến thông qua các thuộc tính (attributes) đặt trực tiếp trên controller hoặc action.
B. Dùng để cấu hình màu sắc hiển thị cho trang web trong tệp CSS.
C. Tự động chuyển đổi mã C# sang định dạng HTML một cách ngẫu nhiên.
D. Chỉ dùng để giới hạn số lượng người dùng có thể truy cập vào một phương thức API.
138. Hệ quả của việc sử dụng ‘sealed’ modifier trên một lớp (class) trong C# là gì?
A. Lớp đó không thể được khởi tạo đối tượng (instance).
B. Lớp đó không thể bị kế thừa bởi bất kỳ lớp nào khác.
C. Tất cả các phương thức trong lớp đó đều phải là phương thức tĩnh.
D. Lớp đó sẽ bị ẩn đi và không thể truy cập từ các assembly khác.
139. Trong .NET, ‘Task.WhenAll’ được sử dụng khi nào là phù hợp nhất?
A. Khi muốn chạy lần lượt từng tác vụ một sau khi tác vụ trước kết thúc.
B. Khi muốn chờ đợi nhiều tác vụ chạy song song hoàn thành trước khi tiếp tục thực hiện bước tiếp theo.
C. Khi muốn hủy bỏ toàn bộ các tác vụ đang chạy để tiết kiệm RAM.
D. Khi muốn giới hạn chỉ có duy nhất một tác vụ được phép chạy tại một thời điểm.
140. Lợi ích chính của việc sử dụng ‘Dependency Injection’ (DI) trong phát triển ứng dụng .NET là gì?
A. Làm cho mã nguồn chạy nhanh hơn gấp đôi so với cách lập trình thông thường.
B. Giúp giảm sự phụ thuộc cứng (loose coupling) giữa các thành phần, dễ dàng bảo trì và viết Unit Test.
C. Tự động sửa các lỗi cú pháp khi biên dịch chương trình.
D. Ngăn chặn hoàn toàn các cuộc tấn công từ hacker vào cơ sở dữ liệu.
141. Phương thức mở rộng (Extension Methods) trong C# có đặc điểm gì nổi bật?
A. Cho phép thêm phương thức mới vào các kiểu dữ liệu hiện có mà không cần sửa đổi mã nguồn gốc của kiểu đó.
B. Bắt buộc phải được định nghĩa bên trong một lớp non-static.
C. Chỉ có thể được gọi thông qua các delegate đặc biệt được đăng ký trước.
D. Dùng để thay đổi cấu trúc bộ nhớ bên trong của các lớp trong hệ thống .NET.
142. Trong C#, sự khác biệt giữa toán tử ‘is’ và ‘as’ khi thực hiện ép kiểu là gì?
A. ‘is’ dùng để chuyển đổi kiểu, còn ‘as’ dùng để kiểm tra kiểu.
B. ‘is’ kiểm tra tính tương thích kiểu và trả về bool; ‘as’ cố gắng chuyển đổi và trả về null nếu thất bại thay vì ném ngoại lệ.
C. Cả hai toán tử đều hoạt động giống hệt nhau và có thể thay thế cho nhau trong mọi trường hợp.
D. ‘as’ chỉ dùng được cho kiểu giá trị (Value Types), còn ‘is’ dùng cho kiểu tham chiếu.
143. Trong Entity Framework Core, ‘Migration’ có vai trò gì?
A. Để di chuyển toàn bộ dữ liệu từ Oracle sang SQL Server tự động.
B. Để đồng bộ hóa cấu trúc của các lớp Model trong mã nguồn với lược đồ (schema) của cơ sở dữ liệu.
C. Để nén dữ liệu cơ sở dữ liệu nhằm tiết kiệm dung lượng lưu trữ.
D. Để tự động tạo ra các câu lệnh JavaScript cho phía client.
144. Khái niệm ‘Middleware’ nào dưới đây thường được sử dụng để xử lý lỗi tập trung trong ASP.NET Core?
A. Authentication Middleware.
B. Exception Handling Middleware (như UseExceptionHandler).
C. Static Files Middleware.
D. Routing Middleware.
145. Trong C# 12, tính năng ‘Primary Constructors’ trên Class cho phép điều gì?
A. Chỉ cho phép một class có duy nhất một hàm khởi tạo.
B. Khai báo các tham số khởi tạo ngay tại dòng định nghĩa tên class, giúp mã nguồn ngắn gọn hơn.
C. Tự động tạo ra các phương thức Get/Set cho tất cả các thuộc tính private.
D. Bắt buộc mọi đối tượng phải được khởi tạo với các giá trị mặc định là 0.
146. Tính năng ‘Nullable Reference Types’ trong .NET giúp ích gì cho lập trình viên?
A. Cho phép mọi biến đều có thể nhận giá trị null mà không cần khai báo.
B. Giúp phát hiện sớm các lỗi NullReferenceException tiềm ẩn thông qua cảnh báo của trình biên dịch.
C. Tăng dung lượng bộ nhớ để chứa các giá trị null hiệu quả hơn.
D. Tự động gán giá trị mặc định cho các biến tham chiếu khi chúng bị null.
147. Trong ứng dụng Blazor WebAssembly, mã nguồn C# được thực thi ở đâu?
A. Thực thi trực tiếp trên máy chủ web sau đó gửi kết quả HTML về trình duyệt.
B. Thực thi ngay bên trong trình duyệt của người dùng thông qua môi trường WebAssembly.
C. Thực thi trên một hệ điều hành riêng biệt được cài đặt trên máy khách.
D. Thực thi trong cơ sở dữ liệu SQL Server trước khi trả về ứng dụng.
148. Đối tượng ‘HttpContext’ trong ASP.NET Core đại diện cho điều gì?
A. Đại diện cho cấu hình phần cứng của máy chủ đang chạy ứng dụng.
B. Chứa tất cả thông tin về một yêu cầu HTTP hiện tại và phản hồi tương ứng.
C. Là một danh sách các tài khoản người dùng có quyền quản trị hệ thống.
D. Là một trình duyệt ảo dùng để kiểm thử giao diện người dùng.
149. Trong lập trình .NET, khi nào nên sử dụng ‘ValueTask’ thay vì ‘Task’?
A. Khi phương thức bất đồng bộ thường xuyên hoàn thành đồng bộ và muốn tránh cấp phát bộ nhớ trên Heap.
B. Khi muốn thực hiện các phép toán số học cực kỳ phức tạp trên luồng chính.
C. Khi cần chạy nhiều tác vụ cùng lúc trên các CPU khác nhau một cách bắt buộc.
D. Khi không quan tâm đến kết quả trả về của phương thức bất đồng bộ.
150. Mục đích chính của thư viện ‘SignalR’ trong .NET là gì?
A. Để nén các tệp tin hình ảnh trước khi gửi qua internet.
B. Thêm chức năng web thời gian thực (real-time) vào ứng dụng, cho phép máy chủ đẩy dữ liệu tới client ngay lập tức.
C. Để quản lý việc đăng ký bản quyền phần mềm cho các ứng dụng .NET.
D. Để mã hóa các đoạn chat giữa hai người dùng bằng giao thức SSH.