
Оптимізація продуктивності
Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, найкращі практики продуктивності
1Яка головна перевага BenchmarkDotNet порівняно з простим Stopwatch для вимірювання продуктивності?
Яка головна перевага BenchmarkDotNet порівняно з простим Stopwatch для вимірювання продуктивності?
Відповідь
BenchmarkDotNet виконує warm-up, вимірює кілька ітерацій зі статистичною стабілізацією та уникає упереджень JIT і GC. Простий Stopwatch може давати нерепрезентативні результати, оскільки не контролює ці фактори. BenchmarkDotNet також надає докладні метрики, як-от виділення пам'яті на операцію.
2Який інструмент Microsoft рекомендується для аналізу виділення пам'яті та виявлення витоків пам'яті в продакшені?
Який інструмент Microsoft рекомендується для аналізу виділення пам'яті та виявлення витоків пам'яті в продакшені?
Відповідь
dotMemory від JetBrains і PerfView від Microsoft — рекомендовані інструменти для профілювання пам'яті в .NET. PerfView безкоштовний, з відкритим кодом і може аналізувати виділення в heap, stack traces та події GC. Він особливо підходить для діагностики витоків пам'яті в продакшені без значного overhead.
3Як виявити приховані виділення пам'яті в LINQ-методі на кшталт FirstOrDefault()?
Як виявити приховані виділення пам'яті в LINQ-методі на кшталт FirstOrDefault()?
Відповідь
Використання BenchmarkDotNet з атрибутом MemoryDiagnoser показує виділення на операцію. Lambda в LINQ створюють приховані виділення через delegate. Заміна простим циклом foreach усуває ці виділення. PerfView також може захоплювати stack traces виділень для виявлення джерел.
У BenchmarkDotNet який атрибут використовувати для вимірювання продуктивності CPU та виявлення hotspot у коді?
Як інтерпретувати результат BenchmarkDotNet, що показує Mean: 125.3 ns, StdDev: 45.2 ns?
+19 питань зі співбесід
Інші теми співбесід .NET
Основи C#
LINQ & Delegates
Основи мови C#
Основи ASP.NET Core
Життєвий цикл запиту в ASP.NET Core
Configuration & Settings
Життєвий цикл застосунку
Dependency Injection
Entity Framework Core
Minimal APIs
Розробка Web API
Async в ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Серіалізація JSON
Entity Framework Core просунутий
Розширені можливості C#
Clean Architecture
Logging, Monitoring & Observability
Модульне тестування та xUnit
Інтеграційні тести
Docker & Containerization
Керування пакетами NuGet
Memory Management & GC
Реактивне програмування
Async/await і патерни
.NET Design Patterns
Безпека та Best Practices
SignalR і реальний час
Архітектура мікросервісів
Опануй .NET для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно