1. Đâu là mục đích chính của việc sử dụng NuGet trong phát triển .NET?
A. Quản lý mã nguồn dự án.
B. Quản lý và chia sẻ các thư viện và gói phần mềm bên ngoài (packages) cho dự án .NET.
C. Triển khai ứng dụng .NET lên server.
D. Tạo giao diện người dùng cho ứng dụng .NET.
2. Garbage Collection (GC) trong .NET CLR hoạt động như thế nào?
A. GC là một tiến trình thủ công, lập trình viên phải tự giải phóng bộ nhớ.
B. GC là một tiến trình tự động, định kỳ quét bộ nhớ heap để tìm và 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 gặp lỗi bộ nhớ.
D. GC chỉ giải phóng bộ nhớ của các biến cục bộ.
3. Delegates trong C# được sử dụng để làm gì?
A. Định nghĩa các lớp trừu tượng.
B. Đại diện cho tham chiếu đến các phương thức (function pointers).
C. Quản lý bộ nhớ tự động.
D. Xử lý ngoại lệ.
4. Sự khác biệt chính giữa `boxing` và `unboxing` trong C# là gì?
A. Boxing là chuyển đổi kiểu tham chiếu sang kiểu giá trị, unboxing ngược lại.
B. Boxing là chuyển đổi kiểu giá trị sang kiểu tham chiếu (object), unboxing ngược lại.
C. Boxing là quá trình tối ưu hóa mã, unboxing là gỡ lỗi mã.
D. Boxing là mã hóa dữ liệu, unboxing là giải mã dữ liệu.
5. Phương thức `Dispose()` và giao diện `IDisposable` trong .NET được sử dụng cho mục đích gì?
A. Quản lý bộ nhớ.
B. Giải phóng tài nguyên không được quản lý (unmanaged resources) như file handles, database connections, network sockets một cách chủ động và kịp thời.
C. Xử lý ngoại lệ.
D. Tối ưu hóa hiệu suất ứng dụng.
6. Đâu là lợi ích chính của việc sử dụng mô hình lập trình hướng sự kiện (Event-driven programming) trong .NET?
A. Tăng tốc độ xử lý dữ liệu.
B. Giảm mức sử dụng bộ nhớ.
C. Cho phép ứng dụng phản ứng linh hoạt với các hành động của người dùng hoặc sự kiện hệ thống một cách không đồng bộ.
D. Đơn giản hóa việc quản lý đa luồng.
7. Razor trong ASP.NET Core MVC là gì?
A. Một ngôn ngữ truy vấn cơ sở dữ liệu.
B. Một engine view (view engine) cho phép nhúng mã C# vào trang HTML để tạo ra giao diện người dùng động.
C. Một framework kiểm thử unit test.
D. Một công cụ quản lý gói NuGet.
8. Trong mô hình ASP.NET MVC, `Controller` có vai trò gì?
A. Hiển thị dữ liệu lên giao diện người dùng.
B. Xử lý logic ứng dụng, nhận request từ người dùng, tương tác với Model và chọn View để trả về response.
C. Định nghĩa cấu trúc dữ liệu và logic nghiệp vụ.
D. Quản lý kết nối cơ sở dữ liệu.
9. Reflection trong .NET cho phép làm gì?
A. Tối ưu hóa hiệu suất mã.
B. Kiểm tra metadata của assemblies, modules, types, members (fields, properties, methods, events, etc.) và tạo instance của type, gọi methods, get/set values của fields/properties tại runtime.
C. Mã hóa dữ liệu.
D. Quản lý bộ nhớ.
10. Dependency Injection (DI) là gì và lợi ích chính của nó trong .NET là gì?
A. Một kỹ thuật để tối ưu hóa hiệu suất ứng dụng.
B. Một mẫu thiết kế (design pattern) cho phép giảm sự phụ thuộc giữa các thành phần của ứng dụng, tăng tính linh hoạt và khả năng bảo trì.
C. Một phương pháp để quản lý phiên làm việc của người dùng.
D. Một công cụ để tạo giao diện người dùng đồ họa.
11. Entity Framework (EF) Core là gì và nó giúp ích gì cho việc phát triển ứng dụng .NET?
A. Một công cụ để tạo giao diện người dùng đồ họa.
B. Một Object-Relational Mapper (ORM) giúp đơn giản hóa việc tương tác với cơ sở dữ liệu từ ứng dụng .NET bằng cách làm việc với các đối tượng C# thay vì viết trực tiếp câu lệnh SQL.
C. Một framework để phát triển ứng dụng web phía client.
D. Một hệ thống quản lý phiên làm việc của người dùng.
12. Namespace nào trong .NET chứa các lớp cơ bản để làm việc với hệ thống tệp và thư mục?
A. System.Net
B. System.IO
C. System.Web
D. System.Data
13. Điểm khác biệt chính giữa .NET Framework và .NET (Core/5+) là gì?
A. .NET Framework là mã nguồn mở, còn .NET thì không.
B. .NET Framework chỉ chạy trên Windows, còn .NET có thể chạy đa nền tảng (Windows, macOS, Linux).
C. .NET Framework hỗ trợ phát triển web, còn .NET thì không.
D. .NET Framework sử dụng C#, còn .NET sử dụng VB.NET.
14. Unit testing là gì và tại sao nó quan trọng trong phát triển phần mềm .NET?
A. Kiểm thử hiệu năng của ứng dụng.
B. Kiểm thử từng đơn vị mã nhỏ nhất (ví dụ: phương thức, lớp) một cách độc lập để đảm bảo chúng hoạt động đúng như mong đợi, giúp phát hiện lỗi sớm và cải thiện chất lượng mã.
C. Kiểm thử giao diện người dùng.
D. Kiểm thử bảo mật của ứng dụng.
15. Phương thức mở rộng (Extension methods) trong C# cho phép làm gì?
A. Thay đổi hành vi của các phương thức hiện có của một lớp.
B. 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.
C. Tăng hiệu suất thực thi của các phương thức.
D. Hạn chế quyền truy cập vào các phương thức của một lớp.
16. Generics trong C# mang lại lợi ích gì?
A. Tăng tốc độ thực thi mã.
B. Cho phép viết mã có thể tái sử dụng với nhiều kiểu dữ liệu khác nhau mà vẫn đảm bảo kiểu an toàn (type safety) và hiệu suất.
C. Giảm kích thước file thực thi.
D. Đơn giản hóa việc quản lý bộ nhớ.
17. Attribute trong C# được sử dụng để làm 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 thành phần mã (lớp, phương thức, thuộc tính...). Metadata này có thể được sử dụng bởi CLR hoặc các công cụ khác.
C. Tạo ra các lớp kế thừa.
D. Quản lý bộ nhớ.
18. ViewState trong ASP.NET Web Forms được sử dụng để làm gì?
A. Lưu trữ dữ liệu phiên (session data) của người dùng.
B. Lưu trữ trạng thái của các control trên trang web giữa các postback.
C. Quản lý bộ nhớ cache.
D. Xác thực người dùng.
19. Trong .NET, Common Language Runtime (CLR) chịu trách nhiệm chính cho việc gì?
A. Biên dịch mã nguồn C# thành mã máy.
B. Quản lý bộ nhớ, thực thi mã và cung cấp các dịch vụ khác trong quá trình chạy ứng dụng.
C. Cung cấp các công cụ để thiết kế giao diện người dùng.
D. Quản lý kết nối cơ sở dữ liệu.
20. Middleware trong ASP.NET Core có vai trò gì?
A. Quản lý bộ nhớ cache.
B. Xử lý các HTTP request và response pipeline. Mỗi middleware có thể thực hiện một tác vụ cụ thể như xác thực, logging, routing, v.v.
C. Kết nối với cơ sở dữ liệu.
D. Hiển thị giao diện người dùng.
21. Serialization và Deserialization trong .NET được sử dụng để làm gì?
A. Mã hóa và giải mã dữ liệu.
B. Chuyển đổi đối tượng sang định dạng có thể lưu trữ hoặc truyền tải (serialization) và ngược lại (deserialization).
C. Kiểm tra và sửa lỗi dữ liệu.
D. Tối ưu hóa hiệu suất truy cập dữ liệu.
22. IActionResult trong ASP.NET Core MVC được sử dụng để làm gì?
A. Định nghĩa interface cho các Controller.
B. Đại diện cho kết quả trả về từ một action method trong Controller. Nó cho phép trả về các loại response khác nhau như View, JSON, Redirect, File, v.v.
C. Quản lý trạng thái của ứng dụng.
D. Xác thực người dùng.
23. CLS (Common Language Specification) trong .NET Framework có vai trò gì?
A. Đảm bảo hiệu suất thực thi mã tối ưu.
B. Cho phép các thành phần được viết bằng các ngôn ngữ .NET khác nhau có thể tương tác với nhau.
C. Quy định các chuẩn bảo mật cho ứng dụng .NET.
D. Định nghĩa các thư viện lớp cơ sở của .NET Framework.
24. Async và Await trong C# được sử dụng để giải quyết vấn đề gì?
A. Quản lý bộ nhớ hiệu quả hơn.
B. Thực hiện các tác vụ không đồng bộ (asynchronous operations) mà không làm treo (block) luồng chính của ứng dụng.
C. Tăng cường bảo mật cho ứng dụng.
D. Đơn giản hóa việc truy cập cơ sở dữ liệu.
25. CTS (Common Type System) trong .NET Framework định nghĩa điều gì?
A. Quy tắc đặt tên biến và hàm.
B. Một tập hợp các kiểu dữ liệu mà tất cả các ngôn ngữ .NET đều phải tuân theo.
C. Tiêu chuẩn để thiết kế giao diện người dùng đồ họa.
D. Cách thức các ứng dụng .NET tương tác với hệ điều hành.
26. Sự khác biệt giữa `Value Type` và `Reference Type` trong C# là gì?
A. Value Type được lưu trữ trên heap, Reference Type trên stack.
B. Value Type lưu trữ trực tiếp giá trị của nó, Reference Type lưu trữ tham chiếu (địa chỉ bộ nhớ) đến giá trị.
C. Value Type chỉ có thể là kiểu số, Reference Type có thể là bất kỳ kiểu nào.
D. Không có sự khác biệt, `Value Type` và `Reference Type` là như nhau.
27. LINQ (Language Integrated Query) trong .NET Framework cho phép thực hiện truy vấn dữ liệu trên những nguồn dữ liệu nào?
A. Chỉ cơ sở dữ liệu quan hệ (SQL Server, MySQL).
B. Chỉ dữ liệu XML.
C. Bất kỳ nguồn dữ liệu nào triển khai giao diện IEnumerable hoặc IQueryable (bao gồm Collections, XML, Databases...).
D. Chỉ các dịch vụ web (Web Services).
28. Exception handling (xử lý ngoại lệ) trong .NET (try-catch-finally) được sử dụng để làm gì?
A. Tăng tốc độ ứng dụng.
B. Xử lý các lỗi runtime (ngoại lệ) một cách có kiểm soát, ngăn chặn ứng dụng bị crash và cho phép phục hồi hoặc xử lý lỗi một cách thích hợp.
C. Quản lý bộ nhớ.
D. Xác thực người dùng.
29. Sự khác biệt giữa `interface` và `abstract class` trong C# là gì?
A. Interface có thể chứa implementation cho phương thức, abstract class thì không.
B. Một lớp có thể kế thừa nhiều interface, nhưng chỉ có thể kế thừa một abstract class.
C. Abstract class chỉ dùng cho kiểu dữ liệu giá trị (value type), interface chỉ dùng cho kiểu tham chiếu (reference type).
D. Không có sự khác biệt, `interface` và `abstract class` là như nhau.
30. Kestrel trong ASP.NET Core là gì?
A. Một công cụ quản lý cơ sở dữ liệu.
B. Một web server đa nền tảng, mã nguồn mở, mặc định cho ASP.NET Core.
C. Một ORM (Object-Relational Mapper).
D. Một công cụ để tạo unit tests.