Đề 6 – Bài tập, đề thi trắc nghiệm online Lập trình .NET

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Lập trình .NET

Đề 6 - Bài tập, đề thi trắc nghiệm online Lập trình .NET

1. Phương thức mở rộng (extension method) trong C# cho phép bạn làm gì?

A. Thêm phương thức mới vào một lớp đã biên dịch mà không cần kế thừa hoặc sửa đổi lớp gốc.
B. Thay thế các phương thức hiện có của một lớp bằng cách 'ghi đè' chúng từ bên ngoài.
C. Tạo ra các lớp con (derived classes) một cách linh hoạt và tự động.
D. Thay đổi hành vi của các toán tử (operators) cho các kiểu dữ liệu khác nhau.

2. Đâu là mục đích chính của việc sử dụng 'async void′ method trong C#?

A. Để tạo ra các phương thức bất đồng bộ có thể trả về giá trị kiểu void.
B. Để xử lý các sự kiện (events) bất đồng bộ trong giao diện người dùng (UI) (ví dụ: event handlers trong WinForms, WPF).
C. Để cải thiện hiệu suất của các phương thức đồng bộ bằng cách chuyển chúng thành bất đồng bộ.
D. Để tạo ra các phương thức bất đồng bộ không cần phải await.

3. Trong Entity Framework Core, 'migrations′ được sử dụng để làm gì?

A. Để tạo bản sao lưu (backup) của cơ sở dữ liệu trước khi thực hiện thay đổi.
B. Để tự động tạo và cập nhật lược đồ (schema) cơ sở dữ liệu theo các thay đổi trong mô hình (model) ứng dụng.
C. Để tối ưu hóa hiệu suất truy vấn dữ liệu từ cơ sở dữ liệu.
D. Để mã hóa dữ liệu nhạy cảm trong cơ sở dữ liệu.

4. Trong ASP.NET Core, Middleware pipeline là gì?

A. Một cơ chế để quản lý và xác thực người dùng trong ứng dụng web.
B. Một chuỗi các thành phần (components) xử lý request HTTP đến và response HTTP đi.
C. Một công cụ để tạo và quản lý giao diện người dùng (UI) của ứng dụng web.
D. Một hệ thống để quản lý lỗi và exception trong ứng dụng web.

5. Sự khác biệt giữa 'throw′ và 'throw ex′ trong xử lý ngoại lệ (exception handling) trong C# là gì, khi 'ex′ là một biến exception đã bắt được?

A. 'throw′ ném lại exception ban đầu, giữ nguyên stack trace gốc, còn 'throw ex′ tạo ra một exception mới với stack trace bắt đầu từ điểm 'throw ex′.
B. 'throw ex′ ném lại exception ban đầu, giữ nguyên stack trace gốc, còn 'throw′ tạo ra một exception mới với stack trace bắt đầu từ điểm 'throw′.
C. 'throw′ và 'throw ex′ đều có chức năng giống nhau, không có sự khác biệt.
D. 'throw′ chỉ dùng để ném các exception tùy chỉnh (custom exceptions), còn 'throw ex′ chỉ dùng để ném lại exception đã bắt được.

6. Reflection trong .NET cho phép bạn làm gì?

A. Để mã hóa và giải mã dữ liệu.
B. Để kiểm tra metadata và thông tin kiểu (type information) của assembly, module, class, method, v.v. tại runtime.
C. Để tối ưu hóa hiệu suất ứng dụng bằng cách biên dịch code 'just-in-time′.
D. Để quản lý bộ nhớ và garbage collection.

7. Trong lập trình bất đồng bộ (asynchronous programming) với `async` và `await` trong C#, điều gì xảy ra khi một phương thức `async` gặp từ khóa `await`?

A. Luồng hiện tại bị chặn (blocked) cho đến khi tác vụ (task) được `await` hoàn thành.
B. Luồng hiện tại giải phóng để thực hiện công việc khác, và phương thức sẽ tiếp tục thực thi sau khi tác vụ được `await` hoàn thành.
C. Một luồng mới được tạo ra để thực hiện tác vụ được `await`, trong khi luồng hiện tại tiếp tục thực thi.
D. Chương trình sẽ bị treo (crash) vì `await` chỉ được dùng trong các phương thức đồng bộ.

8. Đâu là sự khác biệt chính giữa `IEnumerable` và `IQueryable` trong .NET?

A. `IEnumerable` thực hiện truy vấn dữ liệu tại máy chủ CSDL, còn `IQueryable` thực hiện truy vấn dữ liệu tại máy khách.
B. `IEnumerable` thực hiện truy vấn dữ liệu trong bộ nhớ (client-side), còn `IQueryable` cho phép truy vấn được thực thi ở nguồn dữ liệu (server-side).
C. `IEnumerable` chỉ dùng cho LINQ to Objects, còn `IQueryable` chỉ dùng cho LINQ to SQL.
D. `IEnumerable` hỗ trợ lazy loading, còn `IQueryable` thì không.

9. Attribute trong C# được sử dụng để làm gì?

A. Để định nghĩa các biến private chỉ có thể truy cập trong phạm vi lớp.
B. Để cung cấp metadata (dữ liệu về dữ liệu) cho các thành phần code như lớp, phương thức, thuộc tính,… Metadata này có thể được đọc bởi reflection hoặc các công cụ khác.
C. Để tối ưu hóa hiệu suất thực thi của chương trình bằng cách cache dữ liệu.
D. Để tạo ra các giao diện người dùng (UI) tùy chỉnh.

10. Trong WPF (Windows Presentation Foundation), XAML được sử dụng để làm gì?

A. Để viết logic nghiệp vụ (business logic) của ứng dụng.
B. Để định nghĩa giao diện người dùng (UI) của ứng dụng, bao gồm cấu trúc, layout và style.
C. Để truy cập cơ sở dữ liệu và thực hiện các thao tác CRUD.
D. Để quản lý phiên (session) và trạng thái (state) của ứng dụng.

11. Dependency Injection (DI) là một nguyên tắc thiết kế quan trọng trong .NET. Lợi ích chính của việc sử dụng DI là gì?

A. Giảm độ phức tạp của mã nguồn bằng cách loại bỏ hoàn toàn sự phụ thuộc giữa các thành phần.
B. Tăng cường tính bảo mật của ứng dụng bằng cách ẩn các phụ thuộc bên trong container.
C. Tăng tính kiểm thử (testability), khả năng bảo trì (maintainability) và giảm sự liên kết (decoupling) giữa các thành phần.
D. Cải thiện hiệu suất ứng dụng bằng cách tải các phụ thuộc một cách lười biếng (lazy loading).

12. Finalizer (Destructor) trong C# được sử dụng để làm gì?

A. Để khởi tạo các biến thành viên của một lớp khi đối tượng được tạo ra.
B. Để giải phóng tài nguyên không được quản lý (unmanaged resources) (ví dụ: file handles, network connections) khi đối tượng bị garbage collected.
C. Để kiểm soát quyền truy cập (access modifiers) vào các thành viên của lớp.
D. Để thực hiện các thao tác trước khi ứng dụng kết thúc.

13. Event trong C# là gì và chúng được sử dụng để làm gì?

A. Event là một loại biến đặc biệt dùng để lưu trữ dữ liệu và chia sẻ giữa các lớp.
B. Event là một cơ chế cho phép một lớp hoặc đối tượng thông báo cho các lớp hoặc đối tượng khác khi có một sự kiện nào đó xảy ra.
C. Event là một loại phương thức đặc biệt được gọi tự động khi một đối tượng được tạo ra.
D. Event là một cách để định nghĩa giao diện người dùng (UI) trong ứng dụng.

14. Boxing và Unboxing có thể gây ra vấn đề gì về hiệu suất trong .NET?

A. Không có vấn đề hiệu suất, boxing và unboxing là các thao tác rất nhanh.
B. Boxing và unboxing là các thao tác tốn kém về hiệu suất vì chúng liên quan đến việc cấp phát bộ nhớ heap (heap allocation) và chuyển đổi kiểu.
C. Boxing và unboxing chỉ gây ra vấn đề hiệu suất trong các ứng dụng web ASP.NET.
D. Boxing và unboxing chỉ ảnh hưởng đến hiệu suất khi làm việc với các kiểu dữ liệu lớn.

