1. Entity Framework Core (EF Core) là một ORM (Object-Relational Mapper) cho .NET. Phát biểu nào sau đây mô tả đúng nhất vai trò của EF Core?
A. EF Core là một hệ quản trị cơ sở dữ liệu.
B. EF Core giúp tương tác với cơ sở dữ liệu bằng cách sử dụng các đối tượng .NET thay vì câu lệnh SQL trực tiếp.
C. EF Core được sử dụng để thiết kế giao diện người dùng trong ứng dụng .NET.
D. EF Core là một công cụ để triển khai ứng dụng .NET lên server.
2. Trong mô hình MVC (Model-View-Controller) của ASP.NET Core, Controller có vai trò gì?
A. Hiển thị dữ liệu cho người dùng.
B. Quản lý dữ liệu và logic nghiệp vụ.
C. Xử lý tương tác người dùng và cập nhật Model, chọn View thích hợp.
D. Định nghĩa cấu trúc dữ liệu của ứng dụng.
3. Delegate trong C# là gì?
A. Một kiểu dữ liệu để lưu trữ dữ liệu.
B. Một kiểu tham chiếu đại diện cho phương thức (function pointer).
C. Một lớp cơ sở cho tất cả các lớp trong .NET.
D. Một cơ chế để quản lý bộ nhớ.
4. Trong ngữ cảnh Entity Framework Core, 'migration′ được sử dụng để làm gì?
A. Sao lưu dữ liệu cơ sở dữ liệu.
B. Quản lý và áp dụng các thay đổi schema cơ sở dữ liệu (ví dụ: thêm bảng, cột) theo thời gian.
C. Tối ưu hóa truy vấn cơ sở dữ liệu.
D. Kết nối ứng dụng với cơ sở dữ liệu.
5. Sự khác biệt chính giữa 'public′, 'private′, và 'protected′ modifiers trong C# là gì?
A. Chúng chỉ định kiểu dữ liệu của biến thành viên.
B. Chúng kiểm soát mức độ truy cập (access level) của các thành viên lớp.
C. Chúng xác định phạm vi vòng đời của đối tượng.
D. Chúng không có sự khác biệt về chức năng.
6. Chức năng chính của NuGet Package Manager trong .NET là gì?
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 vào dự án .NET.
C. Triển khai ứng dụng .NET lên server.
D. Tạo giao diện người dùng đồ họa.
7. Lambda expression trong C# là gì và lợi ích của việc sử dụng?
A. Một kiểu dữ liệu mới trong C#.
B. Một cách viết ngắn gọn cho anonymous method (phương thức vô danh), thường dùng với delegates và LINQ.
C. Một cơ chế để tạo ra các lớp động.
D. Một công cụ để debug mã C#.
8. Interface và Abstract Class trong C# có điểm khác biệt cơ bản nào?
A. Interface có thể chứa implementation, Abstract Class thì không.
B. Một lớp có thể implement nhiều interface nhưng chỉ kế thừa từ một abstract class.
C. Interface chỉ định nghĩa hành vi (signatures), Abstract Class có thể chứa cả hành vi và trạng thái (fields, properties).
D. Cả 2 và 3 đều đúng.
9. 'Boxing′ xảy ra khi nào trong C#?
A. Khi chuyển đổi từ kiểu tham chiếu sang kiểu giá trị.
B. Khi chuyển đổi từ kiểu giá trị sang kiểu tham chiếu (object).
C. Khi thực hiện phép toán số học.
D. Khi gọi phương thức mở rộng.
10. Đâu là mục đích chính của Garbage Collector (GC) trong .NET?
A. Quản lý bộ nhớ bằng cách tự động giải phóng bộ nhớ không còn được tham chiếu.
B. Biên dịch mã C# sang mã máy.
C. Xử lý các ngoại lệ trong quá trình thực thi.
D. Quản lý các phiên bản thư viện .NET.
11. Trong C#, 'boxing′ và 'unboxing′ liên quan đến việc chuyển đổi giữa kiểu dữ liệu nào?
A. Giữa kiểu số nguyên và kiểu số thực.
B. Giữa kiểu giá trị và kiểu tham chiếu.
C. Giữa kiểu dữ liệu động và kiểu dữ liệu tĩnh.
D. Giữa kiểu dữ liệu generic và kiểu dữ liệu cụ thể.
12. Tính năng 'async′ và 'await′ trong C# được sử dụng chủ yếu để giải quyết vấn đề nào?
A. Đa luồng (multithreading) phức tạp.
B. Thực hiện các thao tác đồng bộ.
C. Xử lý các thao tác I∕O không đồng bộ mà không block luồng chính.
D. Tăng tốc độ biên dịch mã.
13. Trong ASP.NET Core, 'services′ được cấu hình trong 'Startup.cs′ (hoặc Program.cs trong .NET 6+) để làm gì?
A. Định nghĩa routing cho ứng dụng.
B. Cấu hình Dependency Injection (DI) container và đăng ký các dịch vụ (services) để ứng dụng sử dụng.
C. Cấu hình middleware pipeline.
D. Cấu hình cơ sở dữ liệu.
14. Mục đích của phương thức 'Dispose()′ và interface 'IDisposable′ trong .NET là gì?
A. Để giải phóng bộ nhớ của đối tượng.
B. Để giải phóng tài nguyên không được quản lý bởi Garbage Collector (ví dụ: file handles, database connections).
C. Để khởi tạo đối tượng.
D. Để kiểm tra kiểu dữ liệu của đối tượng.
15. Trong lập trình hướng đối tượng (OOP), 'SOLID principles′ là gì và tại sao chúng quan trọng?
A. Một tập hợp các design pattern phổ biến.
B. Năm nguyên tắc thiết kế phần mềm giúp tạo ra code dễ bảo trì, dễ mở rộng, và linh hoạt.
C. Các quy tắc đặt tên biến và phương thức trong C#.
D. Các kỹ thuật tối ưu hóa hiệu năng ứng dụng .NET.
16. Phát biểu nào sau đây đúng về LINQ (Language Integrated Query) trong .NET?
A. LINQ chỉ hoạt động với cơ sở dữ liệu SQL Server.
B. LINQ cho phép truy vấn dữ liệu từ nhiều nguồn khác nhau (collections, databases, XML,…) bằng cú pháp thống nhất.
C. LINQ là một framework để xây dựng giao diện người dùng.
D. LINQ chỉ được sử dụng trong ứng dụng web ASP.NET.
17. Serialization và Deserialization trong .NET là gì và chúng được sử dụng để làm gì?
A. Phương pháp mã hóa và giải mã dữ liệu.
B. Quá trình chuyển đổi đối tượng thành một định dạng có thể lưu trữ hoặc truyền tải (serialization) và ngược lại (deserialization).
C. Kỹ thuật tối ưu hóa hiệu năng ứng dụng.
D. Cơ chế quản lý bộ nhớ.
18. Sự khác biệt giữa 'throw′ và 'throw ex′ (trong khối catch) khi xử lý ngoại lệ trong C# là gì?
A. Không có sự khác biệt, chúng hoạt động giống nhau.
B. 'throw ex′ giữ nguyên stack trace ban đầu, 'throw′ tạo stack trace mới.
C. 'throw′ giữ nguyên stack trace ban đầu, 'throw ex′ tạo stack trace mới.
D. 'throw′ chỉ dùng cho ngoại lệ tùy chỉnh, 'throw ex′ cho ngoại lệ hệ thống.
19. Thuộc tính (property) trong C# khác gì so với trường (field)?
A. Trường có thể chứa logic, thuộc tính thì không.
B. Thuộc tính cung cấp cơ chế kiểm soát truy cập và thực thi logic khi đọc∕ghi giá trị của trường, trường thì truy cập trực tiếp.
C. Trường chỉ được sử dụng trong lớp, thuộc tính được sử dụng ở mọi nơi.
D. Không có sự khác biệt, trường và thuộc tính là như nhau.
20. Event trong C# là gì và cơ chế hoạt động của nó?
A. Một loại biến toàn cục.
B. Một cơ chế cho phép một lớp hoặc đối tượng thông báo cho các đối tượng khác khi có sự kiện xảy ra.
C. Một cách để tạo luồng (thread) mới.
D. Một cách để xử lý ngoại lệ.
21. Trong .NET, kiểu dữ liệu nào sau đây là kiểu giá trị (value type)?
A. string
B. int
C. object
D. dynamic
22. Sự khác biệt giữa 'StringBuilder′ và 'string′ trong C# khi thao tác chuỗi là gì?
A. 'string′ là kiểu giá trị, 'StringBuilder′ là kiểu tham chiếu.
B. 'string′ là immutable (bất biến), mỗi thao tác chỉnh sửa tạo ra chuỗi mới, 'StringBuilder′ là mutable (có thể thay đổi) và hiệu quả hơn cho thao tác chuỗi phức tạp.
C. 'StringBuilder′ chỉ dùng cho chuỗi số, 'string′ cho chuỗi văn bản.
D. 'string′ nhanh hơn 'StringBuilder′ trong mọi trường hợp.
23. Trong ASP.NET Core, Middleware đóng vai trò gì?
A. Xác thực người dùng.
B. Xử lý yêu cầu và phản hồi HTTP.
C. Quản lý dữ liệu phiên (session).
D. Định tuyến (routing) yêu cầu.
24. Attribute trong C# được 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 mã nguồn (lớp, phương thức, thuộc tính,…).
C. Thực hiện các phép toán số học.
D. Quản lý bộ nhớ.
25. ViewState trong ASP.NET Web Forms (framework cũ) dùng để làm gì?
A. Lưu trữ dữ liệu phiên (session) trên server.
B. Lưu trữ trạng thái của các control trên trang web giữa các postback.
C. Quản lý routing của ứng dụng web.
D. Xác thực người dùng.
26. Dependency Injection (DI) container trong .NET Core (ví dụ: ServiceProvider) có công dụng chính là gì?
A. Quản lý vòng đời của ứng dụng.
B. Cung cấp và quản lý các dependency (sự phụ thuộc) của các lớp.
C. Định nghĩa routing cho ứng dụng web.
D. Xác thực và phân quyền người dùng.
27. Trong ngữ cảnh bảo mật ASP.NET Core, JWT (JSON Web Token) thường được sử dụng cho mục đích nào?
A. Mã hóa dữ liệu trong cơ sở dữ liệu.
B. Xác thực và ủy quyền người dùng (authentication and authorization).
C. Ngăn chặn tấn công CSRF.
D. Bảo vệ chống lại SQL Injection.
28. Razor Pages trong ASP.NET Core là gì và chúng khác gì so với MVC?
A. Razor Pages là một framework giao diện người dùng hoàn toàn khác, không liên quan đến MVC.
B. Razor Pages là một cách tiếp cận page-centric để xây dựng giao diện web trong ASP.NET Core, đơn giản hóa cấu trúc so với MVC cho một số loại ứng dụng.
C. Razor Pages là phiên bản mới của MVC, thay thế hoàn toàn MVC trong ASP.NET Core.
D. Razor Pages chỉ dùng cho ứng dụng web tĩnh, MVC cho ứng dụng web động.
29. 'Reflection′ trong .NET cho phép làm gì?
A. Biên dịch mã C# sang mã máy.
B. Kiểm tra metadata của types, assemblies, modules tại runtime; tạo và gọi types động.
C. Tối ưu hóa hiệu năng ứng dụng.
D. Quản lý bộ nhớ.
30. Phương thức mở rộng (extension method) trong C# được định nghĩa trong loại lớp nào?
A. Lớp trừu tượng (abstract class)
B. Lớp tĩnh (static class)
C. Lớp sealed (sealed class)
D. Lớp generic (generic class)