1. Trong .NET, đâu là mục đích của Global Assembly Cache (GAC)?
A. Lưu trữ các assembly private của ứng dụng.
B. Lưu trữ các assembly được chia sẻ bởi nhiều ứng dụng.
C. Lưu trữ các file cấu hình.
D. Lưu trữ các file tạm thời.
2. Đâu là lợi ích của việc sử dụng NuGet trong .NET?
A. Giảm kích thước của file thực thi.
B. Đơn giản hóa việc quản lý và cài đặt các thư viện và packages bên ngoài.
C. Tăng tốc độ biên dịch.
D. Tự động tối ưu hóa code.
3. Đâu là sự khác biệt chính giữa `ArrayList` và `List` trong C#?
A. `ArrayList` là kiểu generic, còn `List` là non-generic.
B. `ArrayList` là non-generic (chứa các đối tượng kiểu object), còn `List` là generic (cho phép chỉ định kiểu dữ liệu).
C. `ArrayList` nhanh hơn `List`.
D. `ArrayList` không cần import namespace, còn `List` thì cần.
4. Trong ASP.NET MVC, Action Filter là gì?
A. Một thành phần để xác thực người dùng.
B. Một thành phần để thực hiện logic trước hoặc sau khi một action được thực thi.
C. Một thành phần để định nghĩa routes.
D. Một thành phần để quản lý session.
5. Trong C#, từ khóa nào được sử dụng để khai báo một hằng số?
A. static
B. readonly
C. const
D. immutable
6. Đâ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ớ bằng cách tự động giải phóng bộ nhớ không còn được sử dụng.
C. Xử lý các ngoại lệ (exceptions).
D. Kiểm soát quyền truy cập vào các tài nguyên hệ thống.
7. Trong .NET, Assembly là gì?
A. Một đoạn mã không thể thực thi.
B. Một đơn vị triển khai, chứa mã IL, metadata và resources.
C. Một thư viện chứa các hàm toán học.
D. Một công cụ để debug code.
8. Trong .NET, cái gì xảy ra khi một exception không được xử lý?
A. Ứng dụng tiếp tục chạy bình thường.
B. Ứng dụng bị crash.
C. Exception được ghi vào log và ứng dụng tiếp tục.
D. Hệ điều hành tự động xử lý exception.
9. Trong C#, sự khác biệt giữa `throw;` và `throw ex;` trong một khối catch là gì?
A. `throw;` giữ nguyên stack trace gốc, `throw ex;` tạo một stack trace mới.
B. `throw ex;` giữ nguyên stack trace gốc, `throw;` tạo một stack trace mới.
C. Cả hai đều giống nhau.
D. `throw ex;` ném một exception mới, `throw;` ném exception hiện tại.
10. Trong .NET, LINQ là viết tắt của cụm từ nào?
A. Language Integrated Network Query
B. Language Independent Native Query
C. Language Integrated Query
D. Linked Interface Native Query
11. Trong Entity Framework, kỹ thuật nào được sử dụng để ánh xạ các lớp .NET với các bảng trong cơ sở dữ liệu?
A. Code First
B. Database First
C. Model First
D. Object-Relational Mapping (ORM)
12. Trong C#, sự khác biệt giữa `struct` và `class` là gì?
A. `struct` là kiểu tham chiếu, `class` là kiểu giá trị.
B. `struct` là kiểu giá trị, `class` là kiểu tham chiếu.
C. Không có sự khác biệt.
D. `struct` hỗ trợ kế thừa, `class` thì không.
13. Phương thức nào của đối tượng `Stream` được sử dụng để đọc dữ liệu từ một stream?
A. Write()
B. Flush()
C. Close()
D. Read()
14. 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 ORM framework.
D. Một công cụ để debug code.
15. Trong C#, từ khóa `yield` được sử dụng để làm gì?
A. Để tạo một thread mới.
B. Để trả về một chuỗi các giá trị từ một iterator.
C. Để xác định một hằng số.
D. Để tạo một class static.
16. Đâu là ưu điểm của việc sử dụng Dependency Injection (DI) trong .NET?
A. Giảm kích thước của ứng dụng.
B. Tăng tính bảo mật của ứng dụng.
C. Tăng tính testable, maintainable và loosely coupled của code.
D. Giảm thời gian biên dịch (compilation time).
17. Trong C#, từ khóa `sealed` được sử dụng để làm gì?
A. Ngăn chặn việc tạo instance của một class.
B. Ngăn chặn một class khác kế thừa từ class đó.
C. Bảo vệ một biến khỏi bị thay đổi giá trị.
D. Tạo ra một class abstract.
18. Trong ASP.NET Core, dependency injection container được cấu hình ở đâu?
A. Trong file web.config.
B. Trong phương thức ConfigureServices() của class Startup.
C. Trong file Program.cs.
D. Trong Global.asax.
19. Trong C#, thuộc tính nào cho phép bạn chỉ định rằng một tham số phương thức là tùy chọn?
A. [Required]
B. [Optional]
C. [DefaultValue]
D. [Params]
20. Trong .NET, đâu là mục đích của thuộc tính `[Serializable]`?
A. Đánh dấu một class là chỉ đọc.
B. Cho phép một đối tượng của class có thể được serialized và deserialized.
C. Ngăn chặn class khỏi bị kế thừa.
D. Tạo một singleton pattern.
21. Đâu là mục đích chính của thuộc tính `ViewBag` trong ASP.NET MVC?
A. Lưu trữ dữ liệu phiên (session data).
B. Truyền dữ liệu từ Controller đến View.
C. Xử lý các yêu cầu HTTP.
D. Xác thực người dùng.
22. Trong ASP.NET Core, middleware là gì?
A. Một thành phần để định nghĩa giao diện người dùng.
B. Một thành phần để xử lý các request và response HTTP.
C. Một công cụ để quản lý database.
D. Một thư viện chứa các hàm tiện ích.
23. Trong .NET, Delegate là gì?
A. Một biến lưu trữ một giá trị.
B. Một kiểu tham chiếu đến một hoặc nhiều phương thức.
C. Một class cơ sở.
D. Một interface.
24. Trong .NET, thuộc tính (Attribute) là gì?
A. Một loại biến đặc biệt.
B. Một cách để thêm metadata vào code.
C. Một phương thức static.
D. Một kiểu dữ liệu mới.
25. Trong .NET, đâu là mục đích của `IDisposable` interface?
A. Để đánh dấu một class là immutable.
B. Để cung cấp một cơ chế để giải phóng tài nguyên không được quản lý (unmanaged resources).
C. Để tạo một singleton pattern.
D. Để đánh dấu một class là serializable.
26. Interface và Abstract Class trong C# khác nhau như thế nào?
A. Interface có thể chứa các phương thức đã được triển khai, Abstract Class thì không.
B. Class có thể kế thừa nhiều Interface, nhưng chỉ có thể kế thừa một Abstract Class.
C. Abstract Class không thể chứa các thuộc tính.
D. Interface có thể có các trường (fields).
27. Trong ASP.NET Core, làm thế nào để bạn cấu hình logging?
A. Trong file web.config.
B. Trong phương thức Configure() của class Startup sử dụng ILoggerFactory.
C. Trong file Program.cs.
D. Trong Global.asax.
28. Trong .NET, kiểu dữ liệu nào được sử dụng để biểu diễn một giá trị boolean (true hoặc false)?
A. Int32
B. String
C. Boolean
D. Char
29. Trong C#, sự khác biệt giữa `==` và phương thức `Equals()` là gì?
A. `==` so sánh tham chiếu, `Equals()` so sánh giá trị.
B. `==` so sánh giá trị, `Equals()` so sánh tham chiếu.
C. Cả hai đều so sánh tham chiếu.
D. Cả hai đều so sánh giá trị.
30. Đâu là lợi ích của việc sử dụng async và await trong C#?
A. Giảm mức sử dụng bộ nhớ.
B. Cải thiện hiệu suất bằng cách cho phép thực hiện các tác vụ không đồng bộ mà không làm block thread chính.
C. Tăng tính bảo mật.
D. Đơn giản hóa việc quản lý bộ nhớ.