15. Sự khác biệt giữa 'struct′ và 'class′ trong C# là gì?

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. Struct hỗ trợ kế thừa (inheritance), còn class thì không.
D. Class được lưu trữ trên stack, còn struct được lưu trữ trên heap.

16. LINQ (Language Integrated Query) trong .NET là gì?

A. Một thư viện để xây dựng giao diện người dùng (UI) đồ họa.
B. Một tập hợp các extension method và provider cho phép truy vấn dữ liệu từ nhiều nguồn khác nhau (collections, databases, XML, v.v.) bằng cú pháp thống nhất trong C# và VB.NET.
C. Một công cụ để quản lý và triển khai (deploy) ứng dụng .NET.
D. Một framework để phát triển ứng dụng web phía server.

17. Sự khác biệt chính giữa 'boxing′ và 'unboxing′ trong C# là gì?

A. Boxing chuyển đổi kiểu tham chiếu sang kiểu giá trị, còn unboxing chuyển đổi ngược lại.
B. Boxing chuyển đổi kiểu giá trị sang kiểu tham chiếu, còn unboxing chuyển đổi ngược lại.
C. Boxing và unboxing đều là quá trình chuyển đổi giữa các kiểu giá trị khác nhau.
D. Boxing và unboxing đều là quá trình chuyển đổi giữa các kiểu tham chiếu khác nhau.

18. Đâu là cách tốt nhất để giải phóng tài nguyên không được quản lý (unmanaged resources) trong C#?

A. Sử dụng Finalizer (Destructor) cho mọi lớp sử dụng tài nguyên không được quản lý.
B. Sử dụng Garbage Collection để tự động giải phóng tài nguyên không được quản lý.
C. Triển khai interface `IDisposable` và sử dụng khối `using` để đảm bảo tài nguyên được giải phóng một cách xác định.
D. Không cần giải phóng tài nguyên không được quản lý, hệ thống sẽ tự động quản lý chúng.

19. Đâu là phạm vi hoạt động (scope) của biến được khai báo bằng từ khóa 'var′ trong C#?

A. Biến 'var′ có phạm vi toàn cục (global scope) trong ứng dụng.
B. Phạm vi của biến 'var′ được suy luận dựa trên vị trí khai báo và thường là phạm vi khối (block scope) hoặc phạm vi phương thức (method scope), tương tự như các kiểu dữ liệu tường minh.
C. Biến 'var′ chỉ có phạm vi trong một dòng code duy nhất.
D. Biến 'var′ không có phạm vi cụ thể, phạm vi của nó phụ thuộc vào kiểu dữ liệu được suy luận.

20. Interface trong C# có thể chứa những thành phần nào?

A. Chỉ chứa các phương thức abstract và thuộc tính abstract.
B. Chứa các phương thức abstract, thuộc tính abstract, sự kiện (events) và indexers, nhưng không chứa field và constructor.
C. Chứa tất cả các thành phần như lớp (class), bao gồm cả field và constructor.
D. Chỉ chứa các phương thức virtual và thuộc tính virtual.

21. Sự khác biệt giữa 'StringBuilder′ và 'string′ trong C# khi làm việc với chuỗi là gì?

A. 'StringBuilder′ là kiểu bất biến (immutable), còn 'string′ là kiểu khả biến (mutable).
B. 'string′ là kiểu bất biến (immutable), còn 'StringBuilder′ là kiểu khả biến (mutable).
C. 'string′ nhanh hơn 'StringBuilder′ khi thực hiện các thao tác nối chuỗi (string concatenation).
D. 'StringBuilder′ chỉ có thể được sử dụng trong môi trường đa luồng (multithreading), còn 'string′ thì không.

22. Sự khác biệt giữa 'Checked Exception′ và 'Unchecked Exception′ trong C# là gì?

