Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

1. Nền Tảng C# và .NET

Giới thiệu

Phần này trình bày các kiến thức nền tảng về ngôn ngữ C# và .NET Runtime, bao gồm:

Nội dung chính

C# Cơ bản

  • Cú pháp cơ bản - Kiểu dữ liệu, biến, toán tử, luồng điều khiển, phương thức

Lập trình hướng đối tượng

  • OOP - Class, Inheritance, Polymorphism, Encapsulation, Interface

Hệ thống kiểu & Generics

  • Types & Generics - Generic types, nullable types, type conversion, boxing/unboxing

Delegates, Events & Lambda

Collections

  • Collections - Arrays, List, Dictionary, HashSet và các collection interfaces

Xử lý chuỗi

  • Strings - String vs StringBuilder, string interpolation, string methods

Async/Await & LINQ

Exception Handling & IDisposable

Pattern Matching, Records & Reflection

CLR & Bộ nhớ


Câu hỏi phỏng vấn (Sắp xếp từ dễ đến khó)

Mức độ: Dễ (Junior)

  1. Sự khác biệt giữa value typesreference types trong C#?
  2. constreadonly khác nhau như thế nào?
  3. String vs StringBuilder - khi nào nên dùng cái nào?
  4. Sự khác biệt giữa for, while, và foreach loops?
  5. break, continue, và return khác nhau như thế nào?
  6. ArrayList<T> khác nhau gì?
  7. ref, out, in parameters khác nhau như thế nào?
  8. null-coalescing operator (??) và null-conditional operator (?.) dùng để làm gì?

Mức độ: Trung bình (Mid-level)

  1. abstract classinterface khác nhau như thế nào? Khi nào dùng cái nào?
  2. Giải thích inheritance, polymorphism, và encapsulation trong OOP?
  3. Sự khác biệt giữa delegate, event, và lambda expression?
  4. So sánh List<T>, Dictionary<TKey, TValue>, và HashSet<T> - khi nào dùng cái nào?
  5. Khi nào nên sử dụng generic types và cách áp dụng constraints?
  6. BoxingUnboxing là gì? Tại sao nên tránh?
  7. Deferred Execution trong LINQ là gì?
  8. Sự khác biệt giữa IEnumerableIQueryable - khi nào dùng cái nào?
  9. Giải thích try-catch-finally hoạt động thế nào? throwthrow ex khác nhau gì?
  10. IDisposable là gì? Tại sao cần implement nó?
  11. using statement hoạt động như thế nào với IDisposable?

Mức độ: Khó (Senior)

  1. Giải thích async/await hoạt động thế nào dưới the hood?
  2. Sự khác biệt giữa IEnumerableIAsyncEnumerable?
  3. Cách tối ưu truy vấn LINQ trên tập dữ liệu lớn?
  4. Garbage Collection (GC) hoạt động như thế nào?
  5. Các thế hệ (Generations) trong GC là gì?
  6. Cách tối ưu để giảm áp lực lên GC?
  7. Value Types (struct) vs Reference Types (class) – cách lưu trữ trên Stack/Heap và tác động đến hiệu năng?
  8. Reflection là gì và khi nào nên sử dụng? Performance considerations?
  9. Attributes trong C# dùng để làm gì? Cho ví dụ về custom attribute.
  10. Pattern Matching trong C# 9+ có gì mới?
  11. Records khác Classes như thế nào? Khi nào nên dùng Records?
  12. Tương tác giữa try-catch-finally và IDisposable - using statement tương đương với try-finally như thế nào?
  13. Tại sao không nên throw exception từ Dispose method?
  14. ConfigureAwait(false) dùng để làm gì? Khi nào nên sử dụng?