1. Kể tên ít nhất 3 tính năng mới có trong C# 11.
A. Raw string literals, Generic math interfaces, File-scoped types
B. Dynamic types, Anonymous methods, Extension methods
C. LINQ, Lambda expressions, Async/Await
D. Garbage Collection, Reflection, Serialization
2. LINQ (Language Integrated Query) trong .NET là gì?
A. Một tập hợp các phương thức mở rộng cho phép truy vấn dữ liệu từ nhiều nguồn khác nhau
B. Một công cụ để thiết kế giao diện người dùng
C. Một trình biên dịch mã C#
D. Một hệ thống quản lý cơ sở dữ liệu
3. Reflection trong .NET là gì?
A. Khả năng kiểm tra và thao tác metadata của các kiểu và assembly tại runtime
B. Một kỹ thuật để tối ưu hóa hiệu suất
C. Một cách để tạo ra các đối tượng
D. Một phương pháp để quản lý bộ nhớ
4. Unit testing là gì và tại sao nó quan trọng?
A. Kiểm tra từng đơn vị (unit) nhỏ nhất của mã để đảm bảo chúng hoạt động đúng
B. Kiểm tra toàn bộ ứng dụng
C. Kiểm tra giao diện người dùng
D. Kiểm tra hiệu suất của ứng dụng
5. Sự khác biệt giữ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` tại runtime
B. Không có sự khác biệt, chúng hoàn toàn giống nhau
C. `const` chỉ dùng cho kiểu số, `readonly` cho mọi kiểu
D. `readonly` nhanh hơn `const`
6. Middleware trong ASP.NET Core là gì?
A. Các thành phần xử lý HTTP request và response
B. Các thành phần để quản lý cơ sở dữ liệu
C. Các thành phần để thiết kế giao diện người dùng
D. Các thành phần để quản lý bộ nhớ
7. Sự khác biệt giữa `==` và `.Equals()` trong C# là gì?
A. `==` so sánh tham chiếu, `.Equals()` so sánh giá trị (mặc định)
B. Không có sự khác biệt, chúng hoàn toàn giống nhau
C. `==` chỉ dùng cho kiểu số, `.Equals()` cho kiểu chuỗi
D. `.Equals()` nhanh hơn `==`
8. Đâu là mục đích chính của Common Language Runtime (CLR) trong .NET?
A. Quản lý bộ nhớ và thực thi mã .NET
B. Thiết kế giao diện người dùng
C. Quản lý cơ sở dữ liệu
D. Phát triển ứng dụng web
9. Entity Framework Core (EF Core) là gì?
A. Một ORM (Object-Relational Mapper) cho .NET
B. Một công cụ để thiết kế giao diện người dùng
C. Một trình biên dịch C#
D. Một hệ thống quản lý bộ nhớ
10. 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 `interface`, nhưng chỉ có thể kế thừa một `abstract class`
B. `abstract class` có thể chứa các phương thức không trừu tượng, `interface` thì không
C. Không có sự khác biệt, chúng có thể thay thế cho nhau
D. `interface` có thể chứa các trường (fields), `abstract class` thì không
11. HttpContext trong ASP.NET Core là gì?
A. Một đối tượng chứa thông tin về request và response hiện tại
B. Một đối tượng để quản lý cơ sở dữ liệu
C. Một đối tượng để thiết kế giao diện người dùng
D. Một đối tượng để quản lý bộ nhớ
12. Ngôn ngữ lập trình nào sau đây KHÔNG được hỗ trợ trực tiếp bởi .NET Framework?
A. C#
B. F#
C. Visual Basic .NET
D. Java
13. Serialization là gì?
A. Quá trình chuyển đổi một đối tượng thành một định dạng có thể lưu trữ hoặc truyền tải
B. Quá trình tạo ra các đối tượng
C. Quá trình quản lý bộ nhớ
D. Quá trình kiểm tra lỗi
14. Event trong C# được xây dựng dựa trên khái niệm nào?
A. Delegate
B. Interface
C. Class
D. Struct
15. Sự khác biệt giữa `throw;` và `throw ex;` trong C# khi xử lý exception là gì?
A. `throw;` giữ nguyên stack trace ban đầu, `throw ex;` tạo stack trace mới
B. Không có sự khác biệt, chúng hoàn toàn giống nhau
C. `throw;` chỉ dùng cho exception loại `Exception`, `throw ex;` cho mọi loại
D. `throw ex;` nhanh hơn `throw;`
16. Delegate trong C# là gì?
A. Một kiểu dữ liệu đại diện cho một phương thức
B. Một lớp cơ sở cho tất cả các lớp
C. Một cấu trúc dữ liệu để lưu trữ dữ liệu
D. Một cách để tạo ra các luồng (threads)
17. Razor Pages trong ASP.NET Core là gì?
A. Một mô hình phát triển web đơn giản hóa dựa trên pages
B. Một công cụ để thiết kế giao diện người dùng
C. Một hệ thống quản lý cơ sở dữ liệu
D. Một trình biên dịch C#
18. NuGet là gì?
A. Một trình quản lý gói cho .NET
B. Một trình biên dịch C#
C. Một công cụ để thiết kế giao diện người dùng
D. Một hệ thống quản lý cơ sở dữ liệu
19. Garbage Collector (GC) trong .NET làm gì?
A. Tự động thu hồi bộ nhớ không còn được sử dụng
B. Tối ưu hóa hiệu suất của CPU
C. Quản lý kết nối cơ sở dữ liệu
D. Kiểm tra lỗi cú pháp trong mã
20. IActionResult trong ASP.NET Core là gì?
A. Một interface đại diện cho kết quả của một action method
B. Một interface để quản lý cơ sở dữ liệu
C. Một interface để thiết kế giao diện người dùng
D. Một interface để quản lý bộ nhớ
21. Attribute trong C# được sử dụng để làm gì?
A. Cung cấp metadata cho các lớp, phương thức, v.v.
B. Tạo ra các đối tượng
C. Định nghĩa các biến
D. Xử lý các ngoại lệ
22. `sealed` class trong C# có nghĩa là gì?
A. Không thể kế thừa từ lớp này
B. Lớp này chỉ có thể truy cập từ bên trong assembly
C. Lớp này không thể tạo ra các đối tượng
D. Lớp này tự động được dọn dẹp bởi Garbage Collector
23. Extension methods trong C# là gì?
A. Phương thức cho phép thêm chức năng vào các kiểu đã tồn tại mà không cần sửa đổi chúng
B. Phương thức chỉ có thể sử dụng bên trong một lớp
C. Phương thức để tạo ra các đối tượng
D. Phương thức để quản lý bộ nhớ
24. Boxing và Unboxing trong .NET là gì?
A. Boxing là chuyển đổi kiểu giá trị sang kiểu tham chiếu, Unboxing ngược lại
B. Boxing là chuyển đổi kiểu tham chiếu sang kiểu giá trị, Unboxing ngược lại
C. Boxing là nén dữ liệu, Unboxing là giải nén
D. Boxing là mã hóa dữ liệu, Unboxing là giải mã
25. Async và Await trong C# được sử dụng để làm gì?
A. Thực hiện các hoạt động không đồng bộ mà không chặn luồng chính
B. Tạo ra các luồng (threads)
C. Quản lý bộ nhớ
D. Tối ưu hóa hiệu suất CPU
26. Assembly trong .NET là gì?
A. Một đơn vị triển khai, chứa mã và metadata
B. Một đoạn mã được biên dịch bởi JIT
C. Một giao diện người dùng
D. Một thư viện các hàm toán học
27. Trong .NET, kiểu dữ liệu nào được sử dụng để biểu diễn một giá trị boolean?
A. Int32
B. String
C. Boolean
D. Char
28. Sự khác biệt chính giữa `List` và `ArrayList` trong .NET là gì?
A. `List` là kiểu generic, `ArrayList` thì không
B. `ArrayList` nhanh hơn `List`
C. `List` có kích thước cố định, `ArrayList` có thể thay đổi
D. Chỉ có thể sử dụng `ArrayList` trong ứng dụng web
29. Task Parallel Library (TPL) trong .NET là gì?
A. Một thư viện để đơn giản hóa việc lập trình song song
B. Một công cụ để thiết kế giao diện người dùng
C. Một trình biên dịch C#
D. Một hệ thống quản lý bộ nhớ
30. Dependency Injection (DI) là gì?
A. Một kỹ thuật thiết kế phần mềm để giảm sự phụ thuộc giữa các lớp
B. Một cách để tạo ra các đối tượng
C. Một phương pháp để quản lý bộ nhớ
D. Một công cụ để kiểm tra lỗi