A. C# có 'Checked Exception′ và 'Unchecked Exception′ giống như Java.
B. C# chỉ có 'Unchecked Exception′ (ngoại lệ không kiểm soát). Tất cả các exception trong C# đều là 'Unchecked Exception′, nghĩa là trình biên dịch không bắt buộc phải xử lý chúng.
C. C# chỉ có 'Checked Exception′ (ngoại lệ kiểm soát). Trình biên dịch bắt buộc phải xử lý tất cả các exception.
D. 'Checked Exception′ là các exception do người dùng định nghĩa, còn 'Unchecked Exception′ là các exception hệ thống.

23. Generics trong C# giúp giải quyết vấn đề gì?

A. Vấn đề bảo mật của ứng dụng bằng cách ẩn thông tin kiểu.
B. Vấn đề hiệu suất của ứng dụng bằng cách tối ưu hóa bộ nhớ.
C. Vấn đề type safety (an toàn kiểu) và code reuse (tái sử dụng code) bằng cách cho phép định nghĩa các kiểu dữ liệu và phương thức hoạt động với nhiều kiểu dữ liệu khác nhau mà không mất type checking tại compile time.
D. Vấn đề quản lý bộ nhớ bằng cách tự động giải phóng bộ nhớ không sử dụng.

24. Trong .NET, kiểu dữ liệu `string` là kiểu tham chiếu (reference type). Phát biểu nào sau đây mô tả đúng nhất về cách `string` hoạt động khi gán và so sánh?

A. Khi gán một biến `string` cho biến khác, nội dung chuỗi được sao chép hoàn toàn, và so sánh bằng `==` sẽ so sánh tham chiếu.
B. Khi gán một biến `string` cho biến khác, chỉ tham chiếu được sao chép. Tuy nhiên, so sánh bằng `==` sẽ so sánh nội dung chuỗi.
C. Kiểu `string` là kiểu giá trị (value type) trong .NET, do đó gán và so sánh hoạt động như các kiểu số nguyên.
D. Kiểu `string` là bất biến (immutable). Khi gán, tham chiếu được sao chép, và so sánh `==` so sánh tham chiếu, nhưng nội dung không thể thay đổi sau khi tạo.

25. 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 (machine code).
B. Để quản lý các thư viện (libraries) và package phụ thuộc (dependencies) trong dự án .NET.
C. Để triển khai (deploy) ứng dụng .NET lên server.
D. Để gỡ lỗi (debug) ứng dụng .NET.

26. Đâu là sự khác biệt chính giữa 'virtual method′ và 'abstract method′ trong C#?

A. Virtual method không có phần thân (body) và phải được ghi đè (override) trong lớp con, còn abstract method có phần thân và có thể được ghi đè hoặc không.
B. Abstract method không có phần thân và phải được ghi đè trong lớp con, còn virtual method có phần thân và có thể được ghi đè hoặc không.
C. Virtual method chỉ có thể được sử dụng trong interface, còn abstract method chỉ có thể được sử dụng trong lớp abstract.
D. Abstract method có thể được gọi trực tiếp, còn virtual method thì không.

27. Garbage Collection (GC) trong .NET CLR hoạt động như thế nào?

A. GC là một quá trình thủ công (manual) do lập trình viên chủ động gọi để giải phóng bộ nhớ.
B. GC là một tiến trình chạy ngầm (background process) tự động giải phóng bộ nhớ không còn được tham chiếu bởi ứng dụng.
C. GC chỉ hoạt động khi bộ nhớ vật lý của máy tính đạt đến giới hạn nhất định.
D. GC không thực sự giải phóng bộ nhớ, mà chỉ đánh dấu bộ nhớ là 'có thể sử dụng lại′.

28. Delegates trong C# được sử dụng để làm gì?

A. Để tạo ra các biến toàn cục (global variables) có thể truy cập từ mọi nơi trong ứng dụng.
B. Để định nghĩa các lớp trừu tượng (abstract classes) mà các lớp khác có thể kế thừa.
C. Để biểu diễn tham chiếu đến các phương thức, cho phép truyền phương thức như tham số và gọi phương thức một cách gián tiếp.
D. Để quản lý bộ nhớ và giải phóng tài nguyên không còn sử dụng.

29. Đâu là mục đích của từ khóa 'sealed′ trong C# khi áp dụng cho một lớp?

