1. Extension methods trong C# cho phép làm gì?
A. Thay đổi implementation của phương thức đã có sẵn trong một lớp.
B. Thêm phương thức mới vào một kiểu dữ liệu đã tồn tại mà không cần sửa đổi trực tiếp lớp đó.
C. Tạo ra các lớp con từ một lớp đã có.
D. Ẩn các phương thức của một lớp để tăng tính bảo mật.
2. Delegate trong C# được sử dụng để làm gì?
A. Định nghĩa một lớp cơ sở trừu tượng.
B. Đại diện cho tham chiếu đến một phương thức.
C. Tạo một biến toàn cục.
D. Thực hiện đa luồng.
3. Đâu là cách khai báo một biến kiểu số nguyên 32-bit trong C#?
A. short myInt;
B. long myInt;
C. int myInt;
D. byte myInt;
4. Dependency Injection (DI) là gì và lợi ích chính của nó trong .NET là gì?
A. Một kỹ thuật để bảo mật thông tin cấu hình ứng dụng.
B. Một design pattern cho phép tách sự phụ thuộc giữa các component, giúp code dễ kiểm thử, bảo trì và mở rộng hơn.
C. Một phương pháp để tối ưu hóa hiệu suất ứng dụng.
D. Một cách để quản lý bộ nhớ hiệu quả hơn.
5. NuGet Package Manager trong .NET dùng để làm gì?
A. Quản lý phiên bản của .NET Framework.
B. Quản lý và cài đặt các thư viện và công cụ bên ngoài (packages) vào dự án .NET.
C. Biên dịch mã nguồn thành mã thực thi.
D. Gỡ lỗi ứng dụng .NET.
6. Cross-Origin Resource Sharing (CORS) là gì trong ngữ cảnh phát triển web ASP.NET Core?
A. Một kỹ thuật để tối ưu hóa tốc độ tải trang web.
B. Một cơ chế bảo mật trình duyệt web, kiểm soát việc một trang web có thể yêu cầu tài nguyên từ một domain khác hay không.
C. Một phương pháp để triển khai ứng dụng web lên nhiều server.
D. Một cách để xác thực người dùng trên web.
7. Sự khác biệt giữa `IEnumerable` và `IQueryable` trong LINQ là gì?
A. `IEnumerable` dùng cho truy vấn dữ liệu trong bộ nhớ, `IQueryable` dùng cho truy vấn dữ liệu từ cơ sở dữ liệu.
B. `IEnumerable` thực hiện truy vấn phía server, `IQueryable` thực hiện truy vấn phía client.
C. `IEnumerable` hỗ trợ lazy loading, `IQueryable` thì không.
D. Không có sự khác biệt, chúng có thể dùng thay thế cho nhau.
8. Boxing và Unboxing trong C# là gì?
A. Kỹ thuật đóng gói và giải nén dữ liệu để truyền qua mạng.
B. Quá trình chuyển đổi giữa kiểu giá trị (value type) và kiểu tham chiếu (reference type) trong .NET.
C. Cơ chế bảo mật để ẩn dữ liệu bên trong đối tượng.
D. Phương pháp tối ưu hóa hiệu suất bằng cách giảm kích thước dữ liệu.
9. Entity Framework (EF) Core là gì trong .NET?
A. Một thư viện để tạo giao diện người dùng đồ họa.
B. Một ORM (Object-Relational Mapper) giúp làm việc với cơ sở dữ liệu dễ dàng hơn.
C. Một công cụ để triển khai ứng dụng web lên server.
D. Một framework để xây dựng microservices.
10. `sealed` class trong C# có ý nghĩa gì?
A. Lớp chỉ có thể được truy cập từ bên trong assembly.
B. Lớp không thể được kế thừa bởi bất kỳ lớp nào khác.
C. Lớp chỉ chứa các phương thức tĩnh.
D. Lớp được tối ưu hóa cho hiệu suất cao nhất.
11. Trong ASP.NET Core, Kestrel là gì?
A. Một framework JavaScript phía client.
B. Một web server đa nền tảng, mã nguồn mở, mặc định cho ASP.NET Core.
C. Một công cụ quản lý cơ sở dữ liệu cho ASP.NET Core.
D. Một thư viện để xây dựng giao diện người dùng web động.
12. Garbage Collection (GC) trong .NET hoạt động như thế nào?
A. GC giải phóng bộ nhớ theo cách thủ công, khi lập trình viên gọi phương thức `Dispose()`.
B. GC là một tiến trình tự động chạy ngầm, định kỳ kiểm tra và giải phóng bộ nhớ không còn được ứng dụng sử dụng.
C. GC chỉ giải phóng bộ nhớ khi ứng dụng đóng.
D. GC không có trong .NET, lập trình viên phải tự quản lý bộ nhớ.
13. Middleware trong ASP.NET Core là gì và vai trò của nó trong pipeline xử lý request là gì?
A. Một thành phần để xây dựng giao diện người dùng web.
B. Một thành phần phần mềm được lắp ráp vào application pipeline để xử lý các HTTP request và response.
C. Một công cụ để quản lý cơ sở dữ liệu trong ứng dụng web.
D. Một thư viện để tạo API RESTful.
14. 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
15. LINQ (Language Integrated Query) trong .NET cung cấp khả năng gì?
A. Tạo giao diện người dùng động.
B. Truy vấn dữ liệu từ nhiều nguồn khác nhau (ví dụ: collections, databases, XML) một cách thống nhất.
C. Quản lý bộ nhớ tự động.
D. Biên dịch mã C# sang mã máy.
16. Sự khác biệt chính giữa `string` và `StringBuilder` trong C# là gì?
A. `string` là kiểu dữ liệu tham trị, `StringBuilder` là kiểu dữ liệu tham chiếu.
B. `string` là bất biến (immutable), `StringBuilder` là khả biến (mutable).
C. `string` nhanh hơn `StringBuilder` trong các thao tác chuỗi.
D. `string` chỉ dùng cho chuỗi ngắn, `StringBuilder` dùng cho chuỗi dài.
17. Async và Await trong C# được sử dụng để giải quyết vấn đề gì?
A. Bảo mật ứng dụng.
B. Xử lý đa luồng phức tạp.
C. Thực hiện các hoạt động I/O không đồng bộ mà không làm treo ứng dụng.
D. Tối ưu hóa hiệu suất bộ nhớ.
18. Reflection trong .NET cho phép chương trình làm gì?
A. Truy cập và sửa đổi trực tiếp bộ nhớ của hệ thống.
B. Kiểm tra metadata của assemblies, modules, types, members, và tạo instance của types tại runtime.
C. Tối ưu hóa mã nguồn C# trước khi biên dịch.
D. Bảo vệ ứng dụng khỏi các cuộc tấn công mạng.
19. Razor Pages và MVC (Model-View-Controller) khác nhau như thế nào trong ASP.NET Core?
A. Razor Pages nhanh hơn MVC về hiệu suất.
B. Razor Pages là một mô hình phát triển đơn giản hóa MVC cho các ứng dụng web hướng trang (page-centric), trong khi MVC phù hợp hơn cho ứng dụng phức tạp, hướng chức năng (feature-centric).
C. Razor Pages chỉ hỗ trợ C#, MVC hỗ trợ nhiều ngôn ngữ hơn.
D. Razor Pages là phiên bản mới hơn của MVC, thay thế hoàn toàn MVC.
20. Công nghệ nào của .NET được sử dụng để xây dựng các ứng dụng web phía máy chủ?
A. WinForms
B. WPF
C. ASP.NET
D. Xamarin
21. 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 suất của ứng dụng.
B. Kiểm thử từng đơn vị (unit) code nhỏ nhất (ví dụ, phương thức, lớp) để đảm bảo chúng hoạt động đúng như mong đợi.
C. Kiểm thử giao diện người dùng của ứng dụng.
D. Kiểm thử bảo mật của ứng dụng.
22. Generic trong C# mang lại lợi ích gì chính?
A. Tăng cường bảo mật cho ứng dụng.
B. Cho phép viết code tái sử dụng cho 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 dung lượng bộ nhớ ứng dụng.
D. Đơn giản hóa việc quản lý bộ nhớ.
23. Interface và Abstract Class khác nhau cơ bản ở điểm nào trong C#?
A. Interface có thể chứa implementation cho phương thức, Abstract Class thì không.
B. Một lớp có thể implement nhiều Interfaces, nhưng chỉ có thể kế thừa một Abstract Class.
C. Interface chỉ định nghĩa hành vi, Abstract Class chỉ định nghĩa trạng thái.
D. Không có sự khác biệt, chúng có thể dùng thay thế cho nhau.
24. Phương thức `Dispose()` trong interface `IDisposable` được sử dụng để làm gì?
A. Giải phóng bộ nhớ được quản lý bởi Garbage Collector.
B. Giải phóng các tài nguyên không được quản lý (unmanaged resources) như file handles, database connections.
C. Khởi tạo các đối tượng trước khi sử dụng.
D. Xử lý ngoại lệ trong ứng dụng.
25. `virtual` và `override` keywords được sử dụng như thế nào trong C#?
A. `virtual` dùng để khai báo thuộc tính, `override` dùng cho phương thức.
B. `virtual` dùng để cho phép lớp con ghi đè phương thức của lớp cha, `override` dùng để lớp con thực sự ghi đè phương thức đó.
C. `virtual` dùng để khai báo lớp trừu tượng, `override` dùng cho lớp kế thừa.
D. `virtual` và `override` có thể dùng thay thế cho nhau để ghi đè phương thức.
26. SOLID principles là gì và chúng hướng đến mục tiêu gì trong thiết kế phần mềm hướng đối tượng .NET?
A. Các nguyên tắc bảo mật cho ứng dụng .NET.
B. Tập hợp 5 nguyên tắc thiết kế phần mềm hướng đối tượng, giúp tạo ra code dễ hiểu, linh hoạt, bảo trì và mở rộng.
C. Các nguyên tắc tối ưu hóa hiệu suất ứng dụng .NET.
D. Các nguyên tắc quản lý dự án phần mềm .NET.
27. Trong .NET, Common Language Runtime (CLR) chịu trách nhiệm chính cho điều 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 cho ứng dụng .NET.
C. Cung cấp một tập hợp các lớp và giao diện để phát triển ứng dụng.
D. Xử lý giao diện người dùng và tương tác với hệ điều hành.
28. IActionResult interface trong ASP.NET Core MVC được sử dụng để làm gì?
A. Định nghĩa cấu trúc dữ liệu trả về từ API.
B. Đại diện cho kết quả của một action method trong controller, cho phép trả về các HTTP responses khác nhau (ví dụ, Ok, BadRequest, NotFound).
C. Xử lý lỗi và ngoại lệ trong ứng dụng web.
D. Quản lý phiên làm việc của người dùng.
29. Attribute trong .NET được sử dụng để làm gì?
A. Tăng hiệu suất thực thi của ứng dụng.
B. Cung cấp metadata (thông tin mô tả) về code, có thể được đọc và xử lý bởi runtime hoặc các công cụ khác.
C. Kiểm soát quyền truy cập vào các thành phần của lớp.
D. Tự động sinh code dựa trên cấu hình.
30. Sự khác biệt chính giữa .NET Framework và .NET (.NET Core trở lên) 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, trong khi .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. Không có sự khác biệt chính, chúng chỉ là các phiên bản khác nhau của cùng một nền tảng.