
Optimisation des performances
Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, performance best practices
1Quel est l'avantage principal de BenchmarkDotNet par rapport à un simple Stopwatch pour mesurer les performances ?
Quel est l'avantage principal de BenchmarkDotNet par rapport à un simple Stopwatch pour mesurer les performances ?
Réponse
BenchmarkDotNet effectue des warm-ups, mesure plusieurs itérations avec stabilisation statistique, évite les biais JIT et GC. Un Stopwatch simple peut donner des résultats non représentatifs car il ne contrôle pas ces facteurs. BenchmarkDotNet fournit également des métriques détaillées comme les allocations mémoire par opération.
2Quel outil Microsoft est recommandé pour analyser les allocations mémoire et identifier les fuites mémoire en production ?
Quel outil Microsoft est recommandé pour analyser les allocations mémoire et identifier les fuites mémoire en production ?
Réponse
dotMemory de JetBrains et PerfView de Microsoft sont les outils recommandés pour profiler la mémoire en .NET. PerfView est gratuit, open-source et peut analyser les allocations heap, les stacks traces et les événements GC. Il est particulièrement adapté pour diagnostiquer les fuites mémoire en production sans overhead significatif.
3Comment identifier les allocations mémoire cachées dans une méthode LINQ comme FirstOrDefault() ?
Comment identifier les allocations mémoire cachées dans une méthode LINQ comme FirstOrDefault() ?
Réponse
Utiliser BenchmarkDotNet avec l'attribut MemoryDiagnoser permet de voir les allocations par opération. Les lambdas LINQ créent des allocations cachées via delegates. Remplacer par une boucle foreach simple élimine ces allocations. PerfView peut aussi capturer les stacks traces d'allocations pour identifier les sources.
Dans BenchmarkDotNet, quel attribut utiliser pour mesurer les performances CPU et identifier les hotspots de code ?
Comment interpréter un résultat BenchmarkDotNet montrant Mean: 125.3 ns, StdDev: 45.2 ns ?
+19 questions d'entretien
Autres sujets d'entretien .NET
Les bases de C#
LINQ & Delegates
Essentiels du langage C#
Fondamentaux ASP.NET Core
Cycle de vie des requêtes ASP.NET Core
Configuration & Settings
Cycle de vie de l'application
Dependency Injection
Entity Framework Core
Minimal APIs
Développement Web API
Async côté ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Sérialisation JSON
Entity Framework Core avancé
Fonctionnalités avancées C#
Clean Architecture
Logging, Monitoring & Observability
Tests unitaires & xUnit
Tests d'intégration
Docker & Containerization
NuGet Package Management
Memory Management & GC
Programmation réactive
Async/await & Patterns
.NET Design Patterns
Sécurité & Best Practices
SignalR & Real-time
Architecture Microservices
Maîtrise .NET pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement