1. Garbage Collection (GC) trong .NET Framework hoạt động như thế nào?
A. GC là một tiến trình chạy song song với ứng dụng, giải phóng bộ nhớ ngay khi đối tượng không còn được sử dụng.
B. GC là một tiến trình tự động, định kỳ kiểm tra và giải phóng bộ nhớ không còn được tham chiếu bởi bất kỳ phần nào của ứng dụng.
C. GC yêu cầu lập trình viên phải gọi hàm giải phóng bộ nhớ thủ công.
D. GC chỉ hoạt động khi bộ nhớ vật lý của máy tính đầy.
2. .NET Standard là gì và mục đích chính của nó?
A. Một phiên bản mới của .NET Framework.
B. Một đặc tả kỹ thuật (specification) các API .NET mà các nền tảng .NET khác nhau (ví dụ: .NET Framework, .NET Core, Xamarin) phải implement, giúp code .NET có thể tái sử dụng trên nhiều nền tảng.
C. Một công cụ để kiểm thử ứng dụng .NET.
D. Một thư viện UI cho .NET.
3. Generics trong C# và .NET Framework mang lại lợi ích chính nào?
A. Giảm kích thước file thực thi.
B. Tăng cường bảo mật cho ứng dụng.
C. Tăng tính tái sử dụng của code, type safety (an toàn kiểu dữ liệu) và hiệu năng (tránh boxing/unboxing).
D. Giảm thời gian biên dịch chương trình.
4. LINQ (Language Integrated Query) trong .NET Framework cung cấp khả năng gì?
A. Biên dịch mã C# sang mã máy.
B. Truy vấn dữ liệu từ nhiều nguồn khác nhau (collections, databases, XML,...) trực tiếp trong ngôn ngữ lập trình.
C. Quản lý phiên làm việc (session) trong ứng dụng web.
D. Tạo giao diện người dùng đồ họa (GUI).
5. Delegate trong C# được sử dụng để làm gì?
A. Định nghĩa một lớp mới.
B. Tham chiếu đến một phương thức, cho phép truyền phương thức như một tham số hoặc gán cho biến.
C. Quản lý bộ nhớ cho các đối tượng.
D. Xử lý ngoại lệ trong chương trình.
6. Web API trong .NET được sử dụng để xây dựng loại ứng dụng nào?
A. Ứng dụng desktop.
B. Ứng dụng web server-side rendering (ví dụ: MVC, Razor Pages).
C. RESTful APIs và web services để giao tiếp giữa các ứng dụng (ví dụ: mobile apps, front-end frameworks, server-to-server communication).
D. Ứng dụng game.
7. Exception handling (xử lý ngoại lệ) trong .NET (try-catch-finally) được sử dụng để làm gì?
A. Tăng tốc độ thực thi của chương trình.
B. Ngăn chặn lỗi xảy ra trong chương trình.
C. Xử lý các lỗi (exceptions) xảy ra trong quá trình thực thi, giúp chương trình không bị crash và có thể xử lý lỗi một cách kiểm soát.
D. Quản lý bộ nhớ cho ứng dụng.
8. Trong C#, `async` và `await` là các từ khóa liên quan đến khái niệm lập trình nào?
A. Lập trình đa luồng (Multithreading).
B. Lập trình hướng đối tượng (Object-Oriented Programming).
C. Lập trình bất đồng bộ (Asynchronous Programming).
D. Lập trình song song (Parallel Programming).
9. Middleware trong ASP.NET Core đóng vai trò gì?
A. Quản lý cơ sở dữ liệu.
B. Xử lý request và response HTTP pipeline, cho phép thực hiện các tác vụ như authentication, logging, exception handling, etc. trước và sau khi request được xử lý bởi application code.
C. Tạo giao diện người dùng web.
D. Biên dịch mã Razor Pages.
10. NuGet là gì trong hệ sinh thái .NET?
A. Một trình biên dịch C#.
B. Một trình quản lý gói (package manager) cho phép chia sẻ và sử dụng lại các thư viện .NET.
C. Một công cụ để debug ứng dụng .NET.
D. Một nền tảng cloud của Microsoft.
11. Khái niệm `Common Language Runtime` (CLR) trong .NET Framework dùng để chỉ thành phần nào?
A. Trình biên dịch mã nguồn C# thành mã máy.
B. Môi trường thực thi mã .NET, quản lý bộ nhớ và cung cấp các dịch vụ runtime.
C. Thư viện lớp cơ sở của .NET Framework.
D. Công cụ phát triển ứng dụng .NET tích hợp.
12. Entity Framework (EF) là gì và nó giải quyết vấn đề gì trong lập trình .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 tương tác với cơ sở dữ liệu bằng cách làm việc với các đối tượng .NET thay vì câu lệnh SQL trực tiếp.
C. Một thư viện để xử lý XML trong .NET.
D. Một công cụ để kiểm thử hiệu năng ứng dụng .NET.
13. ASP.NET MVC là gì và kiến trúc MVC giúp ích gì trong phát triển ứng dụng web?
A. Một ngôn ngữ lập trình web mới của Microsoft.
B. Một framework phát triển ứng dụng web dựa trên mô hình MVC (Model-View-Controller), giúp tách biệt các mối quan tâm (presentation, logic, data) và tăng tính maintainability.
C. Một công cụ để quản lý cơ sở dữ liệu.
D. Một chuẩn bảo mật cho ứng dụng web.
14. Trong lập trình .NET, `namespace` được sử dụng với mục đích chính là gì?
A. Tăng tốc độ biên dịch chương trình.
B. Quản lý bộ nhớ hiệu quả hơn.
C. Tổ chức và phân loại các lớp, interface, struct,... để tránh xung đột tên và dễ quản lý mã nguồn.
D. Cải thiện hiệu năng thực thi của ứng dụng.
15. Điểm khác biệt lớn nhất giữa ASP.NET Framework và ASP.NET Core là gì?
A. ASP.NET Framework hỗ trợ tốt hơn cho mobile development.
B. ASP.NET Core là mã nguồn mở, đa nền tảng (cross-platform) và hiệu năng cao hơn, trong khi ASP.NET Framework chỉ chạy trên Windows và đóng.
C. ASP.NET Framework sử dụng kiến trúc MVC, còn ASP.NET Core thì không.
D. ASP.NET Core không hỗ trợ Web Forms.
16. Sự kiện (event) trong C# hoạt động dựa trên cơ chế nào?
A. Đa luồng (Multithreading).
B. Delegate.
C. Reflection.
D. Generics.
17. Unit testing (kiểm thử đơn vị) quan trọng như thế nào trong phát triển ứng dụng .NET và nó giúp ích gì?
A. Chỉ quan trọng đối với các dự án lớn.
B. Không quan trọng bằng integration testing.
C. Rất quan trọng để đảm bảo chất lượng code, phát hiện lỗi sớm, và hỗ trợ refactoring (tái cấu trúc mã) một cách an toàn.
D. Chỉ cần thiết khi ứng dụng có hiệu năng kém.
18. Asynchronous programming (lập trình bất đồng bộ) trong C# và .NET được sử dụng khi nào và để giải quyết vấn đề gì?
A. Khi cần thực hiện các tác vụ tính toán phức tạp.
B. Khi cần thực hiện các thao tác I/O (ví dụ: đọc/ghi file, gọi API) mà không muốn block luồng chính (UI thread) và cải thiện responsiveness của ứng dụng.
C. Khi cần quản lý bộ nhớ hiệu quả hơn.
D. Khi cần tăng cường bảo mật cho ứng dụng.
19. `IActionResult` trong ASP.NET Core Web API là gì?
A. Một interface để định nghĩa các model dữ liệu trả về từ API.
B. Một interface để định nghĩa các controller trong API.
C. Một interface đại diện cho kết quả của một action method trong controller, cho phép trả về các HTTP status code, content khác nhau (JSON, XML, etc.).
D. Một class để cấu hình middleware cho API.
20. Razor Pages trong ASP.NET Core là gì và nó khác biệt so với ASP.NET MVC như thế nào?
A. Razor Pages là một phiên bản mới của ASP.NET MVC.
B. Razor Pages là một mô hình phát triển web đơn giản hóa trong ASP.NET Core, tập trung vào page-centric development, dễ dàng hơn cho các kịch bản đơn giản so với MVC (controller-centric).
C. Razor Pages chỉ dùng cho các ứng dụng web tĩnh.
D. Razor Pages không hỗ trợ Dependency Injection.
21. Reflection trong .NET cho phép thực hiện điều gì?
A. Tối ưu hóa hiệu năng của ứng dụng.
B. Truy cập và thao tác thông tin metadata của types, assemblies, modules,... tại runtime (thời gian chạy).
C. Biên dịch mã C# thành mã máy.
D. Quản lý bộ nhớ cho ứng dụng.
22. Điểm khác biệt chính giữa kiểu dữ liệu `struct` và `class` trong C# là gì?
A. Struct là kiểu tham chiếu, class là kiểu giá trị.
B. Struct hỗ trợ đa kế thừa, class thì không.
C. Struct được lưu trữ trên stack, class được lưu trữ trên heap và struct không hỗ trợ kế thừa (ngoại trừ kế thừa interface).
D. Class có thể chứa các phương thức tĩnh, struct thì không.
23. So sánh giữa `StringBuilder` và `string` trong C# về hiệu năng khi thao tác với chuỗi.
A. `string` hiệu quả hơn `StringBuilder` trong mọi trường hợp.
B. `StringBuilder` hiệu quả hơn `string` khi thực hiện nhiều phép nối chuỗi hoặc sửa đổi chuỗi, vì `string` là immutable (bất biến) nên mỗi thao tác tạo ra một chuỗi mới.
C. Hiệu năng của `string` và `StringBuilder` là tương đương.
D. `StringBuilder` chỉ nên dùng cho chuỗi có độ dài lớn hơn 1000 ký tự.
24. Thuật ngữ `Cross-platform` trong bối cảnh .NET Core có nghĩa là gì?
A. Ứng dụng chỉ chạy được trên trình duyệt web.
B. Ứng dụng có thể chạy trên nhiều hệ điều hành khác nhau như Windows, macOS, và Linux.
C. Ứng dụng chỉ có thể chạy trên các thiết bị di động.
D. Ứng dụng được phát triển bằng nhiều ngôn ngữ lập trình khác nhau.
25. Interface và abstract class trong C# có điểm gì khác biệt cơ bản?
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 nhiều abstract class, nhưng chỉ có thể implement một interface.
C. Interface chỉ định nghĩa hành vi (method signatures), abstract class có thể chứa cả hành vi và trạng thái (fields, properties).
D. Abstract class nhanh hơn interface về hiệu năng.
26. Phương thức mở rộng (Extension methods) trong C# cho phép làm gì?
A. Thay đổi code của các lớp đã được biên dịch.
B. Thêm phương thức mới vào các kiểu dữ liệu đã tồn tại (kể cả các lớp sealed hoặc từ thư viện bên thứ ba) mà không cần kế thừa hoặc sửa đổi trực tiếp lớp đó.
C. Tăng tốc độ thực thi của các phương thức hiện có.
D. Giảm kích thước của các lớp.
27. Attributes trong C# được sử dụng để làm gì?
A. Tăng tốc độ thực thi của chương trình.
B. Thêm metadata (thông tin mô tả) vào code (classes, methods, properties, etc.) để cung cấp thông tin bổ sung cho runtime hoặc các công cụ khác.
C. Quản lý bộ nhớ cho ứng dụng.
D. Xử lý ngoại lệ trong chương trình.
28. Dependency Injection (DI) trong .NET Core và ASP.NET Core mang lại lợi ích gì?
A. Giảm kích thước file cài đặt ứng dụng.
B. Tăng cường bảo mật cho ứng dụng.
C. Giảm sự phụ thuộc giữa các thành phần (loose coupling), dễ dàng kiểm thử (testability) và bảo trì mã nguồn.
D. Tăng tốc độ biên dịch ứng dụng.
29. Phương thức `boxing` trong .NET đề cập đến quá trình nào?
A. Chuyển đổi kiểu dữ liệu tham chiếu sang kiểu dữ liệu giá trị.
B. Đóng gói một kiểu dữ liệu giá trị vào một đối tượng kiểu tham chiếu (object).
C. Giải phóng bộ nhớ đã cấp phát cho một đối tượng.
D. Tối ưu hóa hiệu năng thực thi của mã.
30. Trong C#, từ khóa `virtual` được sử dụng để làm gì?
A. Khai báo một biến cục bộ trong phương thức.
B. Ngăn chặn việc kế thừa từ một lớp.
C. Cho phép một phương thức trong lớp con (derived class) ghi đè (override) phương thức cùng tên trong lớp cha (base class).
D. Định nghĩa một lớp trừu tượng (abstract class).