
Async/await & Patterns
async/await, Task, ValueTask, ConfigureAwait, cancellation tokens, execução paralela, deadlocks
1Qual é o papel principal da palavra-chave 'await' em um método assíncrono?
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.
2Por que se deve evitar async void exceto para manipuladores de eventos?
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.
3Em qual caso de uso ValueTask<T> deve ser preferido em vez de Task<T>?
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.
Qual restrição importante se aplica a ValueTask<T> em comparação com Task<T>?
Qual é o objetivo principal de ConfigureAwait(false) em uma biblioteca .NET?
+23 perguntas de entrevista
Outros temas de entrevista .NET
Fundamentos de C#
LINQ & Delegates
Fundamentos da linguagem C#
Fundamentos do ASP.NET Core
Ciclo de vida das requisições no ASP.NET Core
Configuration & Settings
Ciclo de vida da aplicação
Dependency Injection
Entity Framework Core
Minimal APIs
Desenvolvimento de Web API
Async no ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Serialização JSON
Entity Framework Core avançado
Recursos avançados do C#
Clean Architecture
Logging, Monitoring & Observability
Testes unitários e xUnit
Testes de integração
Docker & Containerization
NuGet Package Management
Memory Management & GC
Programação reativa
.NET Design Patterns
Otimização de desempenho
Segurança e Best Practices
SignalR e tempo real
Arquitetura de Microsserviços
Domine .NET para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis