
Async/await & Patterns
async/await, Task, ValueTask, ConfigureAwait, cancellation tokens, parallel execution, deadlocks
1Quel est le rôle principal du mot-clé 'await' dans une méthode asynchrone ?
Quel est le rôle principal du mot-clé 'await' dans une méthode asynchrone ?
Réponse
Le mot-clé await suspend l'exécution de la méthode asynchrone jusqu'à ce que la Task soit terminée, tout en libérant le thread appelant pour qu'il puisse traiter d'autres tâches. Cela permet d'éviter le blocage du thread et d'améliorer la scalabilité de l'application. Contrairement à Task.Wait() ou Task.Result qui bloquent le thread, await permet une utilisation efficace des ressources thread pool.
2Pourquoi faut-il éviter d'utiliser async void sauf pour les gestionnaires d'événements ?
Pourquoi faut-il éviter d'utiliser async void sauf pour les gestionnaires d'événements ?
Réponse
Les méthodes async void ne peuvent pas être attendues (await) et les exceptions levées à l'intérieur ne peuvent pas être capturées par le code appelant, provoquant un crash de l'application. De plus, il est impossible de tester unitairement une méthode async void car il n'y a pas de Task à attendre. Les gestionnaires d'événements sont l'exception car ils sont appelés par le framework et ne peuvent pas retourner Task.
3Dans quel cas d'usage privilégier ValueTask<T> plutôt que Task<T> ?
Dans quel cas d'usage privilégier ValueTask<T> plutôt que Task<T> ?
Réponse
ValueTask est un value type qui évite l'allocation heap lorsque le résultat est déjà disponible de manière synchrone, comme dans un cache. Cela réduit la pression sur le garbage collector dans les scénarios haute performance. Task est toujours alloué sur le heap même si le résultat est synchrone. Utiliser ValueTask uniquement quand les gains de performance sont mesurables, car son usage incorrect peut dégrader les performances.
Quelle restriction importante s'applique à ValueTask<T> comparé à Task<T> ?
Quel est l'objectif principal de ConfigureAwait(false) dans une bibliothèque .NET ?
+23 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
.NET Design Patterns
Optimisation des performances
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