1. Tính năng 'Garbage Collection′ trong CLR có mục đích gì?
A. Tối ưu hóa hiệu suất CPU.
B. Quản lý bộ nhớ tự động bằng cách thu hồi bộ nhớ không còn được sử dụng.
C. Kiểm soát truy cập cơ sở dữ liệu.
D. Bảo vệ ứng dụng khỏi tấn công mạng.
2. Dependency Injection (DI) là gì và tại sao nó quan trọng trong phát triển ứng dụng .NET?
A. Một kỹ thuật để tối ưu hóa hiệu suất cơ sở dữ liệu.
B. Một mẫu thiết kế để giảm sự phụ thuộc giữa các thành phần, tăng tính module hóa và khả năng kiểm thử.
C. Một phương pháp bảo mật ứng dụng web.
D. Một công cụ để tạo giao diện người dùng động.
3. NuGet trong .NET dùng để làm gì?
A. Biên dịch mã nguồn thành mã máy.
B. Quản lý các thư viện và gói phụ thuộc của dự án.
C. Gỡ lỗi ứng dụng .NET.
D. Tạo giao diện người dùng cho ứng dụng web.
4. IActionResult trong ASP.NET Core được sử dụng để làm gì?
A. Định nghĩa giao diện người dùng web.
B. Trả về kết quả của một action method trong controller, bao gồm HTTP status code và response body.
C. Quản lý cơ sở dữ liệu.
D. Xác thực người dùng.
5. Sự khác biệt giữa 'StringBuilder′ và 'string′ trong C# khi làm việc với chuỗi là gì?
A. Không có sự khác biệt, chúng có thể dùng thay thế nhau.
B. String là immutable (bất biến), mỗi lần thao tác tạo ra chuỗi mới. StringBuilder là mutable (có thể thay đổi), hiệu quả hơn cho thao tác chuỗi phức tạp (nối, sửa đổi nhiều lần).
C. StringBuilder chỉ dùng cho ứng dụng console, string dùng cho ứng dụng GUI.
D. String nhanh hơn StringBuilder trong mọi trường hợp.
6. Attribute trong C# và .NET được sử dụng để làm gì?
A. Định nghĩa kiểu dữ liệu tùy chỉnh.
B. Cung cấp metadata (dữ liệu về dữ liệu) cho các thành phần mã như lớp, phương thức, thuộc tính.
C. Thực hiện kiểm tra kiểu dữ liệu tại thời gian biên dịch.
D. Tạo ra các ngoại lệ tùy chỉnh.
7. Sự kiện (events) trong C# và .NET được sử dụng để làm gì?
A. Định nghĩa cấu trúc dữ liệu phức tạp.
B. Xử lý các tương tác và thông báo giữa các đối tượng một cách lỏng lẻo.
C. Quản lý bộ nhớ.
D. Thực hiện các phép toán số học phức tạp.
8. Blazor trong .NET cho phép phát triển loại ứng dụng web nào?
A. Chỉ ứng dụng web phía máy chủ (server-side).
B. Ứng dụng web phía máy khách (client-side) chạy trong trình duyệt bằng WebAssembly và ứng dụng phía máy chủ.
C. Chỉ ứng dụng web tĩnh.
D. Ứng dụng web chỉ chạy trên mobile.
9. Sự khác biệt chính giữa 'interface′ và 'abstract class′ trong C# là gì?
A. Không có sự khác biệt, chúng có thể thay thế cho nhau.
B. Lớp abstract có thể chứa implementation cho một số phương thức, interface thì không (trước C# 8.0). Một lớp có thể implement nhiều interfaces nhưng chỉ kế thừa một abstract class.
C. Interface nhanh hơn abstract class về hiệu suất.
D. Abstract class chỉ dùng cho ứng dụng desktop, interface dùng cho ứng dụng web.
10. Async và Await trong C# và .NET được sử dụng để làm gì?
A. Tạo giao diện người dùng đa luồng.
B. Viết mã bất đồng bộ dễ đọc và dễ bảo trì hơn.
C. Tăng tốc độ biên dịch mã.
D. Quản lý phiên làm việc người dùng.
11. 'Sealed class′ trong C# có ý nghĩa gì?
A. Lớp không thể được khởi tạo.
B. Lớp không thể được kế thừa.
C. Lớp chỉ chứa các phương thức tĩnh.
D. Lớp được tối ưu hóa hiệu suất.
12. 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
13. 'Task′ trong .NET Framework và .NET (.NET Core trở lên) đại diện cho điều gì?
A. Một luồng (thread) hệ thống.
B. Một hoạt động bất đồng bộ.
C. Một kết nối cơ sở dữ liệu.
D. Một giao diện người dùng.
14. Reflection trong .NET cho phép làm gì?
A. Tạo giao diện người dùng động.
B. Khám phá và tương tác với metadata và các kiểu dữ liệu của assembly tại runtime.
C. Tối ưu hóa hiệu suất ứng dụng.
D. Quản lý phiên làm việc người dùng.
15. HttpContext trong ASP.NET Core cung cấp thông tin gì?
A. Thông tin về cấu hình máy chủ web.
B. Thông tin về request HTTP hiện tại và response HTTP đang được xây dựng.
C. Thông tin về cơ sở dữ liệu.
D. Thông tin về phiên bản .NET đang sử dụng.
16. Delegates trong C# và .NET là gì?
A. Biến kiểu tham chiếu đến một phương thức.
B. Lớp cơ sở cho tất cả các lớp trong .NET.
C. Cơ chế xử lý ngoại lệ.
D. Kiểu dữ liệu nguyên thủy.
17. WPF (Windows Presentation Foundation) trong .NET được sử dụng để làm gì?
A. Phát triển ứng dụng web phía máy chủ.
B. Phát triển ứng dụng desktop với giao diện người dùng đồ họa phong phú trên Windows.
C. Xây dựng dịch vụ web API.
D. Quản lý cơ sở dữ liệu.
18. Generic (kiểu tổng quát) trong C# và .NET giải quyết vấn đề gì?
A. Vấn đề hiệu suất trong ứng dụng web.
B. Vấn đề an toàn kiểu dữ liệu và tái sử dụng mã cho các kiểu dữ liệu khác nhau.
C. Vấn đề quản lý bộ nhớ.
D. Vấn đề bảo mật dữ liệu.
19. Middleware trong ASP.NET Core là gì?
A. Thành phần quản lý cơ sở dữ liệu.
B. Thành phần xử lý request HTTP theo pipeline.
C. Thành phần tạo giao diện người dùng web.
D. Thành phần quản lý phiên làm việc.
20. LINQ (Language Integrated Query) trong .NET cung cấp khả năng gì?
A. Tạo giao diện người dùng đồ họa.
B. Truy vấn dữ liệu từ nhiều nguồn khác nhau (database, XML, objects) trực tiếp trong ngôn ngữ lập trình.
C. Quản lý bộ nhớ tự động.
D. Xây dựng ứng dụng web động.
21. 'Serialization′ và 'Deserialization′ trong .NET là gì?
A. Quá trình mã hóa và giải mã dữ liệu.
B. Serialization là quá trình chuyển đổi đối tượng thành định dạng có thể lưu trữ hoặc truyền tải, Deserialization là quá trình ngược lại, khôi phục đối tượng từ định dạng đó.
C. Quá trình kiểm tra và sửa lỗi mã nguồn.
D. Quá trình tối ưu hóa hiệu suất ứng dụng.
22. 'Virtual methods′ và 'override′ trong C# được sử dụng để làm gì?
A. Tạo ra các phương thức tĩnh.
B. Hỗ trợ tính đa hình (polymorphism) và cho phép lớp con ghi đè (override) implementation của phương thức lớp cha.
C. Bảo vệ phương thức khỏi bị ghi đè.
D. Tối ưu hóa hiệu suất phương thức.
23. 'Dependency Injection Container′ (DI Container) trong .NET có vai trò gì?
A. Quản lý cơ sở dữ liệu.
B. Tự động tạo và quản lý dependencies (phụ thuộc) của các lớp, giúp giảm coupling và tăng khả năng kiểm thử.
C. Tạo giao diện người dùng web.
D. Xác thực người dùng.
24. Entity Framework Core (EF Core) là gì trong .NET?
A. Một framework để xây dựng giao diện người dùng web.
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ụ để kiểm thử hiệu năng ứng dụng.
D. Một thư viện để xử lý XML.
25. Trong .NET, CLR (Common Language Runtime) có vai trò chính nào?
A. Biên dịch mã nguồn C# thành mã máy.
B. Quản lý bộ nhớ, thực thi mã bytecode và cung cấp các dịch vụ runtime.
C. Cung cấp các thư viện lớp cơ bản cho phát triển ứng dụng web.
D. Hỗ trợ phát triển giao diện người dùng đồ họa (GUI).
26. 'Exception handling′ (xử lý ngoại lệ) trong .NET được thực hiện bằng cấu trúc nào?
A. if-else.
B. try-catch-finally.
C. switch-case.
D. for-loop.
27. Trong lập trình .NET, thuật ngữ 'boxing′ và 'unboxing′ đề cập đến quá trình gì?
A. Quá trình chuyển đổi giữa các kiểu dữ liệu số nguyên khác nhau.
B. Quá trình chuyển đổi giữa kiểu giá trị (value type) và kiểu tham chiếu (reference type).
C. Quá trình mã hóa và giải mã dữ liệu.
D. Quá trình quản lý bộ nhớ.
28. Razor Pages trong ASP.NET Core khác biệt so với MVC (Model-View-Controller) như thế nào?
A. Razor Pages chỉ dùng cho ứng dụng nhỏ, còn MVC cho ứng dụng lớn.
B. Razor Pages tập trung vào page-centric development, trong khi MVC tập trung vào controller-centric development.
C. Razor Pages không hỗ trợ dependency injection, còn MVC thì có.
D. Razor Pages chỉ hỗ trợ C#, còn MVC hỗ trợ nhiều ngôn ngữ hơn.
29. Đâu là sự khác biệt chính giữa .NET Framework và .NET (.NET Core trở lên)?
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 thì đa nền tảng (Windows, macOS, Linux).
C. .NET Framework hỗ trợ phát triển web, còn .NET thì chỉ hỗ trợ ứng dụng desktop.
D. Không có sự khác biệt nào đáng kể giữa .NET Framework và .NET.
30. 'Thread′ và 'Task′ khác nhau như thế nào trong .NET?
A. Task là một wrapper xung quanh Thread, cung cấp abstraction mức cao hơn cho lập trình bất đồng bộ.
B. Thread và Task là hoàn toàn giống nhau.
C. Thread chỉ dùng cho ứng dụng console, Task dùng cho ứng dụng GUI.
D. Thread nhanh hơn Task về hiệu suất.