Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình .net - Đề 04 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) đóng vai trò trung tâm. Chức năng chính nào sau đây KHÔNG thuộc về CLR?
- A. Quản lý bộ nhớ và thu gom rác (Garbage Collection)
- B. Cung cấp môi trường thực thi mã an toàn và tin cậy
- C. Hỗ trợ đa ngôn ngữ lập trình (.NET Languages)
- D. Biên dịch mã nguồn C# thành mã máy (Machine Code)
Câu 2: Cho đoạn mã C# sau: `int x = 10; string y =
- A. int, 30
- B. string,
- C. string,
- D. Lỗi biên dịch do không thể cộng `int` và `string`
Câu 3: Phương thức mở rộng (Extension Method) trong C# cho phép bạn làm gì?
- A. Thay đổi hành vi của các phương thức hiện có trong một lớp.
- B. Thêm phương thức mới vào một lớp đã tồn tại mà không cần kế thừa hoặc sửa đổi lớp gốc.
- C. Tạo ra một lớp con (derived class) từ một lớp cha (base class).
- D. Giới hạn khả năng truy cập của các phương thức trong một lớp.
Câu 4: Kiểu dữ liệu `Nullable` (hoặc `T?` trong C#) được sử dụng để giải quyết vấn đề gì trong lập trình?
- A. Cho phép các kiểu dữ liệu giá trị (value types) có thể nhận giá trị `null`.
- B. Tăng hiệu suất truy cập bộ nhớ cho các biến kiểu giá trị.
- C. Đảm bảo tính toàn vẹn dữ liệu khi làm việc với cơ sở dữ liệu.
- D. Thay thế cho kiểu dữ liệu tham chiếu (reference types) trong một số trường hợp.
Câu 5: Trong lập trình hướng đối tượng với C#, "tính đa hình" (Polymorphism) mang lại lợi ích chính nào?
- A. Tăng tốc độ thực thi chương trình.
- B. Giảm thiểu sử dụng bộ nhớ.
- C. Cho phép đối tượng thuộc các lớp khác nhau phản ứng khác nhau với cùng một thông điệp (phương thức).
- D. Đơn giản hóa cấu trúc dữ liệu.
Câu 6: ADO.NET là công nghệ của .NET Framework dùng để làm gì?
- A. Xây dựng giao diện người dùng đồ họa (GUI).
- B. Truy cập và thao tác với dữ liệu từ các nguồn dữ liệu khác nhau (ví dụ: cơ sở dữ liệu).
- C. Phát triển ứng dụng web phía máy chủ.
- D. Quản lý bộ nhớ và thu gom rác.
Câu 7: LINQ (Language Integrated Query) trong C# cung cấp cách tiếp cận thống nhất để truy vấn dữ liệu từ nhiều nguồn khác nhau. Nguồn dữ liệu nào sau đây KHÔNG PHẢI là nguồn dữ liệu mà LINQ có thể truy vấn trực tiếp?
- A. Bộ sưu tập các đối tượng trong bộ nhớ (Collections).
- B. Tài liệu XML.
- C. Cơ sở dữ liệu quan hệ (Relational Databases).
- D. API hệ điều hành (Operating System APIs).
Câu 8: Trong ASP.NET Core, "Middleware" là gì và nó hoạt động như thế nào trong pipeline xử lý request?
- A. Một loại controller đặc biệt để xử lý các request tĩnh.
- B. Một cơ chế bảo mật để xác thực và ủy quyền người dùng.
- C. Các thành phần phần mềm được xếp chồng lên nhau để xử lý các HTTP request và response trong ứng dụng ASP.NET Core.
- D. Một công cụ để tạo và quản lý cơ sở dữ liệu cho ứng dụng ASP.NET Core.
Câu 9: Dependency Injection (DI) là một nguyên tắc quan trọng trong phát triển ứng dụng .NET hiện đại. Lợi ích chính của việc sử dụng DI là gì?
- A. Giảm sự phụ thuộc giữa các thành phần (loose coupling), tăng tính module hóa và khả năng tái sử dụng code.
- B. 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.
- C. Đơn giản hóa quá trình triển khai ứng dụng lên môi trường production.
- D. Tự động tạo ra tài liệu kỹ thuật cho ứng dụng.
Câu 10: Cho đoạn mã C# sau: `List numbers = new List() { 1, 2, 3, 4, 5 }; numbers.RemoveAt(2);`. Sau khi thực thi, danh sách `numbers` sẽ chứa các phần tử nào?
- A. { 1, 2, 4, 5, null }
- B. { 1, 2, 4, 5 }
- C. { 1, 2, 3, 5 }
- D. { 1, 2, 3, 4 }
Câu 11: Trong C#, từ khóa `async` và `await` được sử dụng để làm gì?
- A. Tăng tốc độ thực thi các vòng lặp.
- B. Quản lý bộ nhớ một cách hiệu quả hơn.
- C. Thực hiện đa luồng (multi-threading) để tăng hiệu suất.
- D. Viết mã bất đồng bộ để thực hiện các tác vụ không đồng bộ mà không block thread chính.
Câu 12: Unit Testing là một phần quan trọng của quy trình phát triển phần mềm. Mục đích chính của việc viết Unit Test là gì?
- A. Đo lường hiệu suất của ứng dụng.
- B. Kiểm tra tính bảo mật của ứng dụng.
- C. Xác minh tính đúng đắn của từng đơn vị mã (unit) nhỏ nhất trong ứng dụng.
- D. Tự động tạo tài liệu hướng dẫn sử dụng cho ứng dụng.
Câu 13: Giải thích sự khác biệt chính giữa "Value Type" và "Reference Type" trong C#.
- A. Value Type được lưu trữ trên Heap, Reference Type được lưu trữ trên Stack.
- B. Value Type lưu trữ giá trị trực tiếp, Reference Type lưu trữ tham chiếu đến vị trí bộ nhớ chứa giá trị.
- C. Value Type có thể nhận giá trị null, Reference Type không thể.
- D. Không có sự khác biệt đáng kể giữa Value Type và Reference Type.
Câu 14: Trong C#, "Delegate" là gì và nó thường được sử dụng để làm gì?
- A. Một kiểu dữ liệu đặc biệt để lưu trữ cấu hình ứng dụng.
- B. Một cơ chế để quản lý bộ nhớ và thu gom rác.
- C. Một cách để tạo ra các lớp kế thừa (inheritance).
- D. Một kiểu dữ liệu đại diện cho phương thức, thường được dùng cho callback functions và xử lý sự kiện.
Câu 15: Cho đoạn code C# sau: `string message =
- A.
- B.
- C.
- D. Lỗi runtime vì index vượt quá độ dài chuỗi.
Câu 16: Trong .NET, "Garbage Collection" (GC) là gì và tại sao nó quan trọng?
- A. Quá trình tự động thu hồi bộ nhớ không còn được sử dụng bởi ứng dụng, giúp ngăn chặn rò rỉ bộ nhớ và quản lý bộ nhớ hiệu quả.
- B. Một cơ chế bảo mật để bảo vệ bộ nhớ khỏi truy cập trái phép.
- C. Một kỹ thuật tối ưu hóa hiệu suất bằng cách nén bộ nhớ.
- D. Một công cụ để gỡ lỗi và phân tích bộ nhớ ứng dụng.
Câu 17: Cho đoạn mã C# sau: `int? count = null; int result = count ?? 0;`. Giá trị của biến `result` sau khi thực thi là bao nhiêu?
- A. null
- B. 0
- C. Lỗi runtime.
- D. Giá trị không xác định.
Câu 18: "Interface" trong C# khác với "Abstract Class" như thế nào?
- A. Interface có thể chứa implementation cho các phương thức, Abstract Class thì không.
- B. Abstract Class hỗ trợ đa kế thừa, Interface thì không.
- C. Interface chỉ định nghĩa contract (chứa khai báo phương thức, thuộc tính, sự kiện, chỉ mục), Abstract Class có thể chứa implementation cho một số thành viên.
- D. Không có sự khác biệt về chức năng, chỉ khác nhau về cú pháp.
Câu 19: Attribute trong C# được sử dụng để làm gì?
- A. Tăng hiệu suất thực thi của ứng dụng.
- B. Kiểm soát quyền truy cập vào các thành viên của lớp.
- C. Định nghĩa giao diện người dùng đồ họa.
- D. Cung cấp metadata (dữ liệu về dữ liệu) cho code, có thể được sử dụng bởi runtime, compiler hoặc các công cụ khác.
Câu 20: Cho đoạn mã C# sau: `string[] names = {
- A. Alice
Bob
Charlie
- B. Alice Bob Charlie
- C. Charlie
Bob
Alice
- D. Không in ra gì do lỗi cú pháp.
Câu 21: "Generics" trong C# mang lại lợi ích gì trong lập trình?
- A. Tăng tốc độ biên dịch code.
- B. Tạo ra code type-safe, tái sử dụng code cho nhiều kiểu dữ liệu khác nhau, và tránh boxing/unboxing.
- C. Đơn giản hóa việc quản lý bộ nhớ.
- D. Cải thiện khả năng đọc hiểu code.
Câu 22: Trong ASP.NET Core MVC, "Controller" có vai trò gì?
- A. Định nghĩa giao diện người dùng (UI) của ứng dụng web.
- B. Quản lý dữ liệu và logic nghiệp vụ của ứng dụng.
- C. Xử lý các request từ người dùng, tương tác với model, và chọn view để trả về response.
- D. Cấu hình routing và middleware cho ứng dụng.
Câu 23: Cho đoạn code C#: `int[] numbers = { 5, 2, 8, 1, 9 }; Array.Sort(numbers);`. Mảng `numbers` sẽ chứa các phần tử nào sau khi thực thi?
- A. { 9, 8, 5, 2, 1 }
- B. { 5, 2, 8, 1, 9 }
- C. { 5, 8, 9, 2, 1 }
- D. { 1, 2, 5, 8, 9 }
Câu 24: "Exception Handling" trong .NET là cơ chế để làm gì?
- A. Xử lý các lỗi xảy ra trong quá trình thực thi chương trình (runtime errors) một cách có cấu trúc và kiểm soát.
- B. Ngăn chặn lỗi xảy ra trong quá trình biên dịch.
- C. Tối ưu hóa hiệu suất ứng dụng khi có lỗi.
- D. Tự động sửa lỗi trong code.
Câu 25: Trong C#, từ khóa `sealed` được sử dụng để làm gì khi khai báo một class?
- A. Làm cho lớp trở thành abstract class.
- B. Ngăn không cho lớp khác kế thừa từ lớp này.
- C. Bảo vệ lớp khỏi bị thay đổi trong quá trình runtime.
- D. Tăng hiệu suất truy cập đến các thành viên của lớp.
Câu 26: "Reflection" trong .NET cho phép bạn làm gì?
- A. Biên dịch code C# thành mã máy.
- B. Gỡ lỗi và debug ứng dụng .NET.
- C. Kiểm tra metadata và thông tin về types, assemblies, modules tại runtime.
- D. Tối ưu hóa hiệu suất ứng dụng bằng cách thay đổi code runtime.
Câu 27: Cho đoạn mã C# sau: `var result = 5 > 3 ?
Câu 28: "NuGet" là gì trong hệ sinh thái .NET và nó được sử dụng để làm gì?
- A. Một công cụ để biên dịch và build ứng dụng .NET.
- B. Một package manager cho .NET, cho phép dễ dàng quản lý và sử dụng các thư viện và packages bên ngoài.
- C. Một framework để phát triển ứng dụng web ASP.NET Core.
- D. Một công cụ để kiểm thử hiệu suất ứng dụng .NET.
Câu 29: Trong C#, từ khóa `virtual` và `override` được sử dụng cùng nhau để hiện thực cơ chế nào?
- A. Tính đóng gói (Encapsulation).
- B. Tính trừu tượng (Abstraction).
- C. Tính đa hình (Polymorphism) thông qua kế thừa.
- D. Tính kế thừa (Inheritance).
Câu 30: Cho đoạn code C# sau: `Dictionary ages = new Dictionary(); ages.Add(