
Async/await & Mẫu thiết kế
async/await, Task, ValueTask, ConfigureAwait, cancellation token, thực thi song song, deadlock
1Vai trò chính của từ khóa 'await' trong một phương thức bất đồng bộ là gì?
Vai trò chính của từ khóa 'await' trong một phương thức bất đồng bộ là gì?
Câu trả lời
Từ khóa await tạm dừng việc thực thi phương thức bất đồng bộ cho đến khi Task hoàn tất, đồng thời giải phóng thread gọi để nó có thể xử lý các tác vụ khác. Điều này tránh việc chặn thread và cải thiện khả năng mở rộng của ứng dụng. Khác với Task.Wait() hoặc Task.Result vốn chặn thread, await cho phép sử dụng hiệu quả tài nguyên thread pool.
2Tại sao nên tránh dùng async void ngoại trừ cho các event handler?
Tại sao nên tránh dùng async void ngoại trừ cho các event handler?
Câu trả lời
Các phương thức async void không thể được await và các exception ném ra bên trong không thể được bắt bởi mã gọi, gây ra crash ứng dụng. Ngoài ra, không thể unit test phương thức async void vì không có Task để await. Các event handler là ngoại lệ vì chúng được framework gọi và không thể trả về Task.
3Trong trường hợp sử dụng nào nên ưu tiên ValueTask<T> hơn Task<T>?
Trong trường hợp sử dụng nào nên ưu tiên ValueTask<T> hơn Task<T>?
Câu trả lời
ValueTask là một value type giúp tránh cấp phát heap khi kết quả đã có sẵn một cách đồng bộ, chẳng hạn như trong cache. Điều này giảm áp lực lên garbage collector trong các kịch bản hiệu năng cao. Task luôn được cấp phát trên heap ngay cả khi kết quả là đồng bộ. Chỉ dùng ValueTask khi lợi ích hiệu năng có thể đo lường được, vì sử dụng sai có thể làm giảm hiệu năng.
Hạn chế quan trọng nào áp dụng cho ValueTask<T> so với Task<T>?
Mục đích chính của ConfigureAwait(false) trong một thư viện .NET là gì?
+23 câu hỏi phỏng vấn
Các chủ đề phỏng vấn .NET khác
Cơ bản về C#
LINQ & Delegates
Kiến thức cốt lõi ngôn ngữ C#
Kiến thức cơ bản về ASP.NET Core
Vòng đời request trong ASP.NET Core
Configuration & Settings
Vòng đời ứng dụng
Dependency Injection
Entity Framework Core
Minimal APIs
Phát triển Web API
Async trong ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Tuần tự hóa JSON
Entity Framework Core nâng cao
Các tính năng nâng cao của C#
Clean Architecture
Logging, Monitoring & Observability
Kiểm thử đơn vị & xUnit
Kiểm thử tích hợp
Docker & Containerization
Quản lý gói NuGet
Memory Management & GC
Lập trình phản ứng
.NET Design Patterns
Tối ưu hóa hiệu năng
Bảo mật & Best Practices
SignalR & Thời gian thực
Kiến trúc Microservices
Nắm vững .NET cho lần phỏng vấn tiếp theo
Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.
Bắt đầu miễn phí