1. Trong ASP.NET Core, dependency injection container được cấu hình ở đâu?
A. Trong file Program.cs hoặc Startup.cs.
B. Trong file web.config.
C. Trong file appsettings.json.
D. Trong file global.asax.
2. Trong C#, mục đích của từ khóa `sealed` là gì?
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 bị tải.
3. Delegate trong C# được sử dụng để làm gì?
A. Định nghĩa một lớp mới.
B. Tham chiếu đến một phương thức.
C. Tạo một luồng (thread) mới.
D. Quản lý bộ nhớ.
4. Trong .NET, kiểu dữ liệu nào sau đây được sử dụng để biểu diễn một số nguyên 64-bit có dấu?
A. Int32
B. Int16
C. Int64
D. Byte
5. 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 TaskScheduler mặc định, trong khi `Task.Factory.StartNew()` cho phép chỉ định TaskScheduler.
B. `Task.Factory.StartNew()` sử dụng TaskScheduler mặc định, trong khi `Task.Run()` cho phép chỉ định TaskScheduler.
C. `Task.Run()` không trả về một Task object.
D. `Task.Factory.StartNew()` chỉ có thể được sử dụng trong các ứng dụng console.
6. Trong C#, `??` operator (null-coalescing operator) được sử dụng để làm gì?
A. Để kiểm tra xem một biến có phải là null hay không.
B. Để gán một giá trị mặc định cho một biến nếu nó là null.
C. Để ném một ngoại lệ nếu một biến là null.
D. Để giải phóng bộ nhớ được sử dụng bởi một biến null.
7. 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.
C. Một framework để xây dựng giao diện người dùng.
D. Một công cụ để quản lý cơ sở dữ liệu.
8. Trong ASP.NET Core, làm thế nào để bạn cấu hình logging?
A. Chỉ thông qua file web.config.
B. Chỉ thông qua code trong Program.cs hoặc Startup.cs.
C. Thông qua appsettings.json và cấu hình trong Program.cs hoặc Startup.cs.
D. Chỉ thông qua global.asax.
9. Trong Entity Framework Core, DbSet được sử dụng để làm gì?
A. Định nghĩa cấu trúc bảng trong cơ sở dữ liệu.
B. Đại diện cho một tập hợp các thực thể (entities) trong cơ sở dữ liệu.
C. Thực hiện các truy vấn SQL trực tiếp.
D. Quản lý kết nối đến cơ sở dữ liệu.
10. `async` và `await` trong C# được sử dụng để làm gì?
A. Tạo ra các biến cục bộ.
B. Thực hiện các hoạt động đồng bộ.
C. Thực hiện các hoạt động không đồng bộ.
D. Định nghĩa các hằng số.
11. Trong C#, sự khác biệt giữa `const` và `readonly` là gì?
A. `const` được gán giá trị tại thời điểm chạy, còn `readonly` được gán giá trị tại thời điểm biên dịch.
B. `const` được gán giá trị tại thời điểm biên dịch, còn `readonly` được gán giá trị tại thời điểm chạy hoặc trong constructor.
C. Cả hai đều được gán giá trị tại thời điểm chạy.
D. Cả hai đều được gán giá trị tại thời điểm biên dịch.
12. Trong .NET, thuật ngữ `boxing` đề cập đến điều gì?
A. Chuyển đổi một kiểu tham chiếu thành một kiểu giá trị.
B. Chuyển đổi một kiểu giá trị thành một kiểu tham chiếu.
C. Đóng gói một ứng dụng để triển khai.
D. Tối ưu hóa mã để có hiệu suất tốt hơn.
13. Trong C#, mục đích của từ khóa `event` là gì?
A. Để định nghĩa một biến toàn cục.
B. Để định nghĩa một delegate có thể được subscribe và unsubscribe.
C. Để tạo một luồng (thread) mới.
D. Để quản lý bộ nhớ.
14. Trong .NET, assembly nào chứa các kiểu dữ liệu cơ bản như `Int32` và `String`?
A. System.Data.dll
B. System.Web.dll
C. System.dll
D. System.Core.dll
15. Cho đoạn code sau trong C#: `string str1 = `hello`; string str2 = `hello`; Console.WriteLine(str1 == str2);`. Kết quả in ra màn hình là gì?
A. True
B. False
C. Null
D. Compiler Error
16. Trong C#, mục đích của từ khóa `virtual` là gì?
A. Để ngăn không cho một lớp bị kế thừa.
B. Để cho phép một phương thức bị ghi đè (override) trong lớp con.
C. Để tạo một biến hằng số.
D. Để khai báo một interface.
17. Đâu là mục đích chính của garbage collector (GC) trong .NET?
A. Tối ưu hóa hiệu suất CPU.
B. Giải phóng bộ nhớ không còn được sử dụng.
C. Quản lý các kết nối cơ sở dữ liệu.
D. Xử lý các ngoại lệ.
18. Trong Entity Framework Core, phương thức nào được sử dụng để lưu các thay đổi vào cơ sở dữ liệu?
A. SaveChanges()
B. Commit()
C. Update()
D. ApplyChanges()
19. 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 C#?
A. Dispose()
B. Finalize()
C. Close()
D. Free()
20. MVC (Model-View-Controller) là một design pattern được sử dụng trong ASP.NET MVC. Chức năng chính của Controller là gì?
A. Hiển thị dữ liệu cho người dùng.
B. Quản lý dữ liệu.
C. Xử lý logic ứng dụng và tương tác giữa Model và View.
D. Định nghĩa 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.
C. Một thành phần để lưu trữ dữ liệu phiên.
D. Một thành phần để định tuyến các yêu cầu.
22. Đâu là sự khác biệt chính giữa `ArrayList` và `List` trong C#?
A. `ArrayList` là kiểu an toàn kiểu, trong khi `List` không phải.
B. `List` là kiểu an toàn kiểu, trong khi `ArrayList` không phải.
C. `ArrayList` nhanh hơn `List` khi thêm phần tử.
D. `List` có thể lưu trữ các kiểu giá trị, nhưng `ArrayList` thì không.
23. Sự khác biệt chính giữa `interface` và `abstract class` trong C# là gì?
A. Một lớp có thể kế thừa nhiều `abstract class`, nhưng chỉ có thể triển khai một `interface`.
B. Một lớp có thể triển khai nhiều `interface`, nhưng chỉ có thể kế thừa một `abstract class`.
C. `interface` có thể chứa các trường (fields), nhưng `abstract class` thì không.
D. `abstract class` không thể chứa các phương thức trừu tượng.
24. DI (Dependency Injection) là gì và nó mang lại lợi ích gì trong phát triển ứng dụng .NET?
A. Một kỹ thuật để tối ưu hóa hiệu suất ứng dụng.
B. Một kỹ thuật để giảm sự phụ thuộc giữa các thành phần của ứng dụng, tăng tính kiểm thử và bảo trì.
C. Một kỹ thuật để quản lý bộ nhớ.
D. Một kỹ thuật để xử lý các ngoại lệ.
25. Đặc điểm nào sau đây mô tả đúng nhất về thuộc tính (property) trong C#?
A. Một biến thành viên của lớp.
B. Một phương thức không trả về giá trị.
C. Một cơ chế để truy cập các biến thành viên của lớp một cách có kiểm soát.
D. Một sự kiện xảy ra khi một đối tượng được tạo.
26. Trong Entity Framework Core, phương thức `AsNoTracking()` được sử dụng để làm gì?
A. Để tắt tính năng tự động theo dõi các thay đổi của entity.
B. Để bật tính năng tự động theo dõi các thay đổi của entity.
C. Để xóa một entity khỏi context.
D. Để thêm một entity vào context.
27. Trong C#, sự khác biệt giữa `==` và phương thức `Equals()` là gì?
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ị.
C. Cả hai đều so sánh tham chiếu.
D. Cả hai đều so sánh giá trị.
28. Trong .NET, mục đích chính của thuộc tính (attribute) là gì?
A. Để định nghĩa các biến toàn cục.
B. Để cung cấp metadata (dữ liệu về dữ liệu) cho các lớp, phương thức, v.v.
C. Để thực hiện các thao tác bảo mật.
D. Để tối ưu hóa hiệu suất.
29. Trong .NET, WCF (Windows Communication Foundation) là gì?
A. Một framework để xây dựng giao diện người dùng.
B. Một framework để xây dựng các ứng dụng web.
C. Một framework để xây dựng các dịch vụ hướng dịch vụ (service-oriented applications).
D. Một công cụ để quản lý cơ sở dữ liệu.
30. Trong LINQ, phương thức mở rộng nào được sử dụng để lọc một chuỗi các phần tử dựa trên một điều kiện nhất định?
A. Select()
B. Where()
C. OrderBy()
D. GroupBy()