Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình .net - Đề 10 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ì trong quá trình thực thi ứng dụng?
- A. Biên dịch mã nguồn C# thành mã máy
- B. Quản lý kết nối cơ sở dữ liệu cho ứng dụng
- C. Quản lý thực thi mã bytecode, quản lý bộ nhớ và an ninh
- D. Cung cấp các thư viện giao diện người dùng đồ họa (GUI)
Câu 2: Cho đoạn mã C# sau: `int x = 10; object y = x; int z = (int)y;`. Điều gì xảy ra khi dòng code `int z = (int)y;` được thực thi?
- A. Lỗi biên dịch do không thể chuyển đổi object sang int
- B. Biến `z` sẽ nhận giá trị 10
- C. Lỗi runtime do ép kiểu không hợp lệ
- D. Biến `y` sẽ bị xóa khỏi bộ nhớ
Câu 3: Phương thức mở rộng (Extension Method) trong C# được sử dụng để làm gì?
- A. Tăng tốc độ thực thi của chương trình
- B. Thay thế cho việc sử dụng đa hình (polymorphism)
- C. Tạo ra các lớp kế thừa một cách linh hoạt hơn
- D. Thêm phương thức mới vào một kiểu dữ liệu đã có mà không cần thay đổi mã nguồn của kiểu đó
Câu 4: Đâu là sự khác biệt chính giữa `List` và `ArrayList` trong .NET?
- A. `List` là kiểu generic, type-safe, còn `ArrayList` thì không
- B. `ArrayList` nhanh hơn `List` trong hầu hết các thao tác
- C. `List` có thể chứa các phần tử thuộc nhiều kiểu dữ liệu khác nhau, còn `ArrayList` thì không
- D. `ArrayList` được giới thiệu sau `List` và là phiên bản cải tiến
Câu 5: Trong lập trình hướng đối tượng với C#, khái niệm "tính đóng gói" (encapsulation) mang lại lợi ích gì?
- A. Giảm thiểu việc sử dụng bộ nhớ
- B. Tăng tốc độ biên dịch chương trình
- C. Che giấu thông tin và bảo vệ dữ liệu bên trong đối tượng, tăng tínhModule hóa
- D. Cho phép đa kế thừa (multiple inheritance)
Câu 6: Delegates và Events trong C# được sử dụng chủ yếu để giải quyết vấn đề nào?
- A. Quản lý đa luồng (multithreading)
- B. Xử lý sự kiện và tạo cơ chế callback
- C. Truyền dữ liệu giữa các ứng dụng web
- D. Tối ưu hóa hiệu suất truy vấn cơ sở dữ liệu
Câu 7: Cho đoạn code C#: `string str1 =
- A. Stack, vì string là kiểu giá trị
- B. Heap, cùng vị trí với `str1` và `str2`
- C. String pool, để tối ưu hóa bộ nhớ
- D. Heap, ở một vùng nhớ mới khác với `str1` và `str2`
Câu 8: Khi nào nên sử dụng cấu trúc `struct` thay vì `class` trong C#?
- A. Khi cần biểu diễn các kiểu dữ liệu nhỏ, đơn giản, và hiệu suất là quan trọng
- B. Khi cần kế thừa từ các kiểu dữ liệu khác
- C. Khi cần sử dụng đa hình (polymorphism)
- D. Khi cần quản lý bộ nhớ một cách thủ công
Câu 9: LINQ (Language Integrated Query) trong .NET Framework cung cấp lợi ích chính nào?
- A. Tăng cường bảo mật cho ứng dụng
- B. Cải thiện khả năng tương tác với giao diện người dùng
- C. Cung cấp cú pháp truy vấn dữ liệu thống nhất và mạnh mẽ trên nhiều nguồn dữ liệu khác nhau
- D. Giảm kích thước file thực thi của ứng dụng
Câu 10: Trong ASP.NET Core, Middleware pipeline chịu trách nhiệm xử lý điều gì?
- A. Quản lý phiên làm việc của người dùng (Session management)
- B. Xử lý các HTTP request và response đến ứng dụng
- C. Kết nối và truy vấn cơ sở dữ liệu
- D. Render giao diện người dùng (UI) phía server
Câu 11: Dependency Injection (DI) container trong .NET (ví dụ: ASP.NET Core DI) giúp đạt được mục tiêu thiết kế nào?
- A. Tăng hiệu suất ứng dụng bằng cách giảm thời gian khởi tạo đối tượng
- B. Đơn giản hóa việc quản lý bộ nhớ
- C. Tự động tạo tài liệu API cho ứng dụng
- D. Giảm sự phụ thuộc giữa các thành phần, tăng tínhModule hóa và khả năng kiểm thử
Câu 12: Attribute trong C# được sử dụng để làm gì?
- A. Thay thế cho việc sử dụng comment trong code
- B. Định nghĩa các biến toàn cục
- C. Cung cấp metadata (thông tin mô tả) cho các thành phần code như lớp, phương thức, thuộc tính
- D. Tạo ra các ngoại lệ (exceptions) tùy chỉnh
Câu 13: Cho đoạn code C#: `var numbers = new int[]{1, 2, 3, 4, 5}; var evenNumbers = numbers.Where(n => n % 2 == 0);`. `evenNumbers` sẽ chứa gì sau khi đoạn code này thực thi?
- A. `{1, 3, 5}`
- B. `{2, 4}`
- C. `{1, 2, 3, 4, 5}`
- D. Một lỗi runtime sẽ xảy ra
Câu 14: Async và Await trong C# được sử dụng để cải thiện điều gì trong ứng dụng?
- A. Tốc độ xử lý CPU
- B. Mức độ bảo mật của ứng dụng
- C. Khả năng tương thích với các hệ điều hành khác nhau
- D. Khả năng phản hồi của giao diện người dùng và hiệu suất trong các hoạt động I/O-bound
Câu 15: Đâu là mục đích chính của Garbage Collector (GC) trong .NET?
- A. Tối ưu hóa tốc độ truy cập bộ nhớ cache
- B. Phân bổ bộ nhớ cho các đối tượng một cách hiệu quả
- C. Tự động thu hồi bộ nhớ không còn được sử dụng bởi ứng dụng
- D. Ngăn chặn lỗi tràn bộ nhớ stack
Câu 16: Serialization trong .NET được sử dụng để làm gì?
- A. Mã hóa dữ liệu để tăng cường bảo mật
- B. Chuyển đổi đối tượng thành một định dạng có thể lưu trữ hoặc truyền tải qua mạng
- C. Kiểm tra tính toàn vẹn của dữ liệu
- D. Tối ưu hóa hiệu suất truy cập dữ liệu từ ổ cứng
Câu 17: Unit testing có vai trò quan trọng như thế nào trong phát triển phần mềm .NET?
- A. Chỉ cần thiết cho các dự án lớn và phức tạp
- B. Chủ yếu để kiểm tra hiệu suất của ứng dụng
- C. Giúp tạo tài liệu hướng dẫn sử dụng phần mềm
- D. Đảm bảo chất lượng code, phát hiện lỗi sớm và giúp refactor code an toàn hơn
Câu 18: Cho đoạn code C#: `interface ICalculator { int Add(int a, int b); } class SimpleCalculator : ICalculator { public int Add(int a, int b) { return a + b; } }`. Đoạn code này minh họa khái niệm OOP nào?
- A. Đóng gói (Encapsulation)
- B. Kế thừa (Inheritance)
- C. Trừu tượng (Abstraction) và Đa hình (Polymorphism)
- D. Thành phần hóa (Composition)
Câu 19: Regex (Regular Expression) trong .NET được sử dụng chủ yếu để làm gì?
- A. Tạo giao diện người dùng linh hoạt
- B. Tìm kiếm, so khớp và thao tác với chuỗi dựa trên mẫu
- C. Quản lý bộ nhớ cho ứng dụng
- D. Tối ưu hóa truy vấn cơ sở dữ liệu
Câu 20: Trong Entity Framework Core (EF Core), khái niệm "DbContext" đóng vai trò gì?
- A. Đại diện cho một session làm việc với cơ sở dữ liệu, quản lý kết nối và truy vấn
- B. Định nghĩa cấu trúc bảng và quan hệ trong cơ sở dữ liệu
- C. Thực hiện migration cơ sở dữ liệu
- D. Tạo ra các API Web cho ứng dụng
Câu 21: Cho đoạn code C#: `string name = null; int length = name?.Length ?? 0;`. Giá trị của `length` sẽ là bao nhiêu sau khi thực thi?
- A. Lỗi NullReferenceException
- B. Giá trị ngẫu nhiên
- C. 0
- D. 4 (độ dài chuỗi
Câu 22: Đâu là sự khác biệt chính giữa `IEnumerable` và `IQueryable` trong LINQ?
- A. `IQueryable` nhanh hơn `IEnumerable` trong mọi trường hợp
- B. `IQueryable` dùng cho truy vấn database (server-side), `IEnumerable` dùng cho truy vấn in-memory collections (client-side)
- C. `IEnumerable` hỗ trợ lazy loading, còn `IQueryable` thì không
- D. `IQueryable` có thể được sử dụng trong môi trường đa luồng, còn `IEnumerable` thì không
Câu 23: Cho đoạn code C#: `Action greet = name => { Console.WriteLine(
- A. Lambda expression và Delegate
- B. Generics và Collections
- C. Reflection và Attributes
- D. Exception Handling và Debugging
Câu 24: Trong mô hình MVC (Model-View-Controller) của ASP.NET Core, Controller chịu trách nhiệm chính cho điều gì?
- A. Hiển thị dữ liệu cho người dùng
- B. Lưu trữ và quản lý dữ liệu của ứng dụng
- C. Xử lý request từ người dùng, tương tác với Model và chọn View
- D. Xác thực và phân quyền người dùng
Câu 25: Kỹ thuật Caching trong .NET được sử dụng để cải thiện điều gì?
- A. Bảo mật dữ liệu
- B. Hiệu suất ứng dụng bằng cách giảm thời gian truy cập dữ liệu lặp lại
- C. Khả năng mở rộng của ứng dụng
- D. Tính dễ bảo trì của code
Câu 26: Cho đoạn code C#: `try { // Code có thể gây ra exception } catch (Exception ex) { // Xử lý exception } finally { // Code luôn được thực thi }`. Khối `finally` được thực thi khi nào?
- A. Chỉ khi có exception xảy ra trong khối `try`
- B. Chỉ khi không có exception xảy ra trong khối `try`
- C. Chỉ khi exception được xử lý thành công trong khối `catch`
- D. Luôn được thực thi, bất kể có exception hay không
Câu 27: NuGet Package Manager được sử dụng để làm gì trong .NET development?
- A. Biên dịch mã nguồn C# thành mã máy
- B. Gỡ lỗi ứng dụng .NET
- C. Quản lý và cài đặt các thư viện và công cụ bên ngoài cho dự án .NET
- D. Triển khai ứng dụng .NET lên server
Câu 28: Đâu là lợi ích chính của việc sử dụng Interfaces trong C#?
- A. Đạt được tính đa hình (polymorphism), loose coupling và khả năng mở rộng hệ thống
- B. Tăng tốc độ thực thi chương trình
- C. Giảm thiểu sử dụng bộ nhớ
- D. Đơn giản hóa việc quản lý bộ nhớ
Câu 29: Cho đoạn code C#: `int number = 5; Action operation = () => number++;`. Điều gì xảy ra khi `operation()` được gọi nhiều lần?
- A. Lỗi biên dịch vì không thể thay đổi giá trị của `number` trong lambda
- B. Giá trị của `number` sẽ tăng lên mỗi lần gọi `operation()`
- C. Giá trị của `number` luôn là 5, vì lambda tạo ra bản sao của `number`
- D. Chỉ lần gọi `operation()` đầu tiên làm thay đổi `number`
Câu 30: Trong ngữ cảnh của microservices và .NET, Docker container được sử dụng để làm gì?
- A. Tăng tốc độ biên dịch ứng dụng
- B. Quản lý cơ sở dữ liệu cho microservices
- C. Đóng gói ứng dụng và các dependencies để triển khai và quản lý microservices một cách độc lập và nhất quán
- D. Giám sát hiệu suất của microservices