1. Cú pháp nào sau đây đúng để khai báo một delegate trong C#?
A. class delegate void MyDelegate(int x);
B. delegate void MyDelegate(int x);
C. void delegate MyDelegate(int x);
D. public delegate MyDelegate(int x);
2. Trong C#, khi nào nên sử dụng `record` thay vì `class`?
A. Khi cần tạo một kiểu dữ liệu bất biến (immutable) với semantic so sánh giá trị (value-based equality)
B. Khi cần tạo một kiểu dữ liệu có thể thay đổi (mutable) với semantic so sánh tham chiếu (reference-based equality)
C. Khi cần tạo một interface
D. Khi cần tạo một delegate
3. Đâu là mục đích chính của Garbage Collector trong .NET?
A. Tối ưu hóa hiệu suất CPU
B. Quản lý bộ nhớ tự động bằng cách thu hồi bộ nhớ không còn được sử dụng
C. Phát hiện và sửa lỗi trong mã
D. Quản lý các kết nối cơ sở dữ liệu
4. Trong .NET, Span và Memory được sử dụng cho mục đích gì?
A. Để quản lý bộ nhớ tự động
B. Để cung cấp một cách an toàn và hiệu quả để làm việc với các vùng bộ nhớ liền kề
C. Để tạo giao diện người dùng
D. Để kết nối với cơ sở dữ liệu
5. Đâu là mục đích của thuộc tính `async` và `await` trong C#?
A. Để tạo ra các biến cục bộ
B. Để thực hiện các thao tác bất đồng bộ (asynchronous) mà không làm treo UI
C. Để định nghĩa các hằng số
D. Để quản lý bộ nhớ
6. Phương thức nào sau đây được sử dụng để giải phóng tài nguyên không được quản lý trong một lớp .NET?
A. Finalize
B. Dispose
C. Close
D. Clear
7. Đâu là sự khác biệt chính giữa `ArrayList` và `List` trong .NET?
A. `ArrayList` là kiểu an toàn (type-safe), còn `List` thì không
B. `List` là kiểu an toàn (type-safe), còn `ArrayList` thì không
C. `ArrayList` nhanh hơn `List`
D. `List` có thể chứa các kiểu dữ liệu khác nhau, còn `ArrayList` thì không
8. Trong .NET, mục đích chính của sử dụng Roslyn là gì?
A. Để tạo giao diện người dùng đồ họa
B. Để cung cấp các API trình biên dịch C# và VB.NET, cho phép phân tích và chuyển đổi code
C. Để quản lý bộ nhớ
D. Để kết nối với cơ sở dữ liệu
9. Đâu là sự khác biệt chính giữa `IEnumerable` và `IQueryable` trong .NET?
A. `IEnumerable` thực hiện truy vấn trên client-side, `IQueryable` thực hiện truy vấn trên server-side
B. `IQueryable` thực hiện truy vấn trên client-side, `IEnumerable` thực hiện truy vấn trên server-side
C. Cả hai đều thực hiện truy vấn trên client-side
D. Cả hai đều thực hiện truy vấn trên server-side
10. Đâu là sự khác biệt chính giữa `==` và phương thức `.Equals()` trong C#?
A. `==` so sánh giá trị, còn `.Equals()` so sánh tham chiếu
B. `==` so sánh tham chiếu, còn `.Equals()` so sánh giá trị (mặc định, có thể ghi đè)
C. Cả hai đều so sánh tham chiếu
D. Cả hai đều so sánh giá trị
11. Trong lập trình hướng đối tượng với .NET, `inheritance` (kế thừa) có nghĩa là gì?
A. Khả năng một lớp có thể có nhiều đối tượng
B. Khả năng một lớp có thể kế thừa các thuộc tính và phương thức từ một lớp khác
C. Khả năng một đối tượng có thể thay đổi kiểu dữ liệu của nó
D. Khả năng một phương thức có thể gọi chính nó
12. Trong .NET, phương thức mở rộng (extension method) là gì?
A. Một phương thức được thêm vào một lớp mà không cần sửa đổi lớp đó
B. Một phương thức chỉ có thể được gọi từ bên trong lớp
C. Một phương thức được sử dụng để tạo ra các đối tượng mới
D. Một phương thức được sử dụng để xử lý các ngoại lệ
13. Đâu là mục đích của Code Contracts trong .NET?
A. Để tạo ra các tài liệu tự động cho code
B. Để chỉ định các điều kiện tiên quyết, hậu điều kiện và bất biến cho các phương thức và lớp, giúp cải thiện độ tin cậy của code
C. Để tối ưu hóa hiệu suất code
D. Để mã hóa code
14. Trong .NET, kiểu dữ liệu nào sau đây được sử dụng để biểu diễn một giá trị boolean?
A. Int32
B. String
C. Boolean
D. Decimal
15. Đâu là mục đích của thuộc tính `const` và `readonly` trong C#?
A. `const` là hằng số thời gian biên dịch, `readonly` là hằng số thời gian chạy
B. `readonly` là hằng số thời gian biên dịch, `const` là hằng số thời gian chạy
C. Cả hai đều là hằng số thời gian biên dịch
D. Cả hai đều là hằng số thời gian chạy
16. Đâu là lợi ích của việc sử dụng LINQ (Language Integrated Query) trong .NET?
A. LINQ chỉ hỗ trợ truy vấn dữ liệu từ cơ sở dữ liệu SQL Server
B. LINQ cung cấp một cú pháp thống nhất để truy vấn dữ liệu từ nhiều nguồn khác nhau (collections, databases, XML, ...)
C. LINQ chỉ hoạt động với các đối tượng trong bộ nhớ
D. LINQ làm giảm hiệu suất ứng dụng
17. Trong .NET, Global Assembly Cache (GAC) được sử dụng để làm gì?
A. Để lưu trữ các assembly chỉ được sử dụng bởi một ứng dụng duy nhất
B. Để lưu trữ các assembly được chia sẻ bởi nhiều ứng dụng trên một máy
C. Để lưu trữ dữ liệu cấu hình ứng dụng
D. Để lưu trữ các file tạm thời
18. Trong .NET, `boxing` và `unboxing` là gì?
A. Boxing là chuyển đổi từ kiểu tham chiếu sang kiểu giá trị, unboxing là ngược lại
B. Boxing là chuyển đổi từ kiểu giá trị sang kiểu tham chiếu, unboxing là ngược lại
C. Boxing là đóng gói một ứng dụng để triển khai, unboxing là giải nén nó
D. Boxing và unboxing là các thao tác mã hóa và giải mã dữ liệu
19. Đâu là lợi ích của việc sử dụng async streams (IAsyncEnumerable) trong C#?
A. Chỉ hỗ trợ xử lý dữ liệu trong bộ nhớ
B. Cho phép xử lý các chuỗi dữ liệu bất đồng bộ một cách hiệu quả, đặc biệt là với các nguồn dữ liệu lớn
C. Làm giảm hiệu suất ứng dụng
D. Chỉ hỗ trợ xử lý dữ liệu đồng bộ
20. Trong ASP.NET Core, Kestrel là gì?
A. Một ngôn ngữ lập trình
B. Một web server đa nền tảng mặc định
C. Một công cụ để quản lý cơ sở dữ liệu
D. Một framework để xây dựng giao diện người dùng
21. Trong ASP.NET Core, middleware là gì?
A. Một thành phần để xác thực người dùng
B. Một thành phần để xử lý các yêu cầu HTTP trong pipeline của ứng dụng
C. Một thành phần để kết nối với cơ sở dữ liệu
D. Một thành phần để tạo ra các trang HTML
22. Trong ASP.NET Core, Minimal APIs là gì?
A. Một cách để tạo ra các ứng dụng console nhỏ gọn
B. Một cách đơn giản để xây dựng các API HTTP với ít code hơn so với controllers truyền thống
C. Một cách để tạo ra các thư viện class
D. Một cách để quản lý cơ sở dữ liệu
23. Đâu là sự khác biệt giữa `HttpContext` và `HttpRequest` trong ASP.NET Core?
A. `HttpContext` đại diện cho yêu cầu HTTP, còn `HttpRequest` đại diện cho phản hồi HTTP
B. `HttpRequest` đại diện cho yêu cầu HTTP, còn `HttpContext` chứa cả yêu cầu và phản hồi HTTP
C. Cả hai đều đại diện cho yêu cầu HTTP
D. Cả hai đều đại diện cho phản hồi HTTP
24. Đâu là mục đích của Razor Pages trong ASP.NET Core?
A. Để tạo ra các API RESTful
B. Để tạo ra các trang web dựa trên mô hình Page-Based, giúp đơn giản hóa việc phát triển giao diện người dùng
C. Để quản lý cơ sở dữ liệu
D. Để thực hiện các thao tác bảo mật
25. Entity Framework Core (EF Core) là gì?
A. Một framework để xây dựng giao diện người dùng
B. Một ORM (Object-Relational Mapper) để tương tác với cơ sở dữ liệu
C. Một công cụ để triển khai ứng dụng
D. Một ngôn ngữ lập trình
26. Trong .NET, thuộc tính (attribute) được sử dụng để làm gì?
A. Để lưu trữ dữ liệu cấu hình ứng dụng
B. Để cung cấp siêu dữ liệu (metadata) cho các lớp, phương thức, hoặc thuộc tính
C. Để tạo ra các đối tượng giao diện người dùng
D. Để thực hiện các thao tác bảo mật
27. Interface và Abstract Class khác nhau như thế nào trong C#?
A. Interface có thể chứa các phương thức đã được triển khai, còn Abstract Class thì không
B. Abstract Class có thể chứa các phương thức đã được triển khai, còn Interface thì không
C. Interface có thể có các biến thành viên, còn Abstract Class thì không
D. Abstract Class hỗ trợ đa kế thừa, còn Interface thì không
28. Sự khác biệt chính giữa `Task.Run()` và `Task.Factory.StartNew()` trong .NET là gì?
A. `Task.Run()` sử dụng thread pool mặc định, `Task.Factory.StartNew()` cho phép cấu hình nhiều tùy chọn hơn
B. `Task.Factory.StartNew()` sử dụng thread pool mặc định, `Task.Run()` cho phép cấu hình nhiều tùy chọn hơn
C. `Task.Run()` chỉ chạy các tác vụ đồng bộ, `Task.Factory.StartNew()` chạy các tác vụ bất đồng bộ
D. Không có sự khác biệt nào
29. Đâu là mục đích của thuộc tính `sealed` (niêm phong) trong C#?
A. Ngăn không cho một lớp bị kế thừa
B. Ngăn không cho một phương thức bị ghi đè (override)
C. Ngăn không cho một biến bị thay đổi giá trị
D. Ngăn không cho một assembly được tải
30. Dependency Injection (DI) container trong .NET có vai trò gì?
A. Tạo ra các đối tượng người dùng
B. Quản lý các dependencies của các lớp, giúp giảm sự phụ thuộc và tăng tính kiểm thử
C. Kết nối với cơ sở dữ liệu
D. Xử lý các ngoại lệ