1. Trong C#, 'delegate′ là gì?
A. Một kiểu dữ liệu để lưu trữ một giá trị số nguyên.
B. Một kiểu tham chiếu đại diện cho phương thức (method), cho phép truyền phương thức như một tham số.
C. Một cơ chế quản lý bộ nhớ.
D. Một cách để tạo ra các lớp kế thừa.
2. Trong C#, từ khóa 'using′ có công dụng nào sau đây khi làm việc với các tài nguyên (resources) như file hoặc kết nối database?
A. Đánh dấu một biến là hằng số (constant).
B. Đảm bảo rằng tài nguyên sẽ được giải phóng (dispose) một cách tự động sau khi khối mã 'using′ kết thúc.
C. Nhập một namespace vào phạm vi hiện tại.
D. Khai báo một alias cho một namespace hoặc kiểu dữ liệu.
3. Async và Await trong C# được sử dụng để giải quyết vấn đề gì?
A. Tăng tốc độ biên dịch mã.
B. Xử lý các hoạt động nhập∕xuất (I∕O) hoặc các tác vụ mất thời gian mà không làm treo (block) luồng chính của ứng dụng (UI thread).
C. Quản lý bộ nhớ hiệu quả hơn.
D. Bảo mật ứng dụng web.
4. Phương thức mở rộng (Extension method) trong C# cho phép làm gì?
A. Thêm thuộc tính mới vào một lớp hiện có.
B. Thêm phương thức mới vào một lớp hiện có mà không cần sửa đổi mã nguồn của lớp đó.
C. Thay đổi hành vi của các phương thức hiện có trong một lớp.
D. Tạo ra một lớp con kế thừa từ một lớp hiện có.
5. Serialization và Deserialization trong .NET là quá trình chuyển đổi giữa định dạng nào?
A. Giữa mã nguồn C# và mã máy.
B. Giữa đối tượng (object) trong bộ nhớ và một định dạng dữ liệu (ví dụ: JSON, XML) để lưu trữ hoặc truyền tải.
C. Giữa các phiên bản khác nhau của .NET Framework.
D. Giữa giao diện người dùng và logic nghiệp vụ.
6. Trong ASP.NET Core MVC, 'IActionResult′ interface được sử dụng để làm gì?
A. Định nghĩa cấu trúc dữ liệu cho model.
B. Đại diện cho kết quả trả về của một action method trong controller, cho phép trả về các HTTP responses khác nhau (ví dụ: View, JSON, Redirect).
C. Xử lý routing trong ứng dụng.
D. Xác thực người dùng.
7. Interface và Abstract Class trong C# có điểm gì chung?
A. Cả hai đều có thể được khởi tạo trực tiếp.
B. Cả hai đều định nghĩa một hợp đồng (contract) mà các lớp kế thừa phải tuân theo.
C. Cả hai đều cho phép đa kế thừa.
D. Cả hai đều chỉ chứa các phương thức đã được triển khai (implemented methods).
8. Dependency Injection Container (DI Container) trong .NET có vai trò gì?
A. Biên dịch mã nguồn.
B. Quản lý vòng đời và cung cấp các dependencies cho các class, giúp thực hiện Dependency Injection một cách tự động.
C. Triển khai ứng dụng lên server.
D. Kiểm tra lỗi bảo mật.
9. Trong C#, từ khóa 'sealed′ có nghĩa là gì khi áp dụng cho một class?
A. Class đó không thể được khởi tạo.
B. Class đó không thể được kế thừa bởi bất kỳ class nào khác.
C. Class đó chỉ có thể chứa các phương thức static.
D. Class đó được lưu trữ trên bộ nhớ chỉ đọc (read-only memory).
10. Event trong C# được xây dựng dựa trên cơ chế nào?
A. Đa kế thừa (multiple inheritance).
B. Delegates.
C. Reflection.
D. Generics.
11. Garbage Collection (GC) trong .NET CLR thực hiện công việc gì?
A. Biên dịch mã C# sang mã máy.
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 bởi ứng dụng.
C. Kiểm tra lỗi cú pháp trong mã nguồn.
D. Tối ưu hóa hiệu suất ứng dụng.
12. Entity Framework Core (EF Core) là một ORM phổ biến trong .NET. Chức năng chính của EF Core là gì?
A. Biên dịch mã C# thành mã máy.
B. Quản lý các phiên bản khác nhau của .NET Framework.
C. Giúp đơn giản hóa việc tương tác với database bằng cách ánh xạ các đối tượng .NET với các bảng trong database.
D. Tạo giao diện người dùng web động.
13. Reflection trong .NET cho phép làm gì?
A. Biên dịch mã C#.
B. Kiểm tra và thao tác metadata của các types, assemblies, modules và members tại runtime.
C. Quản lý bộ nhớ.
D. Tạo giao diện người dùng web.
14. Đâu là mục đích chính của việc sử dụng 'Generics′ trong C#?
A. Tăng tốc độ biên dịch.
B. Cho phép viết code có thể làm việc với nhiều kiểu dữ liệu khác nhau mà vẫn đảm bảo type safety và hiệu suất.
C. Giảm kích thước mã nguồn.
D. Cải thiện khả năng bảo mật của ứng dụng.
15. Trong Entity Framework Core, 'Migrations′ được sử dụng để làm gì?
A. Tối ưu hóa hiệu suất truy vấn database.
B. Quản lý và áp dụng các thay đổi schema database theo thời gian, giúp đồng bộ database schema với model code.
C. Tạo giao diện người dùng cho ứng dụng database.
D. Sao lưu và phục hồi database.
16. Razor Pages trong ASP.NET Core là gì và khác biệt chính so với MVC là gì?
A. Razor Pages là một framework hoàn toàn khác biệt, không liên quan đến MVC.
B. Razor Pages là một mô hình phát triển web đơn giản hóa dựa trên MVC, tập trung vào page-centric workflow, code và markup cho mỗi page được đặt cùng nhau.
C. Razor Pages chỉ dành cho các ứng dụng web tĩnh, còn MVC cho ứng dụng web động.
D. Razor Pages là phiên bản cũ hơn của MVC.
17. Đâu là mục đích chính của thuộc tính (property) trong C# so với việc sử dụng trực tiếp các trường (fields) public?
A. Thuộc tính giúp giảm dung lượng bộ nhớ sử dụng.
B. Thuộc tính cho phép kiểm soát việc truy cập và sửa đổi dữ liệu của đối tượng thông qua các accessor (get, set), giúp đóng gói (encapsulation) tốt hơn.
C. Thuộc tính làm tăng tốc độ truy cập dữ liệu.
D. Thuộc tính chỉ được sử dụng cho các kiểu dữ liệu tham chiếu.
18. 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 (thông tin mô tả) vào code, có thể được sử dụng bởi compiler hoặc runtime environment.
C. Quản lý bộ nhớ.
D. Tạo giao diện người dùng.
19. LINQ (Language Integrated Query) trong C# 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 (collections, databases, XML, …) một cách thống nhất bằng cú pháp giống SQL.
C. Quản lý bộ nhớ tự động.
D. Xử lý bất đồng bộ (asynchronous operations).
20. Đâu là sự khác biệt chính giữa 'Framework′ và 'Core′ trong bối cảnh .NET?
A. .NET Framework là mã nguồn mở, còn .NET Core thì đóng.
B. .NET Framework chỉ chạy trên Windows, còn .NET Core có thể chạy đa nền tảng (Windows, macOS, Linux).
C. .NET Framework tập trung vào phát triển web, còn .NET Core dành cho ứng dụng desktop.
D. .NET Framework là phiên bản mới hơn và cải tiến hơn so với .NET Core.
21. NuGet Package Manager được sử dụng để làm gì trong .NET development?
A. Biên dịch mã nguồn C#.
B. Quản lý và cài đặt các thư viện và packages bên ngoài vào dự án .NET.
C. Triển khai ứng dụng .NET lên server.
D. Gỡ lỗi ứng dụng .NET.
22. 'IActionResult′ và 'ViewResult′ có mối quan hệ như thế nào trong ASP.NET Core MVC?
A. 'IActionResult′ là một implementation cụ thể của 'ViewResult′.
B. 'ViewResult′ là một implementation cụ thể của 'IActionResult′.
C. Không có mối quan hệ nào giữa 'IActionResult′ và 'ViewResult′.
D. Cả hai đều là interface.
23. Trong ASP.NET Core, Middleware là gì?
A. Một thành phần để quản lý dữ liệu và tương tác với database.
B. Một thành phần xử lý các HTTP request và response pipeline, cho phép thực hiện các tác vụ như logging, authentication, routing.
C. Một loại component để xây dựng giao diện người dùng (UI).
D. Một công cụ để triển khai ứng dụng lên server.
24. Sự khác biệt chính giữa 'Value types′ và 'Reference types′ trong C# là gì?
A. Value types được lưu trữ trên heap, còn Reference types trên stack.
B. Value types lưu trữ trực tiếp giá trị, còn Reference types lưu trữ tham chiếu đến vị trí bộ nhớ chứa giá trị.
C. Value types có thể null, còn Reference types thì không.
D. Value types được quản lý bởi Garbage Collector, còn Reference types thì không.
25. Trong C#, 'struct′ khác với 'class′ như thế nào?
A. 'struct′ là kiểu dữ liệu tham chiếu, còn 'class′ là kiểu dữ liệu giá trị.
B. 'struct′ là kiểu dữ liệu giá trị, thường được dùng cho các kiểu dữ liệu nhỏ và đơn giản, 'class′ là kiểu dữ liệu tham chiếu, dùng cho các đối tượng phức tạp hơn.
C. 'struct′ hỗ trợ kế thừa, còn 'class′ thì không.
D. 'struct′ được quản lý bộ nhớ bởi Garbage Collector, còn 'class′ thì không.
26. Trong C#, 'boxing′ và 'unboxing′ liên quan đến kiểu dữ liệu nào?
A. Chỉ kiểu dữ liệu tham chiếu (reference types).
B. Chỉ kiểu dữ liệu giá trị (value types).
C. Liên quan đến việc chuyển đổi giữa kiểu dữ liệu giá trị và kiểu object (System.Object - là kiểu tham chiếu).
D. Liên quan đến việc quản lý bộ nhớ cho các đối tượng.
27. Dependency Injection (DI) là một nguyên tắc thiết kế quan trọng trong .NET. Lợi ích chính của việc sử dụng DI là gì?
A. Giảm kích thước mã nguồn và tăng tốc độ biên dịch.
B. Tăng cường tính bảo mật cho ứng dụng bằng cách ẩn các phụ thuộc.
C. Giảm sự phụ thuộc lẫn nhau giữa các thành phần (loose coupling), giúp mã dễ bảo trì, kiểm thử và mở rộng hơn.
D. Tự động tạo tài liệu API cho ứng dụng.
28. 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ụ runtime như quản lý ngoại lệ và bảo mật.
C. Đóng gói và phân phối các thư viện và ứng dụng .NET.
D. Xây dựng giao diện người dùng đồ họa cho ứng dụng Windows.
29. Unit Testing là gì và tại sao nó quan trọng trong phát triển phần mềm .NET?
A. Unit testing là quá trình kiểm thử toàn bộ ứng dụng sau khi hoàn thành.
B. Unit testing là kiểm thử từng đơn vị (unit) nhỏ nhất của code (ví dụ: phương thức, class) một cách độc lập, giúp phát hiện lỗi sớm, cải thiện chất lượng code và dễ dàng refactoring.
C. Unit testing là kiểm thử hiệu suất của ứng dụng.
D. Unit testing là kiểm thử giao diện người dùng.
30. Đâu là một lợi ích chính của việc sử dụng kiến trúc Microservices so với kiến trúc Monolithic trong phát triển ứng dụng .NET?
A. Microservices luôn có hiệu suất cao hơn Monolithic.
B. Microservices giúp ứng dụng dễ dàng mở rộng (scale) hơn, vì có thể scale từng service độc lập.
C. Phát triển Microservices luôn nhanh hơn Monolithic.
D. Microservices dễ triển khai và quản lý hơn Monolithic.