1. Trong .NET, khái niệm ‘Polymorphism’ (Đa hình) cho phép điều gì?
A. Một lớp có thể kế thừa từ nhiều lớp cơ sở khác nhau.
B. Các đối tượng thuộc các lớp khác nhau có thể được xử lý thông qua một giao diện chung hoặc lớp cơ sở chung, và hành vi của phương thức được gọi có thể thay đổi tùy thuộc vào kiểu đối tượng thực tế.
C. Một phương thức có thể có nhiều tên khác nhau.
D. Các kiểu dữ liệu khác nhau có thể được ép kiểu (cast) một cách an toàn.
2. Mục đích của thuộc tính `[Serializable]` trong C# là gì?
A. Cho phép lớp được biên dịch thành mã máy.
B. Đánh dấu một lớp có thể được serialize (chuyển đổi thành chuỗi byte để lưu trữ hoặc truyền đi).
C. Báo hiệu rằng lớp sẽ sử dụng cơ chế garbage collection.
D. Yêu cầu lớp phải có một phương thức Dispose.
3. Trong C#, `struct` có thể kế thừa từ `class` không?
A. Có, struct có thể kế thừa từ bất kỳ class nào.
B. Không, struct không thể kế thừa từ class.
C. Chỉ có thể kế thừa từ các lớp trừu tượng.
D. Chỉ có thể kế thừa từ các lớp đã được đánh dấu là ‘sealed’.
4. Trong .NET, ‘WeakReference’ được sử dụng cho mục đích gì?
A. Để đảm bảo một đối tượng không bao giờ bị garbage collected.
B. Để cho phép garbage collector thu hồi bộ nhớ của một đối tượng ngay cả khi vẫn còn tham chiếu đến nó.
C. Để theo dõi các đối tượng đã được dispose.
D. Để tạo các đối tượng bất biến (immutable objects).
5. Trong ASP.NET Core, đâu là vai trò của ‘Dependency Injection Container’ (DI Container)?
A. Chỉ dùng để lưu trữ các chuỗi.
B. Quản lý vòng đời và cung cấp các dịch vụ (dependencies) cho các đối tượng khi chúng được yêu cầu.
C. Tự động tạo ra các tệp HTML.
D. Thực hiện các thao tác truy vấn cơ sở dữ liệu.
6. Trong C#, từ khóa ‘virtual’ khi áp dụng cho một phương thức trong lớp cơ sở (base class) có ý nghĩa gì?
A. Ngăn chặn lớp con ghi đè (override) phương thức đó.
B. Cho phép lớp con ghi đè (override) phương thức đó.
C. Chỉ định phương thức là trừu tượng (abstract) và không có triển khai.
D. Đảm bảo phương thức chỉ được gọi từ lớp cơ sở.
7. Trong .NET, khi một phương thức được khai báo là `static`, điều đó có ý nghĩa gì?
A. Phương thức đó chỉ có thể được gọi từ bên trong lớp.
B. Phương thức đó thuộc về lớp chứ không phải một thể hiện (instance) cụ thể của lớp, và có thể được gọi trực tiếp bằng tên lớp mà không cần tạo đối tượng.
C. Phương thức đó sẽ tự động được gọi khi chương trình khởi động.
D. Phương thức đó không thể nhận tham số.
8. Trong .NET, ‘value types’ (kiểu giá trị) và ‘reference types’ (kiểu tham chiếu) khác nhau cơ bản về điều gì khi gán biến?
A. Khi gán, value type sao chép toàn bộ giá trị, còn reference type chỉ sao chép tham chiếu đến cùng một đối tượng.
B. Khi gán, cả value type và reference type đều sao chép toàn bộ giá trị của đối tượng.
C. Khi gán, value type chỉ sao chép tham chiếu, còn reference type sao chép toàn bộ giá trị.
D. Không có sự khác biệt khi gán giữa hai loại này.
9. Trong C#, từ khóa ‘using’ có thể được sử dụng cho mục đích nào?
A. Chỉ để chỉ định không gian tên (namespace).
B. Để chỉ định không gian tên (namespace) và để đảm bảo tài nguyên không quản lý (unmanaged resources) được giải phóng đúng cách thông qua ‘using statement’.
C. Để khai báo các lớp trừu tượng.
D. Để tạo các biến chỉ đọc (read-only).
10. Trong C#, từ khóa ‘abstract’ khi áp dụng cho một lớp có ý nghĩa gì?
A. Cho phép lớp đó được khởi tạo trực tiếp.
B. Ngăn chặn việc khởi tạo trực tiếp lớp đó và yêu cầu lớp con phải triển khai các phương thức trừu tượng.
C. Đảm bảo tất cả các phương thức trong lớp đều là tĩnh (static).
D. Buộc lớp phải triển khai mọi interface mà nó kế thừa.
11. Đâu là mục đích của thuộc tính `[Required]` trong Entity Framework Core?
A. Đảm bảo một thuộc tính phải được khởi tạo với giá trị mặc định.
B. Chỉ định rằng một thuộc tính là khóa chính (primary key) của bảng.
C. Yêu cầu rằng thuộc tính này phải có giá trị (không được null) trong cơ sở dữ liệu.
D. Cho phép thuộc tính này được ánh xạ tới nhiều cột trong bảng.
12. Trong .NET, ‘Boxing’ và ‘Unboxing’ liên quan đến việc chuyển đổi giữa các loại dữ liệu nào?
A. Chỉ giữa các kiểu chuỗi (string).
B. Giữa kiểu giá trị (value types) và kiểu tham chiếu ‘object’ (hoặc interface).
C. Chỉ giữa các kiểu số nguyên (integers).
D. Giữa các kiểu tùy chỉnh (custom types).
13. Trong ASP.NET Core, khái niệm ‘Razor Pages’ được thiết kế để giải quyết vấn đề gì?
A. Cung cấp một mô hình lập trình đơn giản hơn MVC cho các trang web dựa trên trang (page-centric).
B. Tự động hóa việc tạo các API RESTful.
C. Quản lý kết nối cơ sở dữ liệu theo cách hiệu quả hơn.
D. Cải thiện hiệu suất render của các ứng dụng Blazor.
14. Đâu là mục đích của thuộc tính `[DataContract]` và `[DataMember]` trong .NET?
A. Định nghĩa các phương thức trừu tượng.
B. Đánh dấu các lớp và thành viên của chúng để có thể được serialize/deserialize cho các dịch vụ như WCF hoặc Web API.
C. Tăng cường bảo mật cho các lớp.
D. Chỉ định cách thức garbage collection hoạt động.
15. Trong .NET, đâu là sự khác biệt cơ bản giữa `struct` và `class`?
A. Class được lưu trữ trên stack, còn struct được lưu trữ trên heap.
B. Struct là kiểu giá trị (value type) và được lưu trữ trên stack (hoặc nhúng trong đối tượng khác), còn class là kiểu tham chiếu (reference type) và được lưu trữ trên heap.
C. Struct không thể có constructor, còn class thì có.
D. Class không hỗ trợ kế thừa, còn struct thì có.
16. Đâu là vai trò của ‘Delegate’ trong C#?
A. Là một kiểu dữ liệu chỉ lưu trữ các số nguyên.
B. Là một kiểu dữ liệu tham chiếu (reference type) có thể tham chiếu đến một phương thức có chữ ký (signature) phù hợp.
C. Là một cấu trúc dữ liệu để lưu trữ danh sách các đối tượng.
D. Là một cách để định nghĩa các lớp trừu tượng.
17. Đâu là chức năng chính của ‘Interface’ trong C#?
A. Cung cấp triển khai mặc định cho các phương thức.
B. Định nghĩa một hợp đồng (contract) về các phương thức, thuộc tính, sự kiện mà một lớp phải triển khai, mà không cung cấp bất kỳ triển khai nào.
C. Đảm bảo một lớp chỉ có thể kế thừa từ một lớp cơ sở duy nhất.
D. Cho phép tạo các đối tượng trực tiếp từ interface.
18. Trong .NET, khái niệm ‘Anonymous Types’ cho phép làm gì?
A. Tạo ra các lớp với tên cố định, không thể thay đổi.
B. Tạo ra các đối tượng có kiểu được suy luận bởi trình biên dịch và không có tên định nghĩa rõ ràng.
C. Tạo ra các phương thức không nhận tham số.
D. Đảm bảo các biến chỉ có thể được truy cập từ bên ngoài lớp.
19. Đâu là đặc điểm của ‘Abstract Factory’ design pattern?
A. Cung cấp một giao diện để tạo các đối tượng có liên quan hoặc phụ thuộc lẫn nhau mà không chỉ định các lớp cụ thể của chúng.
B. Định nghĩa một thuật toán trong một lớp, nhưng để các lớp con quyết định cách thực hiện thuật toán đó.
C. Cho phép một đối tượng thay đổi hành vi của nó khi trạng thái bên trong của nó thay đổi.
D. Tạo ra nhiều bản sao của một đối tượng duy nhất.
20. Đâu là đặc điểm chính của LINQ to Objects trong .NET?
A. Cho phép truy vấn dữ liệu trực tiếp từ cơ sở dữ liệu SQL Server.
B. Cung cấp một cách thống nhất để truy vấn các bộ sưu tập dữ liệu trong bộ nhớ (in-memory collections).
C. Yêu cầu sử dụng Entity Framework để tương tác với dữ liệu.
D. Chỉ hỗ trợ truy vấn các mảng (arrays) và danh sách (lists).
21. Đâu là một ví dụ về ‘value type’ trong C#?
A. string
B. class
C. int
D. object
22. Trong .NET, khái niệm ‘Garbage Collector’ (GC) chịu trách nhiệm chính cho việc gì?
A. Quản lý việc cấp phát bộ nhớ cho các biến cục bộ.
B. Tự động giải phóng bộ nhớ của các đối tượng không còn được tham chiếu.
C. Tối ưu hóa tốc độ thực thi của ứng dụng.
D. Xử lý các ngoại lệ (exceptions) trong quá trình chạy.
23. Đâu là mục đích của từ khóa `yield return` trong C#?
A. Để định nghĩa một lớp trừu tượng.
B. Để tạo ra một chuỗi các giá trị một cách tuần tự (on-demand) mà không cần lưu trữ toàn bộ danh sách trong bộ nhớ.
C. Để đảm bảo một phương thức chỉ được gọi một lần.
D. Để xử lý các ngoại lệ một cách hiệu quả.
24. Đâu là mục đích của thuộc tính `[Route]` trong ASP.NET Core MVC / Web API?
A. Để định nghĩa các thuộc tính của một lớp.
B. Để xác định URL pattern mà một controller hoặc action sẽ phản hồi.
C. Để quản lý kết nối cơ sở dữ liệu.
D. Để chỉ định cách thức serialize dữ liệu.
25. Trong ASP.NET Core, middleware pipeline hoạt động như thế nào?
A. Mỗi request được xử lý bởi một middleware duy nhất trước khi trả về client.
B. Một chuỗi các middleware được thực thi tuần tự, mỗi middleware có thể xử lý request và/hoặc truyền nó đến middleware tiếp theo.
C. Middleware được chọn ngẫu nhiên để xử lý request dựa trên tải hệ thống.
D. Chỉ các middleware được cấu hình rõ ràng mới tham gia vào pipeline.
26. Đâu là mục đích của từ khóa ‘new’ khi khởi tạo một đối tượng trong C#?
A. Cho phép phương thức được ghi đè (override).
B. Yêu cầu lớp đó phải là trừu tượng (abstract).
C. Cấp phát bộ nhớ và gọi constructor của lớp để tạo một thể hiện mới (instance) của đối tượng.
D. Đảm bảo đối tượng được garbage collected ngay lập tức.
27. Đâu là mục đích chính của việc sử dụng ‘dependency injection’ (DI) trong phát triển .NET?
A. Tăng cường hiệu suất bằng cách giảm thiểu số lượng đối tượng được tạo.
B. Giúp quản lý vòng đời của các đối tượng và cung cấp chúng cho các lớp cần sử dụng.
C. Tự động hóa quá trình biên dịch mã nguồn.
D. Thay thế hoàn toàn cú pháp LINQ trong các truy vấn dữ liệu.
28. Trong .NET, khái niệm ‘Extension Methods’ cho phép chúng ta thực hiện hành động gì?
A. Thêm các trường (fields) vào một lớp đã có.
B. Thêm các phương thức mới vào một kiểu hiện có mà không cần sửa đổi định nghĩa gốc của kiểu đó.
C. Thay đổi cách thức hoạt động của garbage collector.
D. Tạo các lớp con kế thừa từ lớp trừu tượng.
29. Khái niệm ‘Reflection’ trong .NET cho phép làm gì?
A. Tự động sửa lỗi trong mã nguồn.
B. Kiểm tra và sửa đổi cấu trúc của các đối tượng và assembly tại thời điểm chạy (runtime).
C. Tạo giao diện người dùng đồ họa.
D. Quản lý việc lưu trữ dữ liệu trong cơ sở dữ liệu.
30. Đâu là vai trò của ‘Assembly’ trong .NET Framework / .NET Core?
A. Là một giao diện người dùng đồ họa (GUI).
B. Là một đơn vị triển khai và quản lý mã nguồn, bao gồm các lớp, tài nguyên và siêu dữ liệu.
C. Là một loại biến đặc biệt chỉ lưu trữ số nguyên.
D. Là một công cụ để gỡ lỗi (debug) mã.
31. Trong .NET, `StringBuilder` class được sử dụng khi nào là hiệu quả nhất?
A. Khi bạn cần đọc dữ liệu từ một tệp văn bản lớn.
B. Khi bạn cần thực hiện nhiều thao tác nối chuỗi (string concatenation) trong một vòng lặp hoặc một chuỗi các phép toán.
C. Khi bạn cần chuyển đổi một số sang dạng chuỗi.
D. Khi bạn cần so sánh hai chuỗi.
32. Trong C#, làm thế nào để xử lý ngoại lệ (exception handling) một cách an toàn?
A. Chỉ sử dụng khối `try` để bao bọc mã.
B. Sử dụng khối `try-catch-finally` để bắt và xử lý các lỗi có thể xảy ra, và `finally` để dọn dẹp tài nguyên.
C. Bỏ qua tất cả các ngoại lệ để ứng dụng không bị dừng.
D. Chỉ bắt các ngoại lệ `NullReferenceException`.
33. Đâu là mục đích của ‘Generics’ trong C#?
A. Tăng cường bảo mật bằng cách mã hóa dữ liệu.
B. Cho phép tạo các lớp, phương thức, hoặc cấu trúc dữ liệu hoạt động với bất kỳ kiểu dữ liệu nào, đảm bảo an toàn kiểu (type safety) tại thời điểm biên dịch.
C. Tự động hóa việc tạo các tệp cấu hình (configuration files).
D. Giảm kích thước của tệp thực thi (.exe/.dll).
34. Trong .NET, ‘casting’ (ép kiểu) được sử dụng để làm gì?
A. Tạo một bản sao của đối tượng.
B. Chuyển đổi một biến từ kiểu dữ liệu này sang kiểu dữ liệu khác.
C. Định nghĩa một biến mới.
D. Thực thi một phương thức.
35. Đâu là đặc điểm của ‘extension methods’ trong C#?
A. Cho phép thêm các thuộc tính (properties) vào một lớp đã tồn tại.
B. Cho phép thêm các phương thức mới vào một kiểu dữ liệu đã tồn tại mà không cần sửa đổi định nghĩa gốc của kiểu đó.
C. Chỉ có thể được định nghĩa trong cùng một namespace với kiểu mà nó mở rộng.
D. Luôn yêu cầu sử dụng từ khóa ‘override’.
36. Đâu là sự khác biệt giữa `IComparable` và `IComparer` trong .NET?
A. `IComparable` dùng để so sánh các kiểu tham chiếu, còn `IComparer` dùng để so sánh các kiểu giá trị.
B. `IComparable` định nghĩa phương thức so sánh bên trong chính đối tượng đó, còn `IComparer` định nghĩa một lớp riêng biệt để thực hiện việc so sánh.
C. `IComparable` chỉ cho phép sắp xếp theo thứ tự tăng dần, còn `IComparer` cho phép cả tăng và giảm.
D. Không có sự khác biệt thực tế giữa hai interface này.
37. Đâu là mục đích của từ khóa ‘readonly’ trong C#?
A. Cho phép một biến được sửa đổi giá trị nhiều lần.
B. Ngăn chặn việc sửa đổi giá trị của một biến sau khi nó đã được gán giá trị ban đầu (trong constructor hoặc tại thời điểm khai báo).
C. Đảm bảo một biến chỉ có thể được truy cập từ bên trong lớp.
D. Biến đó sẽ được khởi tạo lại mỗi khi phương thức được gọi.
38. Trong .NET, khái niệm ‘boxing’ đề cập đến hành động nào?
A. Chuyển đổi một kiểu giá trị (value type) thành một kiểu tham chiếu (reference type).
B. Chuyển đổi một kiểu tham chiếu (reference type) thành một kiểu giá trị (value type).
C. Biến đổi dữ liệu từ dạng chuỗi sang dạng số.
D. Tạo một bản sao của đối tượng hiện có.
39. Khái niệm ‘async/await’ trong C# được sử dụng chủ yếu để làm gì?
A. Đảm bảo thực thi tuần tự của các khối mã.
B. Cho phép thực thi bất đồng bộ, tránh chặn luồng chính (UI thread) trong các tác vụ tốn thời gian.
C. Tự động hóa việc quản lý bộ nhớ.
D. Biên dịch mã C# sang mã máy.
40. Đâu là mục đích của ‘Attribute’ trong C#?
A. Để định nghĩa các biến cục bộ trong một phương thức.
B. Để cung cấp siêu dữ liệu (metadata) có thể được đọc bởi trình biên dịch hoặc các công cụ runtime, ảnh hưởng đến hành vi của mã.
C. Để tạo ra các lớp trừu tượng.
D. Để đảm bảo rằng một lớp chỉ có thể được kế thừa một lần.
41. Trong C#, ‘async’ và ‘await’ được sử dụng để làm gì?
A. Tạo ra các luồng (threads) mới một cách dễ dàng.
B. Cho phép thực hiện các hoạt động I/O hoặc các tác vụ tốn thời gian một cách không đồng bộ, tránh chặn luồng chính.
C. Đảm bảo rằng chỉ có một luồng có thể truy cập vào một tài nguyên tại một thời điểm.
D. Quản lý bộ nhớ tự động trong ứng dụng.
42. Trong ASP.NET Core, ‘ViewBag’ và ‘ViewData’ thường được sử dụng để làm gì?
A. Lưu trữ thông tin cấu hình ứng dụng.
B. Truyền dữ liệu từ Controller đến View.
C. Quản lý phiên làm việc của người dùng.
D. Lưu trữ dữ liệu trong bộ nhớ cache của server.
43. Dữ liệu nào thường được lưu trữ trong cookie của trình duyệt web?
A. Toàn bộ mã nguồn của ứng dụng web.
B. Thông tin nhỏ như ID phiên làm việc, tùy chọn người dùng, hoặc trạng thái đăng nhập.
C. Dữ liệu nhạy cảm như mật khẩu đã mã hóa.
D. Tệp thực thi của ứng dụng.
44. Trong ASP.NET Core MVC, ‘Middleware’ là gì và có chức năng gì?
A. Là các lớp xử lý logic nghiệp vụ chính của ứng dụng.
B. Là các thành phần xử lý yêu cầu HTTP trong một pipeline tuần tự.
C. Là các lớp dùng để định nghĩa các Model trong kiến trúc MVC.
D. Là các thành phần dùng để tạo giao diện người dùng (UI).
45. Khái niệm ‘Dependency Inversion Principle’ (Nguyên tắc Đảo ngược Phụ thuộc) trong SOLID có ý nghĩa gì?
A. Các module cấp cao không nên phụ thuộc vào các module cấp thấp; cả hai nên phụ thuộc vào các trừu tượng.
B. Một lớp chỉ nên có một lý do để thay đổi.
C. Một lớp không nên bị buộc phải triển khai các phương thức mà nó không sử dụng.
D. Các lớp con phải có thể thay thế các lớp cha.
46. Trong C#, ‘LINQ’ là viết tắt của gì và dùng để làm gì?
A. Library for Input and Navigation; dùng để điều hướng người dùng.
B. Language Integrated Query; dùng để truy vấn dữ liệu từ các nguồn khác nhau một cách thống nhất.
C. Logic for Internal Operations; dùng để quản lý các hoạt động nội bộ của hệ thống.
D. Layered Internet Communication; dùng để xử lý giao tiếp qua mạng.
47. Khái niệm ‘Singleton Pattern’ trong thiết kế phần mềm là gì?
A. Một mẫu thiết kế cho phép tạo ra nhiều phiên bản của một lớp.
B. Một mẫu thiết kế đảm bảo rằng một lớp chỉ có duy nhất một đối tượng và cung cấp một điểm truy cập toàn cục đến đối tượng đó.
C. Một mẫu thiết kế để tạo ra các đối tượng phức tạp một cách dần dần.
D. Một mẫu thiết kế để tách biệt việc tạo đối tượng khỏi đối tượng sử dụng nó.
48. Tại sao cần sử dụng ‘Model Binding’ trong ASP.NET Core?
A. Để tự động hóa việc tạo các tệp CSS.
B. Để tự động chuyển đổi dữ liệu từ yêu cầu HTTP (như form data, route data, query strings) thành các đối tượng .NET (Models) trong controller action.
C. Để quản lý caching nội dung trang web.
D. Để xử lý lỗi và ngoại lệ.
49. Khái niệm ‘Dependency Injection’ (DI) trong ASP.NET Core có vai trò gì chính?
A. Giúp tách rời việc khởi tạo các đối tượng phụ thuộc khỏi lớp sử dụng chúng.
B. Tự động hóa việc ghi log các hoạt động của ứng dụng.
C. Quản lý kết nối cơ sở dữ liệu hiệu quả hơn.
D. Tạo ra các API endpoint RESTful một cách tự động.
50. Trong C#, từ khóa ‘using’ có thể được sử dụng cho mục đích gì?
A. Chỉ để nhập các namespace.
B. Để nhập các namespace và để đảm bảo các tài nguyên không quản lý (unmanaged resources) được giải phóng đúng cách (ví dụ: trong một khối using (...) {...}
).
C. Để định nghĩa một lớp trừu tượng.
D. Để tạo ra một đối tượng mới.
51. Trong C#, để định nghĩa một thuộc tính (property) có thể được truy cập cả từ bên trong và bên ngoài lớp, bạn sử dụng từ khóa nào?
A. private
B. protected
C. internal
D. public
52. Khái niệm ‘Extension Methods’ trong C# cho phép làm gì?
A. Cho phép một lớp kế thừa từ nhiều lớp khác nhau.
B. Cho phép bạn thêm các phương thức mới vào một kiểu hiện có mà không cần sửa đổi mã nguồn gốc của kiểu đó.
C. Tự động hóa quá trình đóng gói dữ liệu.
D. Xử lý ngoại lệ (exceptions) một cách tường minh hơn.
53. Khái niệm ‘Razor Syntax’ trong ASP.NET Core được sử dụng cho mục đích gì?
A. Để định nghĩa các quy tắc validation cho dữ liệu nhập.
B. Để nhúng mã C# (hoặc VB.NET) vào các tệp HTML để tạo ra nội dung động cho trang web.
C. Để quản lý các yêu cầu HTTP và định tuyến.
D. Để tạo các dịch vụ DI.
54. Trong .NET Core, đâu là cách thức chính để quản lý các phiên bản của các gói NuGet phụ thuộc trong một dự án?
A. Sử dụng file ‘packages.config’ để khai báo từng gói.
B. Sử dụng file ‘.csproj’ với các mục ‘PackageReference’.
C. Tất cả các gói phụ thuộc đều được quản lý thông qua ‘appsettings.json’.
D. Các gói phụ thuộc được quản lý hoàn toàn bởi Visual Studio mà không cần file cấu hình.
55. Trong ASP.NET Core, file ‘appsettings.json’ được sử dụng chủ yếu cho mục đích gì?
A. Chứa toàn bộ mã nguồn của ứng dụng.
B. Cấu hình các thiết lập cho ứng dụng, ví dụ như chuỗi kết nối cơ sở dữ liệu, các khóa API, hoặc các cài đặt khác.
C. Định nghĩa các route cho các controller.
D. Lưu trữ dữ liệu người dùng.
56. Trong C#, ‘delegate’ là gì?
A. Một biến lưu trữ một chuỗi ký tự.
B. Một kiểu dữ liệu an toàn kiểu có thể tham chiếu đến các phương thức có cùng chữ ký (signature).
C. Một cấu trúc dữ liệu giống như mảng.
D. Một cơ chế để định nghĩa các thuộc tính (properties).
57. Điểm khác biệt chính giữa `IEnumerable` và `ICollection` trong .NET là gì?
A. `IEnumerable` cho phép thêm/xóa phần tử, còn `ICollection` thì không.
B. `ICollection` cung cấp các phương thức để thêm, xóa và đếm phần tử, còn `IEnumerable` chỉ cho phép duyệt qua các phần tử.
C. `IEnumerable` chỉ làm việc với các collection có thứ tự, còn `ICollection` thì không.
D. Không có sự khác biệt đáng kể về chức năng giữa hai interface này.
58. ASP.NET Core Identity được thiết kế để cung cấp chức năng gì cho ứng dụng web?
A. Chỉ quản lý cache của ứng dụng.
B. Xử lý xác thực (authentication) và phân quyền (authorization) cho người dùng.
C. Tạo các API RESTful một cách tự động.
D. Quản lý giao diện người dùng và các thành phần UI.
59. Để tạo ra một controller trong ASP.NET Core MVC, lớp controller đó cần phải kế thừa từ lớp nào?
A. System.Web.Mvc.Controller
B. Microsoft.AspNetCore.Mvc.ControllerBase
C. System.Object
D. Microsoft.Extensions.DependencyInjection.IServiceCollection
60. Khái niệm ‘Razor Pages’ trong ASP.NET Core được giới thiệu với mục đích gì?
A. Tạo ra các API web hiệu quả hơn.
B. Cung cấp một mô hình lập trang tập trung vào mã C# và HTML.
C. Xử lý các tác vụ bất đồng bộ phức tạp.
D. Quản lý caching nội dung trang web.
61. Trong ASP.NET Core, làm thế nào để định tuyến (routing) một yêu cầu HTTP đến một controller action cụ thể?
A. Sử dụng các thuộc tính (attributes) như [HttpGet]
, [HttpPost]
trên các action method.
B. Chỉ định rõ ràng tên controller và tên action trong file ‘appsettings.json’.
C. Sử dụng file ‘web.config’ để cấu hình tất cả các route.
D. Tất cả các yêu cầu đều được xử lý bởi một action duy nhất.
62. Khái niệm ‘Polymorphism’ (Đa hình) trong lập trình hướng đối tượng nghĩa là gì?
A. Khả năng một đối tượng có thể thay đổi thuộc tính của nó trong thời gian chạy.
B. Khả năng các đối tượng thuộc các lớp khác nhau có thể phản ứng với cùng một thông điệp (method call) theo cách riêng của chúng.
C. Khả năng một lớp kế thừa thuộc tính và phương thức từ nhiều lớp cha.
D. Khả năng đóng gói dữ liệu và phương thức vào một đơn vị duy nhất.
63. Trong Entity Framework Core, khi nào nên sử dụng phương thức AsNoTracking()
?
A. Khi bạn cần cập nhật các thực thể trong cơ sở dữ liệu.
B. Khi bạn chỉ cần đọc dữ liệu và không có ý định sửa đổi hoặc cập nhật các thực thể đó, để cải thiện hiệu suất bằng cách giảm overhead của việc theo dõi thay đổi.
C. Khi bạn muốn tạo ra các thực thể mới.
D. Khi bạn cần thực hiện các thao tác xóa dữ liệu.
64. Khái niệm ‘Interface Segregation Principle’ (Nguyên tắc Phân tách Interface) trong SOLID đề cập đến điều gì?
A. Một lớp không nên bị buộc phải triển khai các phương thức mà nó không sử dụng.
B. Một lớp chỉ nên có một lý do để thay đổi.
C. Các lớp cha nên có thể thay thế bằng các lớp con mà không ảnh hưởng đến chương trình.
D. Mọi sự phụ thuộc nên được trừu tượng hóa.
65. Trong C#, ‘struct’ và ‘class’ khác nhau cơ bản về điều gì liên quan đến cách chúng được lưu trữ và truyền đi?
A. ‘Struct’ được lưu trữ trên heap và truyền đi bằng tham chiếu, còn ‘class’ trên stack và truyền đi bằng giá trị.
B. ‘Struct’ là kiểu giá trị (value type) và thường được lưu trữ trên stack, còn ‘class’ là kiểu tham chiếu (reference type) và lưu trữ trên heap.
C. Không có sự khác biệt về cách lưu trữ và truyền đi giữa ‘struct’ và ‘class’.
D. ‘Struct’ chỉ có thể chứa các kiểu dữ liệu cơ bản, còn ‘class’ có thể chứa các kiểu phức tạp hơn.
66. Khái niệm ‘Abstraction’ (Trừu tượng hóa) trong lập trình hướng đối tượng nghĩa là gì?
A. Khả năng đóng gói dữ liệu và phương thức vào một đơn vị duy nhất.
B. Khả năng tạo ra các lớp con từ các lớp cha.
C. Tập trung vào các đặc điểm thiết yếu của một đối tượng và ẩn đi các chi tiết phức tạp không cần thiết.
D. Khả năng một đối tượng có thể có nhiều hình dạng.
67. Trong Entity Framework Core, ‘Migrations’ được sử dụng để làm gì?
A. Tự động tạo ra các View cho giao diện người dùng.
B. Quản lý các thay đổi của schema cơ sở dữ liệu theo thời gian, cho phép cập nhật database một cách có kiểm soát.
C. Tối ưu hóa hiệu suất truy vấn cơ sở dữ liệu.
D. Phân quyền truy cập vào các bảng dữ liệu.
68. Trong .NET, ‘Generics’ (Kiểu tổng quát) mang lại lợi ích chính gì?
A. Tăng cường bảo mật cho ứng dụng.
B. Cho phép tạo ra các lớp, phương thức hoặc delegate có thể hoạt động với bất kỳ kiểu dữ liệu nào, đồng thời đảm bảo an toàn kiểu (type safety).
C. Tự động hóa việc ghi log.
D. Giảm số lượng dòng mã nguồn cần viết.
69. Trong Entity Framework Core, ‘Code-First’ là gì?
A. Cách tiếp cận mà database được tạo ra trước, sau đó EF Core tạo ra các lớp C# tương ứng.
B. Cách tiếp cận mà các lớp C# (models) được định nghĩa trước, sau đó EF Core tạo ra database và schema tương ứng.
C. Cách tiếp cận chỉ sử dụng các câu lệnh SQL thuần túy để tương tác với database.
D. Cách tiếp cận mà EF Core tự động phát hiện và cập nhật schema database dựa trên các thay đổi trong mã nguồn.
70. Khái niệm ‘API Controller’ trong ASP.NET Core Web API có vai trò gì?
A. Chỉ dùng để xử lý các View HTML.
B. Là các controller chuyên biệt để xử lý các yêu cầu HTTP và trả về dữ liệu (thường là JSON/XML) mà không có View đi kèm.
C. Quản lý các tác vụ bất đồng bộ.
D. Xử lý xác thực người dùng.
71. Trong .NET, ‘CLR’ (Common Language Runtime) có chức năng chính là 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ã IL, và cung cấp các dịch vụ runtime khác như quản lý lỗi, bảo mật.
C. Xử lý các yêu cầu HTTP.
D. Định nghĩa các kiểu dữ liệu.
72. Khái niệm ‘Garbage Collection’ (GC) trong .NET có vai trò gì?
A. Tự động quản lý việc cấp phát và giải phóng bộ nhớ cho các đối tượng không còn được sử dụng.
B. Tự động biên dịch mã nguồn thành mã máy.
C. Quản lý các luồng (threads) trong ứng dụng để tối ưu hiệu suất.
D. Tự động phát hiện và sửa lỗi trong mã nguồn.
73. Trong .NET, ‘Assembly’ là gì?
A. Một tệp mã nguồn C# duy nhất.
B. Một đơn vị triển khai (deployment unit) chứa mã IL (Intermediate Language), metadata, và tài nguyên, thường là một tệp .dll hoặc .exe.
C. Một giao diện lập trình ứng dụng (API).
D. Một công cụ dòng lệnh để biên dịch mã.
74. Trong LINQ to Objects, phương thức nào được sử dụng để lọc một tập hợp các đối tượng dựa trên một điều kiện?
A. Select()
B. OrderBy()
C. Where()
D. GroupBy()
75. ASP.NET Core Web API được sử dụng để làm gì?
A. Tạo các ứng dụng desktop.
B. Xây dựng các dịch vụ HTTP trả về dữ liệu (thường là JSON hoặc XML) cho các client khác (web, mobile, desktop).
C. Quản lý cơ sở dữ liệu.
D. Thiết kế giao diện người dùng đồ họa.
76. Trong C#, để định nghĩa một phương thức có thể được ghi đè (override) bởi các lớp con, phương thức đó cần được đánh dấu bằng từ khóa nào?
A. static
B. abstract
C. virtual
hoặc abstract
D. override
77. Thành phần nào trong ASP.NET Core chịu trách nhiệm xử lý các yêu cầu HTTP và trả về các phản hồi HTTP tương ứng?
A. Startup
class
B. Model
C. Kestrel
(hoặc một web server khác) cùng với pipeline của Middleware
D. ViewEngine
78. Khái niệm ‘JSON Web Token’ (JWT) thường được sử dụng trong ngữ cảnh nào?
A. Để định nghĩa cấu trúc dữ liệu cho các file XML.
B. Để xác thực và truyền thông tin an toàn giữa các bên dưới dạng đối tượng JSON được ký số hoặc mã hóa.
C. Để quản lý các phiên làm việc trên máy chủ.
D. Để tạo ra các API endpoint.
79. Trong ASP.NET Core, ‘Tag Helpers’ được giới thiệu để làm gì?
A. Để xử lý logic nghiệp vụ phức tạp trong Views.
B. Cho phép lập trình viên sử dụng các thuộc tính HTML để tham chiếu đến mã C# và tạo ra HTML một cách khai báo (declarative).
C. Quản lý kết nối cơ sở dữ liệu.
D. Tự động hóa việc ghi log.
80. Trong C#, một ‘abstract class’ khác với ‘interface’ ở điểm nào cơ bản nhất?
A. Interface có thể có triển khai mặc định cho phương thức, còn abstract class thì không.
B. Abstract class có thể có các thành viên (phương thức, thuộc tính) được triển khai (có thân), còn interface thì chỉ định nghĩa chữ ký (signature) và không được có triển khai (trước C# 8).
C. Một lớp chỉ có thể kế thừa từ một abstract class, nhưng có thể triển khai nhiều interface.
D. Abstract class không thể có các thành viên private, còn interface thì có thể.
81. Khái niệm ‘Async/Await’ trong C# được giới thiệu nhằm mục đích chính là gì?
A. Tăng tốc độ thực thi của các tác vụ CPU-bound.
B. Giúp viết mã bất đồng bộ (asynchronous code) dễ đọc và dễ quản lý hơn.
C. Tự động hóa việc tạo giao diện người dùng.
D. Thực hiện đa luồng (multithreading) một cách tường minh.
82. Trong .NET, khái niệm ‘Value Types’ và ‘Reference Types’ khác nhau cơ bản ở điểm nào?
A. Value Types được lưu trên heap, Reference Types trên stack.
B. Value Types chứa trực tiếp dữ liệu, Reference Types chứa tham chiếu đến địa chỉ dữ liệu trên heap.
C. Value Types không thể có thuộc tính, Reference Types thì có.
D. Reference Types luôn được khởi tạo, Value Types thì không.
83. Trong C#, một ‘Struct’ (Cấu trúc) khác với một ‘Class’ (Lớp) ở điểm nào quan trọng nhất liên quan đến cách lưu trữ và truyền tham số?
A. Struct là kiểu tham chiếu, Class là kiểu giá trị.
B. Struct là kiểu giá trị, Class là kiểu tham chiếu.
C. Struct không thể có phương thức, Class có thể.
D. Class luôn được cấp phát trên stack, Struct luôn trên heap.
84. Trong ASP.NET Core, để cấu hình các dịch vụ và pipeline xử lý yêu cầu, bạn sẽ sửa đổi file nào?
A. Program.cs
B. Startup.cs
C. appsettings.json
D. Web.config
85. Trong .NET, khái niệm ‘Garbage Collector’ (GC) có chức năng chính là gì?
A. Tối ưu hóa hiệu suất mạng.
B. Quản lý và giải phóng bộ nhớ không còn được sử dụng.
C. Biên dịch mã nguồn C# thành mã máy.
D. Xử lý các ngoại lệ (exceptions).
86. Trong .NET, ‘Interface’ khác với ‘Abstract Class’ ở điểm nào cơ bản nhất?
A. Interface có thể có triển khai phương thức, Abstract Class thì không.
B. Abstract Class có thể có biến thành viên, Interface thì không.
C. Một lớp chỉ có thể kế thừa từ một Abstract Class, nhưng có thể triển khai nhiều Interface.
D. Interface chỉ định nghĩa các phương thức, Abstract Class định nghĩa cả thuộc tính và phương thức.
87. Khái niệm ‘NuGet’ trong hệ sinh thái .NET dùng để làm gì?
A. Quản lý phiên bản hệ điều hành.
B. Quản lý các gói (packages) thư viện của bên thứ ba hoặc do người dùng tạo ra cho các ứng dụng .NET.
C. Biên dịch mã nguồn C#.
D. Kiểm tra lỗi chính tả trong mã.
88. Trong ASP.NET Core, ‘Middleware’ là gì?
A. Một bộ phận của cơ sở dữ liệu.
B. Một thành phần trong pipeline xử lý yêu cầu HTTP, có thể thực hiện xử lý yêu cầu, chuyển tiếp yêu cầu đến middleware tiếp theo, hoặc trả về phản hồi.
C. Một loại biến trong C#.
D. Một công cụ để debug mã.
89. Trong .NET, ‘Strongly Typed Datasets’ được sử dụng để làm gì?
A. Tạo các ứng dụng Console.
B. Cung cấp một cách để làm việc với dữ liệu từ cơ sở dữ liệu với khả năng kiểm tra kiểu tại thời điểm biên dịch (compile-time type checking).
C. Quản lý các luồng xử lý song song.
D. Phân tích hiệu suất ứng dụng.
90. Trong C#, từ khóa ‘const’ và ‘readonly’ có điểm gì giống nhau và khác nhau?
A. Cả hai đều chỉ có thể gán giá trị một lần, nhưng const là tại thời điểm biên dịch, readonly có thể tại thời điểm chạy.
B. Const là kiểu giá trị, readonly là kiểu tham chiếu.
C. Const không thể là kiểu số, readonly thì có thể.
D. Không có điểm nào giống nhau.
91. Trong .NET Framework, loại bộ sưu tập nào cho phép lưu trữ các cặp khóa-giá trị và đảm bảo tính duy nhất của các khóa?
A. ArrayList
B. List
C. Dictionary
D. SortedList
92. Khái niệm ‘Dependency Injection Container’ (hoặc IoC Container) trong .NET Core là gì?
A. Một công cụ để quản lý các file cấu hình.
B. Một thành phần quản lý vòng đời của các đối tượng và tự động cung cấp các phụ thuộc cho các lớp khi chúng được yêu cầu.
C. Một trình biên dịch mã.
D. Một công cụ để tạo giao diện người dùng.
93. Khái niệm ‘Data Binding’ trong các ứng dụng .NET (ví dụ: WinForms, WPF, Blazor) chủ yếu phục vụ mục đích gì?
A. Tự động tạo các hàm toán học.
B. Liên kết dữ liệu từ nguồn dữ liệu (ví dụ: object, database) với các thành phần giao diện người dùng, cho phép cập nhật tự động khi dữ liệu thay đổi.
C. Quản lý kết nối mạng.
D. Xử lý các sự kiện.
94. Trong C#, khi sử dụng từ khóa ‘using’ với một đối tượng triển khai IDisposable, điều gì sẽ xảy ra sau khi khối ‘using’ kết thúc?
A. Đối tượng sẽ bị xóa khỏi bộ nhớ bởi Garbage Collector.
B. Phương thức Dispose() của đối tượng sẽ được gọi để giải phóng tài nguyên.
C. Đối tượng sẽ được đặt lại về trạng thái ban đầu.
D. Đối tượng sẽ bị khóa và không thể truy cập.
95. Khái niệm ‘LINQ’ (Language Integrated Query) trong .NET cho phép lập trình viên thực hiện điều gì?
A. Tạo giao diện người dùng đồ họa.
B. Quản lý kết nối cơ sở dữ liệu.
C. Truy vấn dữ liệu từ nhiều nguồn khác nhau một cách thống nhất.
D. Phát triển ứng dụng web service.
96. Khái niệm ‘Anonymous Types’ trong C# được sử dụng khi nào?
A. Để tạo ra các lớp có thể tái sử dụng.
B. Để tạo ra các kiểu dữ liệu tạm thời, có thể chứa một vài thuộc tính mà không cần định nghĩa một lớp hoặc struct riêng biệt.
C. Để thực hiện các phép toán phức tạp.
D. Để quản lý kết nối cơ sở dữ liệu.
97. Trong C#, một phương thức có thể trả về nhiều giá trị bằng cách nào sau đây?
A. Khái niệm ‘Multiple Return Values’ trực tiếp.
B. Sử dụng Tuple, out parameters, hoặc trả về một đối tượng/struct chứa nhiều giá trị.
C. Tạo nhiều câu lệnh return.
D. Sử dụng biến toàn cục.
98. Trong C#, từ khóa ‘override’ được sử dụng với mục đích gì?
A. Ngăn chặn việc ghi đè một phương thức từ lớp cơ sở.
B. Cung cấp một triển khai cụ thể cho một phương thức trừu tượng hoặc virtual từ lớp cơ sở.
C. Tạo ra một phương thức mới hoàn toàn độc lập với lớp cơ sở.
D. Ẩn một phương thức từ lớp cơ sở.
99. Trong .NET, ‘LINQ to SQL’ và ‘Entity Framework’ là các công nghệ dùng để làm gì?
A. Xây dựng giao diện người dùng.
B. Cung cấp các công cụ Object-Relational Mapping (ORM) để ánh xạ các đối tượng .NET với các bảng trong cơ sở dữ liệu quan hệ.
C. Quản lý các gói NuGet.
D. Thực hiện các phép toán trên mảng.
100. Khái niệm ‘Extension Methods’ trong C# cho phép lập trình viên làm gì?
A. Tạo ra các lớp trừu tượng.
B. Thêm các phương thức mới cho một kiểu dữ liệu hiện có mà không cần sửa đổi mã nguồn gốc của kiểu đó.
C. Quản lý các biến toàn cục.
D. Tự động hóa việc tạo các đối tượng.
101. Khái niệm ‘Reflection’ trong .NET cho phép lập trình viên làm gì?
A. Tạo ra các ứng dụng web động.
B. Khám phá và tương tác với metadata của các assembly, module, và type tại thời điểm chạy (runtime).
C. Tối ưu hóa việc sử dụng bộ nhớ.
D. Thực hiện mã hóa và giải mã dữ liệu.
102. Trong .NET, ‘Assembly Versioning’ (Quản lý phiên bản Assembly) nhằm mục đích gì?
A. Tự động tạo mã nguồn.
B. Kiểm soát cách các phiên bản khác nhau của một assembly có thể tương tác với nhau, giúp tránh các xung đột hoặc vấn đề tương thích.
C. Quản lý bộ nhớ.
D. Tạo giao diện người dùng.
103. Trong ASP.NET Core MVC, thành phần nào chịu trách nhiệm xử lý yêu cầu HTTP đến và trả về phản hồi cho client?
A. Model
B. View
C. Controller
D. Middleware
104. Khi làm việc với Entity Framework Core, phương thức ‘SaveChanges()’ có vai trò gì?
A. Tạo mới một bảng trong cơ sở dữ liệu.
B. Lưu các thay đổi đã thực hiện trên các đối tượng tracked của DbContext vào cơ sở dữ liệu.
C. Xóa toàn bộ dữ liệu trong bảng.
D. Tạo một bản sao lưu của cơ sở dữ liệu.
105. Khái niệm ‘Delegate’ trong C# được sử dụng chủ yếu cho mục đích gì?
A. Tạo các lớp trừu tượng.
B. Quản lý bộ nhớ tự động.
C. Định nghĩa các phương thức có thể được truyền như tham số hoặc gán cho biến.
D. Thực thi các câu lệnh SQL.
106. Khái niệm ‘Polymorphism’ (Đa hình) trong lập trình hướng đối tượng nghĩa là gì?
A. Khả năng một đối tượng có thể thay đổi trạng thái của nó.
B. Khả năng một đối tượng có thể có nhiều hình thái hoặc hành vi khác nhau tùy thuộc vào ngữ cảnh.
C. Khả năng một lớp kế thừa từ nhiều lớp cơ sở.
D. Khả năng một phương thức thực hiện nhiều tác vụ cùng lúc.
107. Trong C#, từ khóa ‘static’ khi áp dụng cho một biến thành viên (member variable) có ý nghĩa gì?
A. Biến đó thuộc về một thể hiện (instance) cụ thể của lớp.
B. Biến đó thuộc về lớp chứ không phải một thể hiện cụ thể, và chỉ có một bản sao duy nhất được chia sẻ giữa tất cả các thể hiện.
C. Biến đó chỉ có thể truy cập từ bên trong lớp.
D. Biến đó sẽ bị giải phóng ngay lập tức sau khi được sử dụng.
108. Khái niệm ‘Dependency Injection’ (DI) trong .NET Core nhằm mục đích gì?
A. Tự động tạo các file cấu hình.
B. Giúp quản lý vòng đời của các đối tượng và cung cấp các phụ thuộc (dependencies) cho các lớp một cách linh hoạt.
C. Cải thiện hiệu suất truy vấn cơ sở dữ liệu.
D. Tự động hóa việc deploy ứng dụng.
109. Khái niệm ‘Serialization’ trong .NET có ý nghĩa gì?
A. Biên dịch mã nguồn.
B. Quá trình chuyển đổi một đối tượng thành một định dạng có thể lưu trữ hoặc truyền đi (ví dụ: JSON, XML, binary), và ngược lại.
C. Tạo ra các đối tượng mới.
D. Xử lý các ngoại lệ.
110. Khái niệm ‘Web API’ trong .NET được sử dụng chủ yếu cho mục đích gì?
A. Xây dựng giao diện người dùng web.
B. Tạo các dịch vụ backend có thể được truy cập bởi nhiều loại client (web, mobile, desktop) thông qua giao thức HTTP.
C. Quản lý cơ sở dữ liệu.
D. Thực hiện các tác vụ xử lý dữ liệu nặng.
111. Khái niệm ‘Razor Pages’ trong ASP.NET Core được thiết kế để làm gì?
A. Tạo các API cho mobile.
B. Cung cấp một mô hình lập trình trang dựa trên file dễ dàng hơn cho việc xây dựng các trang web có logic phía server.
C. Quản lý cơ sở dữ liệu.
D. Xử lý các tác vụ bất đồng bộ.
112. Trong .NET, khái niệm ‘boxing’ và ‘unboxing’ liên quan đến điều gì?
A. Quản lý bộ nhớ của các đối tượng trên heap.
B. Chuyển đổi giữa kiểu giá trị (value types) và kiểu tham chiếu (reference types) một cách tường minh.
C. Thực hiện các phép toán chuỗi.
D. Xử lý các kết nối mạng.
113. Trong .NET, khái niệm ‘Assembly’ (Tập hợp) là gì?
A. Một biến duy nhất trong chương trình.
B. Một đơn vị triển khai (deployment unit) bao gồm mã IL, tài nguyên, và metadata, thường được đóng gói dưới dạng file .dll hoặc .exe.
C. Một phương thức ghi đè.
D. Một cấu trúc dữ liệu.
114. Khái niệm ‘Thread Safety’ trong .NET quan trọng khi nào?
A. Khi chỉ có một luồng duy nhất truy cập tài nguyên.
B. Khi nhiều luồng có thể truy cập và sửa đổi cùng một tài nguyên chia sẻ đồng thời, để tránh các vấn đề như race conditions.
C. Khi làm việc với các kiểu dữ liệu nguyên thủy.
D. Khi ứng dụng chỉ chạy trên một CPU.
115. Trong C#, thuộc tính ‘sealed’ khi áp dụng cho một lớp có ý nghĩa gì?
A. Cho phép lớp đó kế thừa từ bất kỳ lớp nào khác.
B. Ngăn chặn lớp đó được kế thừa bởi các lớp khác.
C. Buộc lớp đó phải được kế thừa.
D. Ẩn tất cả các thành viên của lớp.
116. Khi nói về ‘Exception Handling’ trong .NET, khối ‘try-catch-finally’ có vai trò gì?
A. Tạo ra các lỗi một cách có chủ đích.
B. Bao bọc mã có khả năng gây lỗi, xử lý lỗi khi chúng xảy ra, và thực hiện các thao tác dọn dẹp tài nguyên.
C. Tăng tốc độ thực thi của ứng dụng.
D. Quản lý kết nối cơ sở dữ liệu.
117. Trong .NET, ‘Generics’ (Kiểu chung) được sử dụng để làm gì?
A. Tạo ra các lớp giao diện người dùng.
B. Cho phép định nghĩa các lớp, phương thức, và cấu trúc dữ liệu có thể hoạt động với bất kỳ kiểu dữ liệu nào mà vẫn đảm bảo an toàn kiểu (type safety) và hiệu suất.
C. Quản lý các tác vụ bất đồng bộ.
D. Thực hiện các phép toán số học phức tạp.
118. Trong C#, từ khóa ‘virtual’ được sử dụng trên một phương thức trong lớp cơ sở để làm gì?
A. Ngăn chặn việc ghi đè phương thức ở lớp kế thừa.
B. Cho phép lớp kế thừa ghi đè (override) phương thức đó.
C. Buộc lớp kế thừa phải định nghĩa lại phương thức.
D. Ẩn phương thức khỏi các lớp kế thừa.
119. Trong C#, từ khóa ‘new’ có thể được sử dụng cho những mục đích nào?
A. Chỉ để tạo đối tượng của lớp.
B. Tạo thể hiện của lớp, tạo ẩn danh (anonymous types), tạo đối tượng Tuple, và ẩn một thành viên của lớp cơ sở.
C. Chỉ để tạo biến.
D. Chỉ để gọi phương thức.
120. Trong .NET, một ‘Abstract Class’ có thể chứa những gì?
A. Chỉ các phương thức trừu tượng.
B. Chỉ các phương thức đã triển khai.
C. Cả các phương thức trừu tượng và các phương thức đã triển khai, cùng với các thành viên khác như thuộc tính, trường.
D. Chỉ các thuộc tính đã triển khai.
121. Đâu là cách khai báo một mảng (array) các số nguyên trong C#?
A. int myArr = new int[5];
B. int[] myArr = new int[5];
C. array int myArr = new int[5];
D. int myArr[5];
122. Trong C#, ‘abstract class’ có thể có gì?
A. Chỉ các phương thức trừu tượng.
B. Các phương thức trừu tượng và các phương thức có triển khai cụ thể.
C. Chỉ các thuộc tính.
D. Không có thành viên nào.
123. Khái niệm ‘Interface Segregation Principle’ (ISP) trong SOLID là gì?
A. Một lớp không nên bắt buộc triển khai các phương thức mà nó không sử dụng.
B. Một lớp chỉ nên có một lý do để thay đổi.
C. Các lớp phụ thuộc vào các lớp trừu tượng, không phụ thuộc vào các lớp cụ thể.
D. Nên chia các interface lớn thành các interface nhỏ hơn, chuyên biệt hơn.
124. Trong ASP.NET Core, đâu là cách phổ biến để quản lý trạng thái người dùng giữa các yêu cầu?
A. Session State
B. ViewBag
C. TempData
D. ViewModel
125. Phương thức nào trong C# cho phép bạn đóng gói một tập hợp các thuộc tính và phương thức liên quan vào một đơn vị duy nhất?
A. Struct
B. Interface
C. Class
D. Enum
126. Trong C#, phương thức ‘Dispose()’ thường được sử dụng với mục đích gì?
A. Để khởi tạo một đối tượng mới.
B. Để giải phóng các tài nguyên không được quản lý bởi Garbage Collector (ví dụ: file handles, network connections).
C. Để thực thi logic kinh doanh.
D. Để ghi log các hoạt động của chương trình.
127. Trong ASP.NET Core, ‘Razor Pages’ là gì?
A. Một framework để tạo dịch vụ web.
B. Một mô hình lập trình trang dựa trên .NET, đơn giản hóa việc xây dựng các trang web có logic phía máy chủ.
C. Một công cụ quản lý cơ sở dữ liệu.
D. Một cơ chế bảo mật.
128. Trong C#, từ khóa ‘async’ và ‘await’ được sử dụng để làm gì?
A. Để định nghĩa các biến toàn cục.
B. Để tạo các vòng lặp bất đồng bộ.
C. Để xử lý các tác vụ bất đồng bộ và không chặn luồng chính.
D. Để khai báo các lớp trừu tượng.
129. Trong .NET Core, ‘Middleware’ là gì?
A. Một thành phần của hệ điều hành.
B. Một thành phần xử lý yêu cầu HTTP trong pipeline của ứng dụng ASP.NET Core.
C. Một loại cơ sở dữ liệu.
D. Một công cụ gỡ lỗi.
130. Trong .NET, ‘NuGet’ là gì?
A. Một công cụ để viết mã.
B. Một trình quản lý gói (package manager) cho .NET, cho phép tìm, cài đặt và quản lý các thư viện của bên thứ ba.
C. Một hệ thống cơ sở dữ liệu.
D. Một framework phát triển giao diện người dùng.
131. Trong .NET, thuật ngữ ‘CLR’ (Common Language Runtime) đề cập đến điều gì?
A. Một trình biên dịch cho ngôn ngữ C#.
B. Một môi trường thực thi cung cấp các dịch vụ như quản lý bộ nhớ, xử lý ngoại lệ và biên dịch JIT.
C. Một thư viện chuẩn cho các tác vụ I/O.
D. Một công cụ để gỡ lỗi ứng dụng.
132. Trong mô hình MVC (.NET), vai trò của ‘Controller’ là gì?
A. Hiển thị dữ liệu cho người dùng.
B. Lưu trữ dữ liệu.
C. Xử lý các yêu cầu của người dùng, tương tác với Model và chọn View để trả về.
D. Quản lý kết nối cơ sở dữ liệu.
133. API nào trong .NET thường được sử dụng để làm việc với tệp và thư mục?
A. System.Net
B. System.Text
C. System.IO
D. System.Collections
134. Khi làm việc với cơ sở dữ liệu trong .NET, lớp nào thường được sử dụng để thực thi các lệnh SQL?
A. SqlConnection
B. SqlDataReader
C. SqlCommand
D. SqlDataAdapter
135. Cơ chế ‘Dependency Injection’ (DI) trong .NET giúp giải quyết vấn đề gì?
A. Tăng tốc độ thực thi của ứng dụng.
B. Giảm sự phụ thuộc giữa các thành phần, giúp mã dễ kiểm thử và bảo trì hơn.
C. Quản lý kết nối mạng.
D. Tự động hóa việc tạo giao diện người dùng.
136. Khái niệm ‘LINQ’ trong .NET đề cập đến điều gì?
A. Một framework để xây dựng giao diện người dùng web.
B. Một tập hợp các cú pháp và phương thức truy vấn dữ liệu tích hợp sẵn vào ngôn ngữ C# và VB.NET.
C. Một công nghệ để tạo dịch vụ web RESTful.
D. Một công cụ để quản lý phiên bản mã nguồn.
137. Khái niệm ‘JIT Compilation’ (Just-In-Time Compilation) trong .NET là gì?
A. Biên dịch toàn bộ mã nguồn trước khi chạy.
B. Biên dịch mã IL (Intermediate Language) thành mã máy gốc ngay trước khi nó được thực thi.
C. Biên dịch mã nguồn thành mã IL.
D. Biên dịch mã nguồn thành mã assembly.
138. Đâu là cách khai báo một biến kiểu ‘string’ trong C#?
A. int myString = “Hello”;
B. string myString = “Hello”;
C. var myString = ‘Hello’;
D. String myString = ‘Hello’;
139. Trong .NET, `using` statement có mục đích gì?
A. Để định nghĩa một lớp mới.
B. Để khai báo một biến toàn cục.
C. Để đảm bảo rằng các tài nguyên được quản lý bởi IDisposable được giải phóng đúng cách.
D. Để tạo một ngoại lệ.
140. Khái niệm ‘Serialization’ trong .NET là gì?
A. Quá trình biên dịch mã IL thành mã máy.
B. Quá trình chuyển đổi một đối tượng thành một định dạng có thể lưu trữ hoặc truyền đi (ví dụ: JSON, XML).
C. Quá trình tạo một đối tượng mới từ một lớp.
D. Quá trình xử lý ngoại lệ.
141. Đâu là cách khai báo một biến kiểu ‘double’ trong C#?
A. int myDouble = 10.5;
B. double myDouble = 10.5;
C. float myDouble = 10.5;
D. decimal myDouble = 10.5;
142. Trong C#, ‘delegate’ là gì?
A. Một kiểu dữ liệu nguyên thủy.
B. Một tham chiếu tới một phương thức có kiểu chữ ký (signature) nhất định.
C. Một cách để khai báo biến toàn cục.
D. Một toán tử trong biểu thức toán học.
143. Cơ chế nào trong .NET Framework cho phép các ứng dụng tương tác với nhau thông qua mạng?
A. Reflection
B. Remoting (hoặc WCF cho các phiên bản mới hơn)
C. Delegates
D. Events
144. Trong .NET, Assembly là gì?
A. Một tệp thực thi (.exe) hoặc thư viện (.dll) chứa mã IL, tài nguyên và siêu dữ liệu.
B. Một giao diện người dùng đồ họa.
C. Một quy trình nền của .NET Framework.
D. Một cơ chế kiểm soát phiên bản.
145. Trong C#, từ khóa ‘readonly’ được sử dụng với mục đích gì?
A. Để chỉ định rằng một phương thức không thể bị ghi đè.
B. Để chỉ định rằng một biến thành viên chỉ có thể được gán giá trị tại thời điểm khai báo hoặc trong constructor.
C. Để đảm bảo một biến là số nguyên.
D. Để tạo một biến chỉ đọc từ bên ngoài lớp.
146. Trong .NET, phương thức nào được sử dụng để chuyển đổi một chuỗi thành một kiểu dữ liệu số nguyên?
A. ToString()
B. Parse()
C. Convert.ToInt32()
D. GetType()
147. Trong C#, kiểu dữ liệu ‘struct’ khác với ‘class’ ở điểm nào?
A. Struct là kiểu tham chiếu, class là kiểu giá trị.
B. Struct là kiểu giá trị và được cấp phát trên Stack, class là kiểu tham chiếu và được cấp phát trên Heap.
C. Struct không thể có phương thức, class có thể.
D. Struct không thể kế thừa, class có thể kế thừa.
148. Khái niệm ‘Dependency Inversion Principle’ (DIP) trong SOLID là gì?
A. Các mô-đun cấp cao không nên phụ thuộc vào các mô-đun cấp thấp; cả hai nên phụ thuộc vào trừu tượng.
B. Một lớp không nên có nhiều hơn một trách nhiệm.
C. Nên chia các interface lớn thành các interface nhỏ hơn.
D. Nên đóng gói các chi tiết triển khai.
149. Loại lỗi nào thường gặp khi truy cập một phần tử mảng bằng chỉ số (index) nằm ngoài phạm vi hợp lệ?
A. NullReferenceException
B. IndexOutOfRangeException
C. ArgumentException
D. DivideByZeroException
150. Đâu là cách tốt nhất để xử lý các ngoại lệ (exceptions) trong C#?
A. Sử dụng các câu lệnh ‘if-else’ để kiểm tra lỗi.
B. Sử dụng khối ‘try-catch-finally’ để bắt và xử lý các tình huống ngoại lệ.
C. Bỏ qua mọi lỗi phát sinh.
D. Chỉ sử dụng các giá trị mặc định khi lỗi xảy ra.
151. Khái niệm ‘Garbage Collection’ (GC) trong .NET có vai trò gì?
A. Quản lý việc biên dịch mã nguồn.
B. Tự động giải phóng bộ nhớ không còn được sử dụng bởi các đối tượng.
C. Xử lý ngoại lệ (exception handling).
D. Quản lý kết nối cơ sở dữ liệu.
152. Khái niệm ‘Encapsulation’ (Đóng gói) trong lập trình hướng đối tượng là gì?
A. Khả năng một lớp kế thừa các thuộc tính và phương thức từ lớp cha.
B. Khả năng che giấu chi tiết triển khai của một lớp và chỉ hiển thị những gì cần thiết.
C. Khả năng một đối tượng có thể có nhiều hình dạng.
D. Khả năng một lớp có thể tương tác với các lớp khác mà không cần biết chi tiết triển khai của chúng.
153. Khái niệm ‘Value Types’ và ‘Reference Types’ trong .NET khác nhau như thế nào?
A. Value Types lưu trữ dữ liệu trực tiếp, Reference Types lưu trữ tham chiếu đến địa chỉ bộ nhớ.
B. Value Types luôn được cấp phát trên Heap, Reference Types luôn được cấp phát trên Stack.
C. Value Types không thể có phương thức, Reference Types có thể.
D. Không có sự khác biệt cơ bản nào.
154. Cơ chế ‘Reflection’ trong .NET cho phép làm gì?
A. Tự động biên dịch mã nguồn.
B. Kiểm tra và thao tác với metadata của các assembly, module, và type tại thời gian chạy.
C. Quản lý kết nối mạng.
D. Tạo giao diện người dùng đồ họa.
155. Trong .NET, ‘WeakReference’ được sử dụng khi nào?
A. Để tạo một tham chiếu mạnh mẽ đến một đối tượng.
B. Để tạo một tham chiếu không ngăn cản Garbage Collector giải phóng đối tượng.
C. Để theo dõi lỗi trong ứng dụng.
D. Để quản lý kết nối cơ sở dữ liệu.
156. Trong C#, ‘lambda expression’ là gì?
A. Một cách để định nghĩa các lớp trừu tượng.
B. Một biểu thức ngắn gọn để tạo các hàm ẩn danh (anonymous functions).
C. Một kiểu dữ liệu nguyên thủy.
D. Một cách để xử lý ngoại lệ.
157. Trong Entity Framework, ‘DbContext’ là gì?
A. Một lớp để định nghĩa các bảng trong cơ sở dữ liệu.
B. Một lớp đại diện cho một phiên làm việc với cơ sở dữ liệu, cho phép truy vấn và lưu thay đổi.
C. Một phương thức để thực thi các truy vấn SQL phức tạp.
D. Một công cụ để tạo mã tự động.
158. Khái niệm ‘Extension Methods’ trong C# cho phép gì?
A. Cho phép một lớp kế thừa từ nhiều lớp khác.
B. Cho phép thêm các phương thức mới vào một kiểu dữ liệu hiện có mà không cần sửa đổi mã nguồn gốc của kiểu đó.
C. Cho phép tạo các biến có thể thay đổi giá trị.
D. Cho phép định nghĩa các hằng số.
159. Khái niệm ‘Polymorphism’ (Đa hình) trong lập trình hướng đối tượng có nghĩa là gì?
A. Khả năng một đối tượng có thể tự sao chép chính nó.
B. Khả năng các đối tượng thuộc các lớp khác nhau phản hồi với cùng một thông điệp theo cách riêng của chúng.
C. Khả năng một lớp kế thừa từ nhiều lớp cha.
D. Khả năng che giấu chi tiết triển khai bên trong.
160. Phương thức nào trong C# được sử dụng để định nghĩa một tập hợp các hành vi mà một lớp có thể triển khai?
A. Class
B. Struct
C. Interface
D. Abstract Class
161. Trong C#, `sealed` keyword được sử dụng với một lớp có ý nghĩa gì?
A. Cho phép lớp đó được kế thừa bởi các lớp khác.
B. Ngăn chặn lớp đó được kế thừa bởi bất kỳ lớp nào khác.
C. Đảm bảo tất cả các phương thức trong lớp đó là trừu tượng.
D. Chỉ cho phép các thành viên của lớp đó truy cập được.
162. Đâu là đặc điểm của ‘Value Objects’ trong thiết kế phần mềm sử dụng .NET?
A. Chúng có một định danh duy nhất và có thể thay đổi được.
B. Chúng được xác định bởi giá trị của chúng chứ không phải định danh, và là bất biến (immutable).
C. Chúng luôn là kiểu tham chiếu.
D. Chúng chỉ có thể được lưu trữ trên stack.
163. ASP.NET Core Blazor là gì?
A. Một framework để xây dựng các dịch vụ backend hiệu năng cao.
B. Một framework cho phép phát triển giao diện người dùng tương tác trên nền web bằng C# thay vì JavaScript, có thể chạy trên máy chủ hoặc trên trình duyệt (client-side).
C. Một công cụ để quản lý cơ sở dữ liệu NoSQL.
D. Một thư viện để xử lý các tác vụ phân tích dữ liệu.
164. Trong C#, từ khóa ‘virtual’ được sử dụng với một phương thức trong lớp cơ sở với mục đích gì?
A. Ngăn chặn lớp con ghi đè lên phương thức đó.
B. Cho phép lớp con ghi đè (override) phương thức đó.
C. Đảm bảo phương thức đó luôn được gọi.
D. Đánh dấu phương thức là chỉ có thể truy cập trong nội bộ lớp.
165. Khái niệm ‘Data Annotations’ trong .NET được sử dụng cho mục đích gì?
A. Để định nghĩa các phương thức bất đồng bộ.
B. Để cung cấp các metadata khai báo cho các lớp và thuộc tính, thường dùng cho việc xác thực dữ liệu (validation) và hiển thị (UI hints).
C. Để quản lý các phiên làm việc.
D. Để xử lý các yêu cầu HTTP.
166. Khái niệm ‘Strongly Typed DataSets’ trong .NET là gì?
A. Các đối tượng được tạo tự động từ lược đồ cơ sở dữ liệu, cung cấp một cách an toàn kiểu để truy cập dữ liệu.
B. Các đối tượng dùng để lưu trữ chuỗi ký tự.
C. Các đối tượng dùng để xử lý các phép toán số học.
D. Các đối tượng dùng để quản lý các tệp tin.
167. Dịch vụ nào trong .NET là một công cụ mạnh mẽ để tạo và quản lý các API Web?
A. ASP.NET Core MVC.
B. ASP.NET Core Web API.
C. Windows Communication Foundation (WCF).
D. SignalR.
168. Trong C#, `finally` block trong cấu trúc `try-catch-finally` được thực thi khi nào?
A. Chỉ khi một ngoại lệ xảy ra và được bắt bởi `catch` block.
B. Chỉ khi không có ngoại lệ nào xảy ra.
C. Luôn luôn được thực thi, bất kể có ngoại lệ xảy ra hay không, hoặc ngoại lệ có được bắt hay không.
D. Chỉ khi ngoại lệ không được bắt.
169. Cú pháp `nameof()` trong C# được sử dụng để làm gì?
A. Để tạo một đối tượng mới.
B. Để lấy tên của một biến, kiểu, hoặc thành viên lớp dưới dạng chuỗi tại thời điểm biên dịch (compile-time).
C. Để thực hiện các phép toán số học.
D. Để xử lý các ngoại lệ.
170. Trong C#, `interface` có thể chứa loại thành viên nào?
A. Chỉ các phương thức trừu tượng (abstract methods).
B. Các phương thức, thuộc tính (properties), sự kiện (events) và chỉ số (indexers) mà không có triển khai mặc định (trừ C# 8.0 trở lên có default interface methods).
C. Các trường dữ liệu (fields) và phương thức có triển khai cụ thể.
D. Các phương thức chỉ có thể truy cập trong nội bộ lớp.
171. Trong C#, khi sử dụng `using` statement với một đối tượng triển khai `IDisposable`, điều gì sẽ xảy ra?
A. Đối tượng sẽ bị xóa khỏi bộ nhớ ngay lập tức.
B. Phương thức `Dispose()` của đối tượng đó sẽ được gọi tự động khi thoát khỏi khối `using`, bất kể có ngoại lệ hay không.
C. Đối tượng sẽ được đánh dấu để Garbage Collector xử lý sau.
D. Đối tượng sẽ được sao chép.
172. Khái niệm ‘Model Binding’ trong ASP.NET Core có ý nghĩa gì?
A. Quá trình tạo ra các mô hình dữ liệu cho ứng dụng.
B. Quá trình tự động ánh xạ dữ liệu từ yêu cầu HTTP (như form data, query string, route data) vào các tham số của phương thức action trong Controller hoặc Razor Page.
C. Cơ chế để hiển thị dữ liệu từ Model lên giao diện người dùng.
D. Quản lý các phiên làm việc của người dùng.
173. Trong C#, khái niệm ‘casting’ được sử dụng để làm gì?
A. Để định nghĩa một lớp mới.
B. Để chuyển đổi một giá trị từ kiểu dữ liệu này sang một kiểu dữ liệu khác.
C. Để tạo các biến cục bộ.
D. Để xử lý các lỗi runtime.
174. Trong C#, `abstract class` và `interface` có điểm khác biệt chính nào?
A. Abstract class có thể chứa các phương thức có triển khai, trong khi interface thì không.
B. Một lớp chỉ có thể kế thừa từ một abstract class, nhưng có thể hiện thực hóa nhiều interface.
C. Abstract class là kiểu giá trị, còn interface là kiểu tham chiếu.
D. Cả A và B đều đúng.
175. Trong ASP.NET Core, làm thế nào để thêm các dịch vụ vào Dependency Injection container?
A. Sử dụng phương thức `services.AddSingleton();` hoặc `services.AddScoped();` hoặc `services.AddTransient();` trong phương thức `ConfigureServices` của lớp Startup.
B. Tạo các đối tượng dịch vụ trực tiếp trong tệp `appsettings.json`.
C. Sử dụng các thuộc tính `[Inject]` trên các lớp cần sử dụng dịch vụ.
D. Định nghĩa các dịch vụ trong tệp `Program.cs`.
176. ASP.NET Core Razor Pages là gì và nó phù hợp cho trường hợp nào?
A. Một framework để xây dựng các ứng dụng di động lai.
B. Một mô hình lập trình tập trung vào trang (page-centric) cho phép phát triển giao diện web nhanh chóng, đặc biệt cho các trang có logic phía máy chủ đơn giản hoặc tương tác dữ liệu trực tiếp.
C. Một công cụ để tạo các dịch vụ microservices hiệu năng cao.
D. Một cơ chế để xây dựng các API RESTful phức tạp.
177. Đâu là cách tốt nhất để quản lý cấu hình (configuration) trong một ứng dụng ASP.NET Core?
A. Hard-coding các giá trị cấu hình trực tiếp trong mã nguồn.
B. Sử dụng các biến môi trường và tệp cấu hình (như appsettings.json, appsettings.Development.json) kết hợp với IConfiguration.
C. Chỉ sử dụng cơ sở dữ liệu để lưu trữ tất cả cấu hình.
D. Tạo các tệp XML tùy chỉnh cho từng loại cấu hình.
178. Đâu là mô hình thiết kế phổ biến để xử lý bất đồng bộ trong .NET, cho phép thực hiện các tác vụ dài mà không chặn luồng chính?
A. Singleton Pattern.
B. Factory Pattern.
C. Async/Await Pattern.
D. Observer Pattern.
179. Khi nào bạn nên sử dụng async/await trong C#?
A. Chỉ khi thực hiện các phép toán số học phức tạp.
B. Khi thực hiện các hoạt động I/O chặn luồng (blocking I/O), như đọc/ghi tệp, truy vấn cơ sở dữ liệu hoặc gọi API, để tránh làm ứng dụng bị treo.
C. Khi cần khởi tạo các biến toàn cục.
D. Để tối ưu hóa việc sử dụng bộ nhớ.
180. Khái niệm ‘Middleware’ trong ASP.NET Core là gì?
A. Một lớp cơ sở cho tất cả các Controller.
B. Một thành phần xử lý chuỗi các yêu cầu đến và phản hồi đi, cho phép tùy chỉnh luồng xử lý của ứng dụng.
C. Một tệp cấu hình cho phép định nghĩa các route của ứng dụng.
D. Một cơ chế để quản lý phiên làm việc của người dùng.
181. Đâu là lợi ích chính của việc sử dụng NuGet Package Manager trong .NET?
A. Tự động hóa quá trình biên dịch mã nguồn.
B. Quản lý các thư viện và framework của bên thứ ba (third-party) mà ứng dụng của bạn phụ thuộc vào, bao gồm cài đặt, cập nhật và gỡ bỏ.
C. Xử lý các yêu cầu xác thực người dùng.
D. Tạo báo cáo hiệu suất ứng dụng.
182. ASP.NET Core SignalR được thiết kế để làm gì?
A. Để xây dựng các API RESTful.
B. Để cho phép máy chủ gửi nội dung cập nhật theo thời gian thực cho các client (web browsers hoặc các ứng dụng khác) thông qua các kết nối dài hạn (long-lived connections).
C. Để quản lý các phiên làm việc của người dùng.
D. Để xử lý các tác vụ batch.
183. Khái niệm ‘Model State’ trong ASP.NET Core MVC liên quan đến việc gì?
A. Cấu trúc của cơ sở dữ liệu.
B. Trạng thái của các lỗi xác thực (validation errors) và dữ liệu đã được binding cho một yêu cầu cụ thể.
C. Quản lý vòng đời của các đối tượng dịch vụ.
D. Cấu hình các tệp tĩnh.
184. Khái niệm LINQ (Language Integrated Query) trong C# cho phép lập trình viên làm gì?
A. Tạo giao diện người dùng đồ họa (GUI) một cách trực quan.
B. Viết mã bất đồng bộ (asynchronous code) dễ dàng hơn.
C. Truy vấn và thao tác dữ liệu từ nhiều nguồn khác nhau (ví dụ: collections, cơ sở dữ liệu, XML) bằng cú pháp giống nhau.
D. Quản lý bộ nhớ và giải phóng tài nguyên tự động.
185. Trong .NET Core, làm thế nào để cấu hình các dịch vụ cho ứng dụng của bạn?
A. Sử dụng tệp cấu hình XML tùy chỉnh.
B. Thực hiện đăng ký dịch vụ trong phương thức ‘ConfigureServices’ của lớp Startup.
C. Chỉ định dịch vụ trong tệp ‘appsettings.json’.
D. Sử dụng các thuộc tính (attributes) trên các lớp dịch vụ.
186. Đâu là mục đích chính của việc sử dụng Dependency Injection (DI) trong .NET?
A. Tăng hiệu suất xử lý của ứng dụng bằng cách giảm thiểu cuộc gọi phương thức.
B. Giúp quản lý vòng đời của các đối tượng và cung cấp các dependencies cần thiết cho các lớp mà không cần chúng tự tạo.
C. Cải thiện bảo mật bằng cách ẩn giấu logic triển khai.
D. Tự động hóa quá trình biên dịch và triển khai ứng dụng.
187. Trong ASP.NET Core, middleware nào chịu trách nhiệm định tuyến yêu cầu đến một controller hoặc Razor page phù hợp?
A. Authentication Middleware.
B. Routing Middleware.
C. Exception Handling Middleware.
D. Static Files Middleware.
188. Đâu là cách đúng để định nghĩa một thuộc tính (property) có thể đọc và ghi trong một lớp C#?
A. public int MyProperty { get; }
B. public int MyProperty { get; private set; }
C. public int MyProperty { get; set; }
D. public int MyProperty;
189. Entity Framework Core (EF Core) là gì?
A. Một framework để xây dựng giao diện người dùng web.
B. Một Object-Relational Mapper (ORM) cho phép các nhà phát triển .NET tương tác với cơ sở dữ liệu bằng cách sử dụng các đối tượng C# thay vì viết SQL thuần túy.
C. Một thư viện để xử lý các tác vụ mạng.
D. Một công cụ để quản lý phiên bản mã nguồn.
190. Trong .NET, khái niệm Garbage Collector (GC) có chức năng gì?
A. Tự động biên dịch mã nguồn thành mã máy.
B. Quản lý bộ nhớ bằng cách tự động giải phóng các đối tượng không còn được tham chiếu (unreferenced objects).
C. Xử lý các ngoại lệ (exceptions) trong quá trình chạy ứng dụng.
D. Tối ưu hóa hiệu suất của các thuật toán.
191. Khái niệm ‘Dependency Injection Container’ (hoặc DI Container/IoC Container) trong .NET có vai trò gì?
A. Quản lý các tệp cấu hình của ứng dụng.
B. Tự động hóa quá trình tạo và quản lý các đối tượng (services) và cung cấp chúng (inject) vào các lớp khác theo yêu cầu, dựa trên các đăng ký đã định nghĩa.
C. Xử lý các yêu cầu HTTP đến.
D. Tạo các tệp thực thi (executables).
192. Trong C#, `struct` và `class` có điểm khác biệt cơ bản nào về cách lưu trữ và truyền tham chiếu?
A. `struct` là kiểu tham chiếu (reference type), còn `class` là kiểu giá trị (value type).
B. `struct` là kiểu giá trị (value type), còn `class` là kiểu tham chiếu (reference type).
C. Cả `struct` và `class` đều là kiểu giá trị.
D. Cả `struct` và `class` đều là kiểu tham chiếu.
193. ASP.NET Core Identity được sử dụng để làm gì?
A. Quản lý các tệp tĩnh (static files) của ứng dụng.
B. Cung cấp một hệ thống quản lý người dùng, xác thực (authentication) và ủy quyền (authorization) cho ứng dụng web.
C. Xây dựng các dịch vụ microservices.
D. Xử lý các yêu cầu WebSocket.
194. Trong ASP.NET Core MVC, vai trò của Controller là gì?
A. Hiển thị dữ liệu trực tiếp tới người dùng.
B. Lưu trữ và truy xuất dữ liệu từ cơ sở dữ liệu.
C. Xử lý các yêu cầu HTTP đến, tương tác với Model để lấy dữ liệu và chọn View để hiển thị kết quả cho người dùng.
D. Định nghĩa cấu trúc của cơ sở dữ liệu.
195. Trong C#, `polymorphism` (tính đa hình) cho phép?
A. Một lớp chỉ có thể có một dạng duy nhất.
B. Các đối tượng của các lớp khác nhau có thể được xử lý như các đối tượng của một lớp cơ sở chung, cho phép thực thi các phương thức khác nhau tùy thuộc vào kiểu đối tượng thực tế.
C. Chỉ cho phép ghi đè phương thức từ lớp cha sang lớp con.
D. Ngăn chặn việc sử dụng kế thừa.
196. Trong .NET, `delegate` là gì và được sử dụng khi nào?
A. Một cách để định nghĩa các biến toàn cục.
B. Một kiểu dữ liệu tham chiếu đến các phương thức, cho phép truyền phương thức như một đối số hoặc gán phương thức cho biến, thường dùng cho callback hoặc event handling.
C. Một cơ chế để tạo các lớp trừu tượng.
D. Một công cụ để quản lý bộ nhớ.
197. Khái niệm ‘Razor Syntax’ trong ASP.NET Core dùng để làm gì?
A. Để định nghĩa các quy tắc xác thực dữ liệu.
B. Để nhúng mã C# vào các tệp HTML (View) nhằm tạo ra nội dung động.
C. Để cấu hình các dịch vụ Dependency Injection.
D. Để thiết kế cấu trúc cơ sở dữ liệu.
198. Trong ASP.NET Core, làm thế nào để bạn định tuyến (route) các yêu cầu đến các action cụ thể trong Controller?
A. Bằng cách đặt các tệp view vào các thư mục cụ thể.
B. Sử dụng các thuộc tính (attributes) như [HttpGet], [HttpPost] trên các phương thức action hoặc cấu hình routing trong tệp Startup.
C. Chỉ định trong tệp appsettings.json.
D. Sử dụng các thẻ HTML đặc biệt trong tệp View.
199. Trong ASP.NET Core, khái niệm ‘ViewBag’ và ‘ViewData’ dùng để làm gì?
A. Để lưu trữ các tệp cấu hình.
B. Để truyền dữ liệu từ Controller đến View một cách tạm thời.
C. Để xác định các quy tắc routing.
D. Để quản lý trạng thái của người dùng.
200. Trong .NET, khi nào bạn sử dụng `IDisposable` interface và phương thức `Dispose()`?
A. Để định nghĩa các phương thức bất đồng bộ.
B. Để quản lý các tài nguyên không được quản lý (unmanaged resources) như file handles, database connections, network sockets, đảm bảo chúng được giải phóng đúng cách.
C. Để tạo các phương thức kế thừa.
D. Để xử lý các lỗi biên dịch.