1. NuGet Package Manager trong .NET dùng để làm gì?
A. Biên dịch mã nguồn C#
B. Quản lý các thư viện và packages bên ngoài mà dự án sử dụng
C. Gỡ lỗi ứng dụng .NET
D. Tạo giao diện người dùng cho ứng dụng
2. WinForms (Windows Forms) là một framework UI cũ hơn trong .NET Framework. So với WPF, WinForms có ưu điểm gì?
A. Giao diện người dùng đẹp và hiện đại hơn
B. Dễ học và dễ sử dụng hơn cho các ứng dụng đơn giản
C. Hiệu suất tốt hơn cho các ứng dụng phức tạp
D. Hỗ trợ tốt hơn cho đồ họa vector và animation
3. Giá trị trả về của phương thức `ToString()` mặc định của một đối tượng trong C# là gì?
A. Null
B. Chuỗi rỗng
C. Tên đầy đủ của kiểu đối tượng
D. Giá trị của đối tượng
4. LINQ (Language Integrated Query) trong .NET Framework cung cấp cách truy vấn dữ liệu từ nguồn nào?
A. Chỉ từ cơ sở dữ liệu quan hệ (SQL)
B. Chỉ từ XML documents
C. Từ nhiều nguồn dữ liệu khác nhau, bao gồm collections, databases, XML, và hơn thế nữa
D. Chỉ từ file văn bản
5. ADO.NET trong .NET Framework và .NET cung cấp cơ chế nào để truy cập dữ liệu?
A. Chỉ hỗ trợ truy cập cơ sở dữ liệu SQL Server
B. Cung cấp các đối tượng để kết nối, truy vấn, và thao tác dữ liệu từ nhiều loại nguồn dữ liệu khác nhau
C. Chỉ hỗ trợ truy cập dữ liệu XML
D. Là một ORM như Entity Framework Core
6. Interface (Giao diện) trong C# khác biệt với abstract class (lớp trừu tượng) ở điểm nào?
A. Interface có thể chứa code thực thi, abstract class thì không
B. Một lớp có thể kế thừa từ nhiều abstract class, nhưng chỉ có thể implement một interface
C. Một lớp có thể implement nhiều interface, nhưng chỉ có thể kế thừa từ một abstract class
D. Interface không thể chứa thuộc tính, abstract class có thể
7. Generic trong C# mang lại lợi ích chính nào?
A. Tăng tốc độ biên dịch code
B. Tái sử dụng code và type safety (an toàn kiểu dữ liệu) khi làm việc với các kiểu dữ liệu khác nhau
C. Giảm kích thước file thực thi
D. Đơn giản hóa việc quản lý bộ nhớ
8. Phương thức `Dispose()` và interface `IDisposable` trong .NET được sử dụng để làm gì?
A. Giải phóng bộ nhớ không được quản lý (unmanaged resources) một cách thủ công và xác định
B. Quản lý bộ nhớ tự động (garbage collection)
C. Xử lý ngoại lệ
D. Tối ưu hóa hiệu suất code
9. .NET CLI (Command-Line Interface) được sử dụng để thực hiện các tác vụ nào?
A. Chỉ để tạo dự án web ASP.NET Core
B. Chỉ để chạy ứng dụng .NET
C. Để tạo, xây dựng, chạy, kiểm thử, và publish ứng dụng .NET từ dòng lệnh
D. Chỉ để quản lý NuGet packages
10. Ngôn ngữ lập trình nào sau đây KHÔNG phải là ngôn ngữ chính thức được hỗ trợ bởi .NET?
A. C#
B. VB.NET
C. F#
D. Java
11. Namespace `System` trong .NET Base Class Library chứa các lớp và kiểu dữ liệu nào?
A. Chỉ các lớp liên quan đến giao diện người dùng
B. Các kiểu dữ liệu cơ bản, lớp cơ sở, và namespace cốt lõi của .NET
C. Chỉ các lớp liên quan đến truy cập cơ sở dữ liệu
D. Chỉ các lớp liên quan đến web development
12. Kiểu dữ liệu `value type` trong C# khác biệt với `reference type` chủ yếu ở điểm nào?
A. Value type được lưu trữ trên heap, reference type trên stack
B. Value type chứa giá trị trực tiếp, reference type chứa tham chiếu đến giá trị
C. Value type có thể null, reference type không thể null
D. Value type hỗ trợ kế thừa, reference type không hỗ trợ
13. .NET MAUI (Multi-platform App UI) là framework UI mới của .NET, mục tiêu chính của MAUI là gì?
A. Thay thế hoàn toàn WPF cho ứng dụng desktop Windows
B. Xây dựng ứng dụng web cross-platform
C. Cho phép phát triển ứng dụng mobile và desktop cross-platform từ một codebase duy nhất
D. Chỉ hỗ trợ phát triển ứng dụng cho macOS
14. CTS (Common Type System) trong .NET Framework có vai trò chính là gì?
A. Quản lý bộ nhớ tự động (Garbage Collection)
B. Định nghĩa tập hợp các kiểu dữ liệu mà tất cả các ngôn ngữ .NET đều tuân thủ
C. Cung cấp môi trường thực thi mã an toàn
D. Hỗ trợ biên dịch mã nguồn sang mã máy
15. ASP.NET Core khác biệt so với ASP.NET MVC 5 (trên .NET Framework) chủ yếu ở điểm nào?
A. ASP.NET Core chỉ hỗ trợ Razor Pages, không hỗ trợ MVC
B. ASP.NET Core là cross-platform và có hiệu suất cao hơn
C. ASP.NET Core không hỗ trợ Dependency Injection
D. ASP.NET Core sử dụng ngôn ngữ lập trình khác với ASP.NET MVC 5
16. Đâu là thành phần cốt lõi của .NET runtime, chịu trách nhiệm biên dịch mã IL (Intermediate Language) sang mã máy?
A. CTS (Common Type System)
B. CLS (Common Language Specification)
C. CLR (Common Language Runtime)
D. FCL (Framework Class Library)
17. Reflection (Phản xạ) trong .NET cho phép làm gì?
A. Thay đổi code đang chạy
B. Kiểm tra và thao tác metadata của các kiểu dữ liệu và assembly (thư viện) tại runtime
C. Tăng tốc độ thực thi code
D. Tự động tạo giao diện người dùng
18. Entity Framework (EF) Core là một ORM (Object-Relational Mapper) cho .NET. Vai trò chính của ORM là gì?
A. Tối ưu hóa hiệu suất truy vấn cơ sở dữ liệu
B. Ánh xạ giữa đối tượng trong code và bảng trong cơ sở dữ liệu, giúp thao tác dữ liệu dễ dàng hơn
C. Quản lý kết nối cơ sở dữ liệu
D. Tạo giao diện người dùng cho ứng dụng cơ sở dữ liệu
19. Sự kiện (events) trong C# hoạt động dựa trên cơ chế nào?
A. Kế thừa (Inheritance)
B. Đa hình (Polymorphism)
C. Delegates (Ủy thác)
D. Reflection (Phản xạ)
20. Sự khác biệt chính giữa .NET Framework và .NET (phiên bản mới hơn, trước đây là .NET Core) là gì?
A. .NET Framework là mã nguồn mở, .NET thì không
B. .NET Framework chỉ chạy trên Windows, .NET là cross-platform (đa nền tảng)
C. .NET Framework hỗ trợ mobile development, .NET thì không
D. .NET Framework nhanh hơn .NET
21. Delegates trong C# được sử dụng để làm gì?
A. Định nghĩa giao diện cho các lớp
B. Đóng gói phương thức như một đối tượng và truyền nó như tham số
C. Quản lý bộ nhớ và thu gom rác
D. Xử lý ngoại lệ và lỗi
22. Boxing và unboxing trong C# liên quan đến việc chuyển đổi giữa kiểu nào?
A. Giữa kiểu số nguyên và kiểu số thực
B. Giữa kiểu value type và kiểu reference type
C. Giữa kiểu dữ liệu nguyên thủy và kiểu dữ liệu phức tạp
D. Giữa các ngôn ngữ lập trình khác nhau trong .NET
23. Async và await trong C# được sử dụng chủ yếu để giải quyết vấn đề gì?
A. Tăng tốc độ tính toán CPU-bound
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-bound
C. Giảm mức sử dụng bộ nhớ
D. Đơn giản hóa việc quản lý đa luồng phức tạp
24. Khái niệm `Extension Methods` trong C# cho phép làm gì?
A. Thêm phương thức mới vào một lớp đã tồn tại mà không cần kế thừa hoặc sửa đổi lớp gốc
B. Thay đổi hành vi của các phương thức hiện có trong một lớp
C. Tạo lớp con từ một lớp cha
D. Ẩn các phương thức của lớp cha trong lớp con
25. CLS (Common Language Specification) trong .NET Framework mở rộng CTS bằng cách nào?
A. Định nghĩa các quy tắc để các ngôn ngữ .NET có thể tương tác với nhau
B. Cung cấp các công cụ để phát triển ứng dụng web
C. Tối ưu hóa hiệu suất thực thi mã
D. Hỗ trợ đa luồng và xử lý song song
26. WPF (Windows Presentation Foundation) trong .NET Framework được sử dụng để xây dựng loại ứng dụng nào?
A. Ứng dụng web
B. Ứng dụng dòng lệnh
C. Ứng dụng desktop Windows với giao diện người dùng đồ họa phong phú
D. Ứng dụng mobile
27. Framework Class Library (FCL) trong .NET cung cấp gì cho nhà phát triển?
A. Môi trường thực thi mã
B. Trình biên dịch mã nguồn
C. Một tập hợp lớn các lớp và giao diện dựng sẵn để thực hiện các tác vụ phổ biến
D. Công cụ quản lý dự án và gỡ lỗi
28. Garbage Collection (GC) trong .NET runtime hoạt động như thế nào?
A. Nhà phát triển phải tự giải phóng bộ nhớ thủ công
B. GC tự động giải phóng bộ nhớ không còn được tham chiếu bởi ứng dụng
C. GC chỉ hoạt động khi ứng dụng tắt
D. GC không tồn tại trong .NET, bộ nhớ phải được quản lý hoàn toàn thủ công
29. Attribute trong C# được sử dụng để làm gì?
A. Định nghĩa các biến thành viên của một lớp
B. Cung cấp metadata (siêu dữ liệu) cho code, có thể được sử dụng bởi runtime hoặc các công cụ khác
C. Thực hiện các phép toán số học
D. Quản lý bộ nhớ
30. Dependency Injection (DI) trong .NET Core và .NET có lợi ích chính nào?
A. Tăng hiệu suất ứng dụng
B. Giảm độ phức tạp của code và tăng khả năng kiểm thử
C. Tự động quản lý bộ nhớ
D. Cải thiện bảo mật ứng dụng