
Tối ưu hóa hiệu năng
Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, các best practice về hiệu năng
1Lợi thế chính của BenchmarkDotNet so với một Stopwatch đơn giản khi đo hiệu năng là gì?
Lợi thế chính của BenchmarkDotNet so với một Stopwatch đơn giản khi đo hiệu năng là gì?
Câu trả lời
BenchmarkDotNet thực hiện warm-up, đo nhiều iteration với ổn định thống kê, tránh các sai lệch của JIT và GC. Một Stopwatch đơn giản có thể cho kết quả không đại diện vì nó không kiểm soát các yếu tố này. BenchmarkDotNet cũng cung cấp các chỉ số chi tiết như lượng cấp phát bộ nhớ trên mỗi thao tác.
2Công cụ Microsoft nào được khuyến nghị để phân tích cấp phát bộ nhớ và xác định rò rỉ bộ nhớ trong môi trường production?
Công cụ Microsoft nào được khuyến nghị để phân tích cấp phát bộ nhớ và xác định rò rỉ bộ nhớ trong môi trường production?
Câu trả lời
dotMemory của JetBrains và PerfView của Microsoft là các công cụ được khuyến nghị để profiling bộ nhớ trong .NET. PerfView miễn phí, open-source và có thể phân tích heap allocations, stack traces và các sự kiện GC. Nó đặc biệt phù hợp để chẩn đoán rò rỉ bộ nhớ trong production mà không gây overhead đáng kể.
3Làm thế nào để xác định các cấp phát bộ nhớ ẩn trong một phương thức LINQ như FirstOrDefault()?
Làm thế nào để xác định các cấp phát bộ nhớ ẩn trong một phương thức LINQ như FirstOrDefault()?
Câu trả lời
Sử dụng BenchmarkDotNet với attribute MemoryDiagnoser cho phép xem lượng cấp phát trên mỗi thao tác. Các lambda LINQ tạo ra cấp phát ẩn thông qua delegate. Thay thế bằng một vòng lặp foreach đơn giản sẽ loại bỏ các cấp phát này. PerfView cũng có thể bắt stack trace cấp phát để xác định nguồn gốc.
Trong BenchmarkDotNet, dùng attribute nào để đo hiệu năng CPU và xác định các hotspot của code?
Làm thế nào để diễn giải một kết quả BenchmarkDotNet hiển thị Mean: 125.3 ns, StdDev: 45.2 ns?
+19 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
Async/await & Mẫu thiết kế
.NET Design Patterns
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í