1. Trong C#, `sealed class` có nghĩa là gì?
A. Class chỉ có thể chứa các phương thức static
B. Class không thể được kế thừa bởi bất kỳ class nào khác
C. Class chỉ có thể được khởi tạo một lần duy nhất
D. Class chỉ có thể truy cập được trong cùng assembly
2. LINQ (Language Integrated Query) trong .NET Framework cho phép truy vấn dữ liệu từ nguồn nào?
A. Chỉ cơ sở dữ liệu quan hệ (Relational databases)
B. Chỉ XML documents
C. Bất kỳ nguồn dữ liệu nào triển khai IEnumerable hoặc IQueryable
D. Chỉ file văn bản (Text files)
3. NuGet là gì trong hệ sinh thái .NET?
A. Một trình biên dịch C#
B. Một công cụ quản lý package (package manager) cho .NET
C. Một framework để xây dựng UI
D. Một loại cơ sở dữ liệu NoSQL
4. ViewState trong ASP.NET Web Forms được sử dụng để làm gì?
A. Lưu trữ dữ liệu phía server
B. Lưu trữ trạng thái của các control và dữ liệu trang giữa các postback trên client
C. Quản lý session của người dùng
D. Xác thực người dùng
5. Framework .NET cung cấp cơ chế quản lý bộ nhớ tự động nào?
A. Giải phóng bộ nhớ thủ công (Manual memory deallocation)
B. Đếm tham chiếu (Reference counting)
C. Thu gom rác (Garbage Collection)
D. Quản lý bộ nhớ dựa trên vùng (Region-based memory management)
6. Đâu là mục đích chính của không gian tên (namespace) trong C#?
A. Tăng tốc độ biên dịch mã
B. Quản lý bộ nhớ hiệu quả hơn
C. Tránh xung đột tên và tổ chức mã nguồn
D. Cải thiện hiệu suất ứng dụng khi chạy
7. Delegates trong C# đóng vai trò tương tự như khái niệm nào trong C/C++?
A. Con trỏ (Pointers)
B. Hàm (Functions)
C. Lớp (Classes)
D. Macro
8. Đâu KHÔNG phải là một lợi ích của việc sử dụng .NET?
A. Khả năng phát triển ứng dụng đa nền tảng (cross-platform)
B. Hiệu suất thực thi rất cao trong mọi trường hợp so với các ngôn ngữ khác
C. Hệ sinh thái thư viện và công cụ phát triển phong phú
D. Môi trường phát triển tích hợp (IDE) mạnh mẽ như Visual Studio
9. Đâu là mục đích của `using statement` trong C# khi làm việc với các đối tượng IDisposable?
A. Tăng tốc độ truy cập đối tượng
B. Đảm bảo phương thức Dispose() được gọi tự động khi đối tượng không còn sử dụng, ngay cả khi có exception
C. Giảm dung lượng bộ nhớ sử dụng bởi đối tượng
D. Kiểm soát truy cập đồng thời vào đối tượng
10. Trong ASP.NET Core, middleware là gì?
A. Một loại cơ sở dữ liệu
B. Một thành phần xử lý HTTP request và response pipeline
C. Một công cụ để quản lý dependencies
D. Một ngôn ngữ lập trình phía client
11. Dependency Injection (DI) trong .NET giúp đạt được mục tiêu thiết kế phần mềm nào?
A. Tăng hiệu suất ứng dụng
B. Giảm độ phức tạp của code
C. Giảm sự phụ thuộc giữa các thành phần và tăng tính kiểm thử
D. Tăng cường bảo mật ứng dụng
12. Garbage Collection trong .NET hoạt động theo cơ chế nào là chủ yếu?
A. Đếm tham chiếu (Reference counting)
B. Mark and Sweep (Đánh dấu và quét)
C. Giải phóng bộ nhớ thủ công (Manual deallocation)
D. Dựa trên vùng nhớ (Region-based)
13. Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu giá trị (value type) trong C#?
A. int
B. char
C. struct
D. string
14. Generic trong C# mang lại lợi ích chính nào?
A. Tăng tốc độ biên dịch
B. Cải thiện khả năng tái sử dụng code và type safety
C. Giảm kích thước file thực thi
D. Đơn giản hóa việc quản lý bộ nhớ
15. Entity Framework Core (EF Core) là một ORM (Object-Relational Mapper) dành cho .NET. ORM có vai trò chính là gì?
A. Tăng tốc độ truy vấn cơ sở dữ liệu
B. Giảm dung lượng cơ sở dữ liệu
C. Ánh xạ giữa đối tượng (object) trong code và bảng (table) trong cơ sở dữ liệu
D. Bảo vệ cơ sở dữ liệu khỏi tấn công SQL injection
16. Khái niệm `Boxing` trong C# mô tả quá trình chuyển đổi từ kiểu dữ liệu nào sang kiểu dữ liệu nào?
A. Từ kiểu tham chiếu (reference type) sang kiểu giá trị (value type)
B. Từ kiểu giá trị (value type) sang kiểu tham chiếu (reference type)
C. Từ kiểu số nguyên (integer type) sang kiểu số thực (floating-point type)
D. Từ kiểu dữ liệu này sang kiểu dữ liệu khác một cách ngầm định
17. WPF (Windows Presentation Foundation) trong .NET được sử dụng để phát triển loại ứng dụng nào?
A. Ứng dụng web server
B. Ứng dụng dòng lệnh (Console applications)
C. Ứng dụng desktop với giao diện người dùng đồ họa phong phú (rich UI)
D. Ứng dụng cơ sở dữ liệu
18. Ngôn ngữ lập trình chính được sử dụng để phát triển ứng dụng .NET là gì?
A. Java
B. Python
C. C#
D. JavaScript
19. Phương thức `Dispose()` trong .NET thường được sử dụng để làm gì?
A. Giải phóng bộ nhớ của đối tượng
B. Đóng kết nối đến cơ sở dữ liệu hoặc tài nguyên bên ngoài
C. Khởi tạo lại các biến thành viên của đối tượng
D. Gọi Garbage Collector ngay lập tức
20. Attribute trong C# được dùng để làm gì?
A. Tăng tốc độ thực thi chương trình
B. Thêm metadata vào mã nguồn
C. Thay đổi hành vi của Garbage Collector
D. Kiểm soát truy cập vào các thành viên lớp
21. Phiên bản .NET Core khác biệt chính so với .NET Framework truyền thống ở điểm nào?
A. Chỉ hỗ trợ ngôn ngữ C#
B. Là nền tảng đa nền tảng (cross-platform) và mã nguồn mở
C. Không hỗ trợ các ứng dụng web
D. Hiệu suất kém hơn .NET Framework
22. Reflection trong .NET cho phép ứng dụng làm gì?
A. Tối ưu hóa hiệu suất ứng dụng
B. Kiểm tra metadata và thông tin kiểu của assembly và types tại runtime
C. Mã hóa và giải mã dữ liệu
D. Quản lý phiên bản của các thư viện
23. Boxing và Unboxing có thể gây ra vấn đề hiệu suất nào trong .NET?
A. Tăng thời gian biên dịch
B. Tăng chi phí bộ nhớ và thời gian thực thi do overhead của việc chuyển đổi kiểu
C. Gây ra lỗi tràn stack
D. Giảm hiệu suất Garbage Collection
24. Async và Await trong C# được sử dụng chủ yếu để giải quyết vấn đề gì?
A. Tăng tốc độ xử lý tính toán
B. Cải thiện khả năng phản hồi của ứng dụng UI khi thực hiện các tác vụ I/O
C. Giảm mức sử dụng bộ nhớ của ứng dụng
D. Đơn giản hóa việc quản lý đa luồng
25. Sự khác biệt chính giữa `throw` và `throw ex` (khi bắt exception trong catch block) trong C# là gì?
A. Không có sự khác biệt, chúng tương đương
B. `throw` giữ nguyên stack trace gốc, `throw ex` reset stack trace
C. `throw` chỉ dùng cho custom exceptions, `throw ex` cho built-in exceptions
D. `throw ex` nhanh hơn về hiệu suất
26. Extension methods trong C# cho phép làm gì?
A. Thay đổi hành vi của các toán tử
B. Thêm 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 code gốc
C. Tạo ra các class abstract tự động
D. Tăng cường bảo mật cho các phương thức
27. Trong .NET, CLR là viết tắt của cụm từ nào?
A. Common Language Runtime
B. Component Library Resource
C. Compiled Language Registry
D. Core Logic Repository
28. Razor trong ASP.NET Core được sử dụng để làm gì?
A. Quản lý session và cookies
B. Xây dựng giao diện người dùng (UI) động với C#
C. Xử lý authentication và authorization
D. Tạo và quản lý cơ sở dữ liệu
29. Sự khác biệt chính giữa `public`, `private` và `protected` modifiers trong C# là gì?
A. Chúng ảnh hưởng đến hiệu suất thực thi của code
B. Chúng kiểm soát mức độ truy cập (access level) đến các thành viên của class
C. Chúng quyết định kiểu dữ liệu của các thành viên class
D. Chúng xác định vị trí lưu trữ bộ nhớ của đối tượng
30. Đâu là sự khác biệt chính giữa `interface` và `abstract class` trong C#?
A. Interface có thể chứa code thực thi, abstract class thì không
B. Class có thể kế thừa nhiều interface, nhưng chỉ kế thừa một abstract class
C. Abstract class chỉ có thể chứa các phương thức abstract, interface thì không
D. Không có sự khác biệt, chúng có thể thay thế cho nhau hoàn toàn