1. Nguyên tắc 'Loose Coupling′ (Liên kết lỏng lẻo) trong thiết kế phần mềm có ý nghĩa gì?
A. Các module, lớp phụ thuộc chặt chẽ vào nhau.
B. Các module, lớp ít phụ thuộc vào nhau, thay đổi ở một module ít ảnh hưởng đến các module khác.
C. Mã nguồn không được tổ chức thành các module, lớp rõ ràng.
D. Hiệu suất ứng dụng bị giảm sút.
2. MSIL (Microsoft Intermediate Language) hay CIL (Common Intermediate Language) là gì?
A. Ngôn ngữ lập trình bậc cao của .NET.
B. Ngôn ngữ trung gian mà mã nguồn .NET (C#, VB.NET, F#) được biên dịch thành trước khi thực thi bởi CLR.
C. Ngôn ngữ máy mà CPU thực thi trực tiếp.
D. Một loại cơ sở dữ liệu được sử dụng trong .NET.
3. Interface và Abstract class trong C# khác nhau cơ bản ở điểm nào?
A. Interface có thể chứa implementation, Abstract class thì không.
B. 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 nhanh hơn Interface về hiệu suất.
D. Interface chỉ dùng cho kiểu dữ liệu giá trị, Abstract class cho kiểu dữ liệu tham chiếu.
4. Phiên bản .NET mới nhất hiện tại (tính đến thời điểm tạo câu hỏi này - 2024) là phiên bản nào?
A. .NET Framework 4.8
B. .NET Core 3.1
C. .NET 8
D. Xamarin
5. Garbage Collector (GC) trong .NET Framework hoạt động như thế nào?
A. Giải phóng bộ nhớ được cấp phát thủ công bởi lập trình viên.
B. Tự động giải phóng bộ nhớ không còn được tham chiếu bởi ứng dụng.
C. Yêu cầu lập trình viên gọi hàm giải phóng bộ nhớ một cách rõ ràng.
D. Chỉ hoạt động khi bộ nhớ vật lý đầy.
6. WPF (Windows Presentation Foundation) trong .NET được sử dụng để làm gì?
A. Phát triển ứng dụng web.
B. Phát triển ứng dụng desktop Windows với giao diện người dùng đồ họa phong phú.
C. Phát triển ứng dụng di động đa nền tảng.
D. Phát triển dịch vụ web API.
7. LINQ (Language Integrated Query) trong .NET Framework 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, …).
C. Quản lý phiên bản của các thư viện .NET.
D. Tối ưu hóa hiệu suất ứng dụng web.
8. Strongly-typed language (Ngôn ngữ định kiểu mạnh) như C# có ưu điểm gì so với weakly-typed language (Ngôn ngữ định kiểu yếu)?
A. Mã dễ viết và nhanh hơn.
B. Phát hiện lỗi kiểu dữ liệu sớm hơn trong quá trình phát triển (compile-time), tăng tính ổn định và dễ bảo trì.
C. Hiệu suất thực thi cao hơn.
D. Linh hoạt hơn trong việc chuyển đổi kiểu dữ liệu.
9. Entity Framework Core (EF Core) là một ORM (Object-Relational Mapper) cho .NET. Chức năng chính của ORM là gì?
A. Tối ưu hóa hiệu suất truy vấn cơ sở dữ liệu.
B. Ánh xạ giữa cơ sở dữ liệu quan hệ và các đối tượng trong ngôn ngữ lập trình, giúp thao tác dữ liệu dễ dàng hơn.
C. Tạo giao diện người dùng web động.
D. Quản lý phiên bản của cơ sở dữ liệu.
10. SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ 'S′ trong SOLID đại diện cho nguyên tắc nào?
A. Single Responsibility Principle (Nguyên tắc đơn nhiệm).
B. Open∕Closed Principle (Nguyên tắc đóng mở).
C. Liskov Substitution Principle (Nguyên tắc thay thế Liskov).
D. Interface Segregation Principle (Nguyên tắc phân tách Interface).
11. Delegates trong C# được sử dụng để làm gì?
A. Định nghĩa cấu trúc dữ liệu phức tạp.
B. Đại diện cho tham chiếu đến một phương thức, cho phép truyền phương thức như tham số.
C. Quản lý bộ nhớ và giải phóng tài nguyên.
D. Xử lý các ngoại lệ trong chương trình.
12. Reflection trong .NET cho phép ứng dụng làm gì?
A. Tăng tốc độ biên dịch mã.
B. Kiểm tra và thao tác metadata của các assembly, module, type, member, … tại runtime.
C. Tạo giao diện người dùng đồ họa.
D. Quản lý bộ nhớ.
13. Trong mô hình lập trình hướng đối tượng (OOP), 'Polymorphism′ (Đa hình) có nghĩa là gì?
A. Khả năng che giấu thông tin và trạng thái bên trong của đối tượng.
B. Khả năng một đối tượng có nhiều hình thức khác nhau, có thể hành xử khác nhau tùy thuộc vào ngữ cảnh.
C. Khả năng tạo ra các lớp mới dựa trên các lớp đã tồn tại.
D. Khả năng nhóm các đối tượng có chung thuộc tính và hành vi vào một lớp.
14. 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ụ runtime khác.
C. Xây dựng giao diện người dùng đồ họa.
D. Quản lý cơ sở dữ liệu.
15. Finalizer (Destructor) trong C# được sử dụng để làm gì?
A. Giải phóng bộ nhớ ngay lập tức khi đối tượng không còn được sử dụng.
B. Thực hiện các thao tác dọn dẹp tài nguyên (unmanaged resources) khi đối tượng sắp bị Garbage Collector thu hồi.
C. Khởi tạo giá trị ban đầu cho các thuộc tính của đối tượng.
D. Xử lý ngoại lệ khi đối tượng bị hủy.
16. Kỹ thuật 'Code First′ trong Entity Framework Core là gì?
A. Tạo cơ sở dữ liệu trước, sau đó sinh mã C# từ database schema.
B. Viết mã C# định nghĩa model (entities) trước, sau đó EF Core sẽ tạo hoặc cập nhật database schema dựa trên model này.
C. Sử dụng file XML để cấu hình database schema.
D. Sử dụng công cụ đồ họa để thiết kế database schema.
17. Phương thức mở rộng (extension method) trong C# cho phép làm gì?
A. 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 mã nguồn của lớp đó.
B. Thay đổi hành vi của các phương thức hiện có trong một lớp.
C. Tạo ra các lớp con từ một lớp cha.
D. Ẩn các phương thức của lớp cha trong lớp con.
18. Khác biệt chính giữa `IEnumerable` và `IQueryable` trong LINQ là gì?
A. `IEnumerable` thực hiện truy vấn phía server, `IQueryable` thực hiện truy vấn phía client.
B. `IEnumerable` thực hiện truy vấn trên client-side (trong bộ nhớ), `IQueryable` cho phép thực hiện truy vấn trên server-side (ví dụ: database server).
C. `IEnumerable` chỉ dùng cho collections, `IQueryable` chỉ dùng cho database.
D. Không có khác biệt, chúng có thể thay thế cho nhau.
19. Dependency Injection (DI) trong .NET Core (và .NET) mang lại lợi ích chính nào?
A. Tăng tốc độ thực thi ứng dụng.
B. 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. Đơn giản hóa việc quản lý bộ nhớ.
D. Tăng cường bảo mật ứng dụng web.
20. Đâu là kiểu dữ liệu giá trị (value type) trong C#?
A. string
B. object
C. int
D. dynamic
21. Event (Sự kiện) trong C# hoạt động theo cơ chế nào?
A. Tuần tự (Sequential).
B. Đồng bộ (Synchronous).
C. Bất đồng bộ (Asynchronous) và dựa trên Delegate.
D. Ngẫu nhiên (Random).
22. 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. Thực hiện các thao tác bất đồng bộ mà không làm treo UI hoặc thread chính.
C. Quản lý bộ nhớ hiệu quả hơn.
D. Tăng cường bảo mật cho ứng dụng.
23. Chức năng chính của `using` statement trong C# là gì khi làm việc với các đối tượng `IDisposable`?
A. Tăng tốc độ truy cập đối tượng.
B. Đảm bảo đối tượng `IDisposable` được giải phóng tài nguyên một cách chính xác và tự động (gọi phương thức `Dispose()`) ngay khi ra khỏi scope `using`.
C. Ngăn chặn garbage collector thu hồi đối tượng.
D. Tạo ra một bản sao của đối tượng.
24. Attribute trong C# được sử dụng để làm gì?
A. Định nghĩa kiểu dữ liệu mới.
B. Cung cấp metadata (dữ liệu về dữ liệu) cho các thành phần của chương trình (lớp, phương thức, thuộc tính, …).
C. Thực hiện kiểm soát truy cập (access modifiers).
D. Xử lý ngoại lệ.
25. Delegate `Action` và `Func` khác nhau ở điểm nào?
A. `Action` trả về giá trị, `Func` thì không.
B. `Action` đại diện cho phương thức void (không trả về giá trị), `Func` đại diện cho phương thức trả về giá trị.
C. `Action` chỉ có thể nhận một tham số, `Func` có thể nhận nhiều tham số.
D. `Action` chỉ dùng cho các phương thức static, `Func` chỉ dùng cho phương thức instance.
26. Trong ASP.NET Core, Middleware là gì?
A. Thành phần xử lý logic nghiệp vụ chính của ứng dụng.
B. Thành phần xử lý các request HTTP đến và response HTTP đi, tạo thành pipeline xử lý.
C. Thành phần quản lý kết nối cơ sở dữ liệu.
D. Thành phần định nghĩa routing cho ứng dụng web.
27. Boxing và Unboxing trong C# liên quan đến việc chuyển đổi giữa kiểu dữ liệu nào?
A. Giữa kiểu dữ liệu số nguyên và kiểu dữ liệu số thực.
B. Giữa kiểu dữ liệu giá trị (value type) và kiểu tham chiếu object.
C. Giữa kiểu dữ liệu string và kiểu dữ liệu char.
D. Giữa các kiểu dữ liệu tham chiếu khác nhau.
28. NuGet Package Manager được sử dụng để làm gì trong .NET?
A. Biên dịch mã nguồn C#.
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. Gỡ lỗi ứng dụng .NET.
D. Triển khai ứng dụng .NET lên server.
29. Cross-Site Scripting (XSS) là một lỗ hổng bảo mật web phổ biến. Nó xảy ra khi nào?
A. Khi server bị tấn công từ chối dịch vụ (DoS).
B. Khi ứng dụng web không mã hóa dữ liệu nhạy cảm.
C. Khi ứng dụng web cho phép chèn mã script độc hại vào nội dung trang web hiển thị cho người dùng khác.
D. Khi cơ sở dữ liệu của ứng dụng web bị xâm nhập.
30. Kỹ thuật 'Scaffolding′ trong ASP.NET Core MVC thường được dùng để làm gì?
A. Tối ưu hóa hiệu suất ứng dụng web.
B. Tự động sinh mã (controllers, views, models) cho các thao tác CRUD (Create, Read, Update, Delete) dựa trên model.
C. Triển khai ứng dụng web lên server.
D. Quản lý phiên bản mã nguồn.