.NET

Async/await & Patterns

async/await, Task, ValueTask, ConfigureAwait, cancellation tokens, execução paralela, deadlocks

26 perguntas de entrevista·
Senior
1

Qual é o papel principal da palavra-chave 'await' em um método assíncrono?

Resposta

A palavra-chave await suspende a execução do método assíncrono até que a Task seja concluída, liberando ao mesmo tempo o thread chamador para que processe outras tarefas. Isso evita o bloqueio do thread e melhora a escalabilidade da aplicação. Diferentemente de Task.Wait() ou Task.Result que bloqueiam o thread, await permite o uso eficiente dos recursos do thread pool.

2

Por que se deve evitar async void exceto para manipuladores de eventos?

Resposta

Os métodos async void não podem ser aguardados (await) e as exceções lançadas dentro não podem ser capturadas pelo código chamador, causando um crash da aplicação. Além disso, é impossível fazer testes unitários de um método async void porque não há nenhuma Task a aguardar. Os manipuladores de eventos são a exceção porque são chamados pelo framework e não podem retornar Task.

3

Em qual caso de uso ValueTask<T> deve ser preferido em vez de Task<T>?

Resposta

ValueTask é um value type que evita a alocação no heap quando o resultado já está disponível de forma síncrona, como em um cache. Isso reduz a pressão sobre o garbage collector em cenários de alto desempenho. Task é sempre alocado no heap mesmo que o resultado seja síncrono. Use ValueTask apenas quando os ganhos de desempenho forem mensuráveis, pois seu uso incorreto pode degradar o desempenho.

4

Qual restrição importante se aplica a ValueTask<T> em comparação com Task<T>?

5

Qual é o objetivo principal de ConfigureAwait(false) em uma biblioteca .NET?

+23 perguntas de entrevista

Domine .NET para sua proxima entrevista

Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.

Comece gratis