A. Để ngăn không cho lớp đó được khởi tạo (instantiated).
B. Để ngăn không cho lớp đó được kế thừa (inherited) bởi các lớp khác.
C. Để ẩn lớp đó khỏi các assembly khác.
D. Để tối ưu hóa hiệu suất của lớp.

30. Trong ASP.NET Core, Dependency Injection container (DI container) chịu trách nhiệm chính cho việc gì?

A. Quản lý vòng đời (lifecycle) của các đối tượng (services) và cung cấp chúng vào các lớp (controllers, services, v.v.) khi cần.
B. Xác thực người dùng và quản lý quyền truy cập vào ứng dụng web.
C. Routing request HTTP đến các controller và action phù hợp.
D. Quản lý cấu hình (configuration) của ứng dụng web.

1 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

1. Phương thức mở rộng (extension method) trong C# cho phép bạn làm gì?

2 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

2. Đâu là mục đích chính của việc sử dụng `async void′ method trong C#?

3 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

3. Trong Entity Framework Core, `migrations′ được sử dụng để làm gì?

4 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

4. Trong ASP.NET Core, Middleware pipeline là gì?

5 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

5. Sự khác biệt giữa `throw′ và `throw ex′ trong xử lý ngoại lệ (exception handling) trong C# là gì, khi `ex′ là một biến exception đã bắt được?

6 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

6. Reflection trong .NET cho phép bạn làm gì?

7 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

7. Trong lập trình bất đồng bộ (asynchronous programming) với `async` và `await` trong C#, điều gì xảy ra khi một phương thức `async` gặp từ khóa `await`?

8 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

8. Đâu là sự khác biệt chính giữa `IEnumerable` và `IQueryable` trong .NET?

9 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

9. Attribute trong C# được sử dụng để làm gì?

10 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

10. Trong WPF (Windows Presentation Foundation), XAML được sử dụng để làm gì?

11 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

11. Dependency Injection (DI) là một nguyên tắc thiết kế quan trọng trong .NET. Lợi ích chính của việc sử dụng DI là gì?

12 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

12. Finalizer (Destructor) trong C# được sử dụng để làm gì?

13 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

13. Event trong C# là gì và chúng được sử dụng để làm gì?

14 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

14. Boxing và Unboxing có thể gây ra vấn đề gì về hiệu suất trong .NET?

15 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

15. Sự khác biệt giữa `struct′ và `class′ trong C# là gì?

16 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

16. LINQ (Language Integrated Query) trong .NET là gì?

17 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

17. Sự khác biệt chính giữa `boxing′ và `unboxing′ trong C# là gì?

18 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

18. Đâu là cách tốt nhất để giải phóng tài nguyên không được quản lý (unmanaged resources) trong C#?

19 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

19. Đâu là phạm vi hoạt động (scope) của biến được khai báo bằng từ khóa `var′ trong C#?

20 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

20. Interface trong C# có thể chứa những thành phần nào?

21 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

21. Sự khác biệt giữa `StringBuilder′ và `string′ trong C# khi làm việc với chuỗi là gì?

22 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

22. Sự khác biệt giữa `Checked Exception′ và `Unchecked Exception′ trong C# là gì?

23 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

23. Generics trong C# giúp giải quyết vấn đề gì?

24 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

24. Trong .NET, kiểu dữ liệu `string` là kiểu tham chiếu (reference type). Phát biểu nào sau đây mô tả đúng nhất về cách `string` hoạt động khi gán và so sánh?

25 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

25. NuGet Package Manager được sử dụng để làm gì trong .NET development?

26 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

26. Đâu là sự khác biệt chính giữa `virtual method′ và `abstract method′ trong C#?

27 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

27. Garbage Collection (GC) trong .NET CLR hoạt động như thế nào?

28 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

28. Delegates trong C# được sử dụng để làm gì?

29 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

29. Đâu là mục đích của từ khóa `sealed′ trong C# khi áp dụng cho một lớp?

30 / 30

Category: Lập trình .NET

Tags: Bộ đề 7

30. Trong ASP.NET Core, Dependency Injection container (DI container) chịu trách nhiệm chính cho việc gì?