.NET

Async/await & Patterns

async/await, Task, ValueTask, ConfigureAwait, Cancellation Tokens, parallele Ausführung, Deadlocks

26 Interview-Fragen·
Senior
1

Welche Hauptrolle hat das Schlüsselwort 'await' in einer asynchronen Methode?

Antwort

Das await-Schlüsselwort unterbricht die Ausführung der asynchronen Methode, bis die Task abgeschlossen ist, und gibt dabei den aufrufenden Thread frei, sodass er andere Aufgaben verarbeiten kann. Dies vermeidet das Blockieren des Threads und verbessert die Skalierbarkeit der Anwendung. Im Gegensatz zu Task.Wait() oder Task.Result, die den Thread blockieren, ermöglicht await eine effiziente Nutzung der Thread-Pool-Ressourcen.

2

Warum sollte async void außer für Event-Handler vermieden werden?

Antwort

Async-void-Methoden können nicht awaited werden und innerhalb geworfene Exceptions können vom aufrufenden Code nicht abgefangen werden, was zu Anwendungsabstürzen führt. Außerdem ist das Unit-Testen von async-void-Methoden unmöglich, da es keine Task zum Awaiten gibt. Event-Handler sind die Ausnahme, da sie vom Framework aufgerufen werden und keine Task zurückgeben können.

3

In welchem Anwendungsfall sollte ValueTask<T> gegenüber Task<T> bevorzugt werden?

Antwort

ValueTask ist ein Value Type, der die Heap-Allokation vermeidet, wenn das Ergebnis bereits synchron verfügbar ist, etwa in einem Cache. Dies reduziert den Druck auf den Garbage Collector in Hochleistungsszenarien. Task wird immer auf dem Heap allokiert, selbst wenn das Ergebnis synchron ist. Verwenden Sie ValueTask nur, wenn die Leistungsgewinne messbar sind, da eine falsche Verwendung die Leistung verschlechtern kann.

4

Welche wichtige Einschränkung gilt für ValueTask<T> im Vergleich zu Task<T>?

5

Was ist der Hauptzweck von ConfigureAwait(false) in einer .NET-Bibliothek?

+23 Interview-Fragen

Meistere .NET für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten