Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình .net bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: 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ã byte trung gian và cung cấp các dịch vụ runtime.
- C. Cung cấp các thư viện lớp cơ sở cho phát triển ứng dụng web.
- D. Đảm bảo tính tương thích giữa các phiên bản .NET Framework khác nhau.
Câu 2: Cho đoạn mã C# sau: `int x = 10; object y = x; x = 20;`. Hỏi giá trị của `y` sau khi thực hiện đoạn mã trên là bao nhiêu?
- A. 10
- B. 20
- C. Tham chiếu null
- D. Gây ra lỗi biên dịch
Câu 3: Phương thức mở rộng (Extension method) trong C# được sử dụng để làm gì?
- A. Thay thế các phương thức ảo trong lớp cơ sở.
- B. Thêm các thuộc tính mới vào một lớp đã tồn tại.
- C. Thêm phương thức mới vào một lớp đã tồn tại mà không cần sửa đổi lớp đó.
- D. Tạo ra một lớp con (derived class) từ một lớp cha (base class).
Câu 4: Trong lập trình hướng đối tượng với C#, "tính đa hình" (Polymorphism) thể hiện rõ nhất qua cơ chế nào?
- A. Tính đóng gói (Encapsulation)
- B. Phương thức ảo (Virtual methods) và ghi đè (Override)
- C. Tính kế thừa (Inheritance) đơn
- D. Nạp chồng phương thức (Method overloading)
Câu 5: ADO.NET được sử dụng trong .NET Framework cho mục đích gì?
- A. Xây dựng giao diện người dùng đồ họa (GUI).
- B. Phát triển ứng dụng web ASP.NET.
- C. Quản lý bộ nhớ và thu gom rác (garbage collection).
- D. Truy cập và thao tác với dữ liệu từ các hệ quản trị cơ sở dữ liệu.
Câu 6: LINQ (Language Integrated Query) trong C# cung cấp khả năng truy vấn dữ liệu từ những nguồn nào?
- A. Chỉ cơ sở dữ liệu quan hệ (SQL Server, Oracle).
- B. Chỉ các tập tin XML.
- C. Chỉ các đối tượng trong bộ nhớ (collections).
- D. Nhiều nguồn dữ liệu khác nhau như cơ sở dữ liệu, XML, collections, và các nguồn dữ liệu tùy chỉnh.
Câu 7: Trong ASP.NET Core, Middleware (lớp trung gian) hoạt động như thế nào trong pipeline xử lý request?
- A. Mỗi middleware xử lý request theo thứ tự được cấu hình, có thể can thiệp hoặc chuyển request đến middleware tiếp theo.
- B. Middleware chỉ được thực thi sau khi request đã được xử lý hoàn toàn bởi controller.
- C. Middleware hoạt động độc lập và không tương tác với nhau.
- D. Middleware chỉ được sử dụng để xử lý lỗi và exception trong ứng dụng.
Câu 8: Dependency Injection (DI) container trong .NET Core giúp giải quyết vấn đề gì?
- A. Tăng hiệu suất thực thi của ứng dụng.
- B. Đơn giản hóa việc quản lý bộ nhớ.
- C. Giảm sự phụ thuộc giữa các thành phần (loose coupling) và dễ dàng kiểm thử (testability).
- D. Cải thiện bảo mật cho ứng dụng web.
Câu 9: Cho đoạn code C# sau: `async Task MyMethodAsync() { await Task.Delay(100); return 5; }`. Từ khóa `async` và `await` được sử dụng để làm gì?
- A. Tạo ra một thread mới để thực thi phương thức song song.
- B. Thực hiện các hoạt động I/O không chặn luồng chính (non-blocking I/O) để cải thiện responsiveness.
- C. Đảm bảo phương thức luôn được thực thi đồng bộ (synchronously).
- D. Quản lý bộ nhớ và thu gom rác cho các tác vụ.
Câu 10: Entity Framework Core (EF Core) là một ORM (Object-Relational Mapper) trong .NET Core. Chức năng chính của EF Core là gì?
- A. Ánh xạ giữa các đối tượng C# và bảng trong cơ sở dữ liệu, giúp thao tác dữ liệu dễ dàng hơn.
- B. Tối ưu hóa hiệu suất truy vấn cơ sở dữ liệu.
- C. Xây dựng giao diện người dùng cho ứng dụng desktop.
- D. Quản lý phiên làm việc (session) trong ứng dụng web.
Câu 11: Garbage Collection (GC) trong .NET CLR hoạt động như thế nào?
- A. GC chỉ hoạt động khi bộ nhớ vật lý của máy tính đầy.
- B. Lập trình viên phải chủ động gọi GC để giải phóng bộ nhớ.
- C. GC tự động giải phóng bộ nhớ không còn được tham chiếu bởi ứng dụng.
- D. GC chỉ giải phóng bộ nhớ khi ứng dụng kết thúc.
Câu 12: Delegates và Events trong C# được sử dụng chủ yếu cho mục đích gì?
- A. Quản lý đa luồng và lập trình song song.
- B. Định nghĩa cấu trúc dữ liệu phức tạp.
- C. Thực hiện truy vấn dữ liệu LINQ.
- D. Xây dựng cơ chế xử lý sự kiện và callback (gọi lại hàm) trong ứng dụng.
Câu 13: Reflections trong .NET cho phép ứng dụng làm gì?
- A. Tăng hiệu suất biên dịch mã nguồn.
- B. Kiểm tra metadata của assembly và các kiểu dữ liệu (types) tại runtime.
- C. Tự động sửa lỗi mã nguồn trong quá trình chạy.
- D. Tạo ra mã máy tối ưu cho từng nền tảng khác nhau.
Câu 14: Sự khác biệt chính giữa `interface` và `abstract class` trong C# là gì?
- A. Interface có thể chứa code thực thi, abstract class thì không.
- B. Abstract class hỗ trợ đa kế thừa, interface thì không.
- C. Lớp có thể kế thừa từ nhiều interface nhưng chỉ có thể kế thừa từ một abstract class.
- D. Interface được sử dụng cho kiểu giá trị, abstract class cho kiểu tham chiếu.
Câu 15: Generic trong C# mang lại lợi ích gì chính cho việc phát triển phần mềm?
- A. Tăng tính tái sử dụng của code và đảm bảo an toàn kiểu (type safety) tại thời điểm biên dịch.
- B. Giảm kích thước file thực thi của ứng dụng.
- C. Tăng tốc độ thực thi của chương trình.
- D. Đơn giản hóa việc quản lý bộ nhớ.
Câu 16: Trong ngữ cảnh của .NET, thuật ngữ "Managed Code" (Mã quản lý) dùng để chỉ loại mã nào?
- A. Mã được viết bằng ngôn ngữ C++.
- B. Mã được thực thi bởi Common Language Runtime (CLR) và chịu sự quản lý của CLR.
- C. Mã chỉ chạy trên hệ điều hành Windows.
- D. Mã được biên dịch trực tiếp thành mã máy.
Câu 17: Cho đoạn code C#: `var result = 5 +
- A. int, 15
- B. int, 510
- C. string,
- D. Lỗi biên dịch do không tương thích kiểu dữ liệu
Câu 18: Trong C#, từ khóa `sealed` được sử dụng để làm gì khi định nghĩa một lớp?
- A. Đảm bảo lớp chỉ có thể được truy cập từ assembly hiện tại.
- B. Ngăn chặn việc tạo instance (đối tượng) từ lớp.
- C. Khai báo một lớp trừu tượng (abstract class).
- D. Ngăn chặn lớp khác kế thừa từ lớp này.
Câu 19: Sự khác biệt chính giữa `struct` và `class` trong C# là gì về mặt bản chất?
- A. `struct` hỗ trợ kế thừa, `class` thì không.
- B. `struct` là kiểu giá trị (value type), `class` là kiểu tham chiếu (reference type).
- C. `class` được lưu trữ trên stack, `struct` được lưu trữ trên heap.
- D. `struct` có thể có phương thức ảo, `class` thì không.
Câu 20: Cho đoạn code C#: `string str1 =
- A. true
- B. Có thể true hoặc false tùy thuộc vào cài đặt.
- C. false
- D. Lỗi biên dịch do so sánh không hợp lệ.
Câu 21: Trong C#, từ khóa `using` có thể được sử dụng cho những mục đích nào?
- A. Khai báo namespace để sử dụng các kiểu dữ liệu trong namespace đó.
- B. Đảm bảo giải phóng tài nguyên (resources) một cách tự động khi ra khỏi khối `using`.
- C. Định nghĩa alias (bí danh) cho namespace hoặc type.
- D. Cả 3 mục đích trên.
Câu 22: Phương thức `Dispose()` trong interface `IDisposable` được sử dụng để làm gì?
- A. Khởi tạo đối tượng và cấp phát bộ nhớ.
- B. Giải phóng các tài nguyên không được quản lý bởi CLR (unmanaged resources) như file handles, network connections.
- C. Thu gom rác (garbage collection) cho đối tượng.
- D. Kiểm tra xem đối tượng còn được sử dụng hay không.
Câu 23: Trong ASP.NET Web API, Attribute Routing (định tuyến thuộc tính) cung cấp lợi ích gì so với Convention-based Routing (định tuyến theo quy ước)?
- A. Attribute Routing nhanh hơn Convention-based Routing về hiệu suất.
- B. Convention-based Routing cho phép định nghĩa route phức tạp hơn.
- C. Attribute Routing cho phép định nghĩa route trực tiếp trên action method, giúp code dễ đọc và bảo trì hơn.
- D. Convention-based Routing tự động tạo ra tài liệu API (API documentation).
Câu 24: Cho đoạn code C#: `int? nullableInt = null; int regularInt = nullableInt;`. Điều gì sẽ xảy ra khi chạy đoạn code này?
- A. `regularInt` sẽ có giá trị 0.
- B. `regularInt` sẽ có giá trị null.
- C. Đoạn code biên dịch thành công và chạy mà không có lỗi.
- D. Lỗi runtime (InvalidOperationException) sẽ xảy ra do cố gắng gán null cho kiểu int không nullable.
Câu 25: Kỹ thuật Caching (bộ nhớ đệm) trong .NET ứng dụng web được sử dụng để làm gì?
- A. Tăng hiệu suất ứng dụng bằng cách lưu trữ tạm thời dữ liệu thường xuyên được truy cập để giảm tải cho server và cơ sở dữ liệu.
- B. Tăng cường bảo mật cho ứng dụng web.
- C. Đơn giản hóa việc quản lý phiên làm việc (session).
- D. Cải thiện khả năng mở rộng (scalability) của ứng dụng.
Câu 26: Trong mô hình MVC (Model-View-Controller) của ASP.NET MVC, Controller có vai trò chính là gì?
- A. Hiển thị dữ liệu cho người dùng.
- B. Xử lý request từ người dùng, tương tác với Model để lấy dữ liệu, và chọn View để trả về response.
- C. Định nghĩa cấu trúc dữ liệu và logic nghiệp vụ của ứng dụng.
- D. Quản lý routing và URL của ứng dụng.
Câu 27: Cho đoạn code C#: `List numbers = new List() { 1, 2, 3, 4, 5 }; var evenNumbers = numbers.Where(n => n % 2 == 0);`. `evenNumbers` sẽ chứa bao nhiêu phần tử?
Câu 28: Trong C#, thuộc tính (Property) khác gì so với trường (Field) của một lớp?
- A. Field có thể chứa logic truy cập (get/set), Property thì không.
- B. Property được lưu trữ trên stack, Field được lưu trữ trên heap.
- C. Field luôn là public, Property luôn là private.
- D. Property cung cấp cơ chế kiểm soát truy cập và logic bổ sung khi đọc/ghi giá trị, Field chỉ là biến lưu trữ dữ liệu.
Câu 29: Cross-Origin Resource Sharing (CORS) là cơ chế bảo mật quan trọng trong ứng dụng web. CORS giải quyết vấn đề gì?
- A. Ngăn chặn tấn công SQL Injection.
- B. Cho phép hoặc từ chối các request HTTP từ domain khác (cross-origin) để bảo vệ ứng dụng khỏi các tấn công CSRF và truy cập trái phép.
- C. Mã hóa dữ liệu truyền trên mạng (HTTPS).
- D. Xác thực người dùng và quản lý phiên làm việc.
Câu 30: Cho đoạn code C#: `string name =
- A.
- B.
- C. Lỗi biên dịch do cú pháp nội suy chuỗi không đúng.
- D. Null hoặc chuỗi rỗng.