1. Đâu là một lợi ích của việc sử dụng thuộc tính (properties) trong C# thay vì sử dụng các biến thành viên public?
A. Thuộc tính cho phép kiểm soát truy cập và thực hiện logic bổ sung khi đọc hoặc ghi giá trị.
B. Thuộc tính giúp giảm kích thước của đối tượng trong bộ nhớ.
C. Thuộc tính làm tăng tốc độ truy cập vào dữ liệu.
D. Thuộc tính tự động mã hóa dữ liệu.
2. Trong .NET, khi nào nên sử dụng `StringBuilder` thay vì `String`?
A. Khi thực hiện nhiều thao tác sửa đổi chuỗi, để tránh tạo ra nhiều đối tượng chuỗi trung gian.
B. Khi chỉ cần đọc chuỗi mà không cần sửa đổi.
C. Khi cần so sánh hai chuỗi với nhau.
D. Khi cần chuyển đổi một chuỗi thành số.
3. Trong .NET, mục đích chính của thuộc tính `virtual` là gì?
A. Cho phép lớp con ghi đè phương thức của lớp cha.
B. Ngăn không cho lớp khác kế thừa từ lớp đó.
C. Bảo vệ phương thức khỏi bị thay đổi.
D. Tăng tốc độ gọi phương thức.
4. Async và await trong C# được sử dụng chủ yếu để làm gì?
A. Thực hiện các hoạt động không đồng bộ mà không chặn luồng chính.
B. Tăng tốc độ thực thi của các phép toán số học.
C. Quản lý bộ nhớ hiệu quả hơn.
D. Bảo vệ ứng dụng khỏi các cuộc tấn công bảo mật.
5. Trong C#, sự khác biệt chính giữa struct và class là gì?
A. Struct là kiểu giá trị (value type), class là kiểu tham chiếu (reference type).
B. Class là kiểu giá trị (value type), struct là kiểu tham chiếu (reference type).
C. Cả hai đều là kiểu giá trị (value type).
D. Cả hai đều là kiểu tham chiếu (reference type).
6. Đâu là một lợi ích của việc sử dụng NuGet trong .NET?
A. Quản lý và chia sẻ các thư viện và dependencies của dự án một cách dễ dàng.
B. Tăng tốc độ biên dịch của ứng dụng.
C. Quản lý bộ nhớ hiệu quả hơn.
D. Cải thiện bảo mật của ứng dụng.
7. Đâu là một lợi ích của việc sử dụng generics trong C#?
A. 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à không cần boxing/unboxing.
B. Giảm kích thước của file thực thi.
C. Tăng tốc độ biên dịch.
D. Cải thiện bảo mật của ứng dụng.
8. Trong .NET, Razor Pages là gì?
A. Một mô hình phát triển trang web đơn giản hóa trong ASP.NET Core, tập trung vào các trang thay vì MVC.
B. Một công cụ để quản lý cơ sở dữ liệu.
C. Một phương pháp mã hóa dữ liệu.
D. Một dịch vụ để theo dõi hiệu suất ứng dụng.
9. Phương thức nào sau đây được sử dụng để chuyển đổi một chuỗi thành một số nguyên trong C#?
A. ToString()
B. ToInt()
C. Parse()
D. Convert.ToInt32()
10. Đâu là một lợi ích chính của việc sử dụng LINQ (Language Integrated Query) trong .NET?
A. LINQ cung cấp một cách thống nhất để truy vấn dữ liệu từ nhiều nguồn khác nhau.
B. LINQ chỉ hoạt động với cơ sở dữ liệu SQL Server.
C. LINQ làm giảm đáng kể hiệu suất ứng dụng.
D. LINQ chỉ hỗ trợ truy vấn dữ liệu XML.
11. Trong .NET, mục đích chính của thuộc tính `async` khi sử dụng với một phương thức là gì?
A. Cho phép sử dụng từ khóa `await` bên trong phương thức để thực hiện các hoạt động không đồng bộ.
B. Ngăn không cho phương thức chạy đồng thời trên nhiều luồng.
C. Tăng tốc độ thực thi của phương thức.
D. Giảm kích thước của mã thực thi.
12. Trong .NET, kiểu dữ liệu nào được sử dụng để biểu diễn một giá trị boolean?
A. Int32
B. String
C. Boolean
D. Char
13. Delegates trong C# được sử dụng để làm gì?
A. Đại diện cho các phương thức, cho phép truyền phương thức như tham số.
B. Lưu trữ dữ liệu tạm thời.
C. Định nghĩa các lớp và đối tượng.
D. Quản lý bộ nhớ.
14. Đâu là một lợi ích của việc sử dụng Dependency Injection (DI) trong .NET?
A. Giảm sự phụ thuộc giữa các lớp, giúp code dễ kiểm thử và bảo trì hơn.
B. Tăng tốc độ biên dịch của ứng dụng.
C. Quản lý bộ nhớ hiệu quả hơn.
D. Cải thiện bảo mật của ứng dụng.
15. Trong C#, sự khác biệt chính giữa `const` và `readonly` là gì?
A. `const` được gán giá trị tại thời điểm biên dịch, còn `readonly` có thể được gán giá trị tại thời điểm chạy.
B. `readonly` được gán giá trị tại thời điểm biên dịch, còn `const` có thể được gán giá trị tại thời điểm chạy.
C. Cả hai đều được gán giá trị tại thời điểm biên dịch.
D. Cả hai đều có thể được gán giá trị tại thời điểm chạy.
16. Đâu là sự khác biệt chính giữa `as` và ép kiểu trực tiếp trong C#?
A. `as` trả về null nếu ép kiểu không thành công, còn ép kiểu trực tiếp ném ra một exception.
B. Ép kiểu trực tiếp trả về null nếu ép kiểu không thành công, còn `as` ném ra một exception.
C. Cả hai đều trả về null nếu ép kiểu không thành công.
D. Cả hai đều ném ra một exception nếu ép kiểu không thành công.
17. Sự khác biệt chính giữa `==` và phương thức `.Equals()` trong C# là gì?
A. `==` so sánh tham chiếu, còn `.Equals()` so sánh giá trị (nếu được ghi đè).
B. `==` so sánh giá trị, còn `.Equals()` so sánh tham chiếu.
C. Cả hai đều so sánh tham chiếu.
D. Cả hai đều so sánh giá trị.
18. Trong .NET, cái gì là CoreCLR?
A. Là runtime của .NET Core, cung cấp môi trường thực thi cho các ứng dụng .NET Core.
B. Là trình biên dịch của .NET Framework.
C. Là một thư viện các lớp cơ sở trong .NET Framework.
D. Là một công cụ để quản lý các gói NuGet.
19. Trong .NET, Web API được sử dụng để làm gì?
A. Xây dựng các dịch vụ web dựa trên HTTP, cho phép các ứng dụng khác nhau giao tiếp với nhau.
B. Quản lý cơ sở dữ liệu.
C. Tối ưu hóa hiệu suất ứng dụng.
D. Cung cấp giao diện người dùng cho ứng dụng web.
20. Trong C#, sự khác biệt chính giữa `abstract class` và `interface` là gì?
A. Abstract class có thể chứa các thành viên có implementation, còn interface chỉ chứa declaration.
B. Interface có thể chứa các thành viên có implementation, còn abstract class chỉ chứa declaration.
C. Cả hai đều chỉ chứa declaration.
D. Cả hai đều có thể chứa các thành viên có implementation.
21. Trong .NET, công nghệ nào cho phép tạo ra các ứng dụng đa nền tảng (cross-platform)?
A. .NET Core (hoặc .NET 5 trở lên)
B. .NET Framework
C. ASP.NET
D. WPF (Windows Presentation Foundation)
22. Trong .NET, namespace được sử dụng để làm gì?
A. Tổ chức và phân loại các lớp, interface và các kiểu dữ liệu khác.
B. Tối ưu hóa hiệu suất của ứng dụng.
C. Quản lý bộ nhớ.
D. Cung cấp các dịch vụ bảo mật.
23. Trong .NET, middleware là gì?
A. Các thành phần phần mềm được lắp ráp thành một pipeline để xử lý các request và response.
B. Một công cụ để quản lý bộ nhớ.
C. Một phương pháp mã hóa dữ liệu.
D. Một dịch vụ để theo dõi hiệu suất ứng dụng.
24. Đâu là mục đích chính của Garbage Collector 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 sử dụng.
B. Tối ưu hóa hiệu suất CPU.
C. Xử lý các ngoại lệ trong ứng dụng.
D. Cung cấp các dịch vụ bảo mật.
25. Trong .NET, mục đích của thuộc tính `static` là gì?
A. Tạo ra các thành viên thuộc về lớp chứ không thuộc về đối tượng.
B. Cho phép lớp con ghi đè phương thức của lớp cha.
C. Ngăn không cho lớp khác kế thừa từ lớp đó.
D. Bảo vệ thuộc tính khỏi bị thay đổi.
26. Trong .NET, Assembly là gì?
A. Một đơn vị triển khai, chứa mã IL, metadata và resources.
B. Một đoạn mã để tối ưu hóa hiệu suất.
C. Một công cụ để quản lý bộ nhớ.
D. Một phương pháp mã hóa dữ liệu.
27. Trong lập trình hướng đối tượng với C#, tính chất nào cho phép một lớp kế thừa các thuộc tính và phương thức từ một lớp khác?
A. Đóng gói (Encapsulation)
B. Kế thừa (Inheritance)
C. Đa hình (Polymorphism)
D. Trừu tượng (Abstraction)
28. Trong .NET, interface được sử dụng để làm gì?
A. Định nghĩa một hợp đồng mà các lớp phải tuân theo.
B. Tạo ra các đối tượng cụ thể.
C. Thực hiện các phép toán số học.
D. Quản lý bộ nhớ.
29. Trong .NET, mục đích chính của thuộc tính `sealed` là gì?
A. Ngăn không cho lớp khác kế thừa từ lớp đó.
B. Bảo vệ thuộc tính khỏi bị thay đổi.
C. Tăng tốc độ truy cập thuộc tính.
D. Giảm kích thước của đối tượng trong bộ nhớ.
30. Sự khác biệt chính giữa `throw` và `throw ex` trong xử lý ngoại lệ C# là gì?
A. `throw` giữ nguyên stack trace gốc, còn `throw ex` tạo stack trace mới.
B. `throw ex` giữ nguyên stack trace gốc, còn `throw` tạo stack trace mới.
C. Cả hai đều giữ nguyên stack trace gốc.
D. Cả hai đều tạo stack trace mới.