.NET

Async/await & Patterns

async/await, Task, ValueTask, ConfigureAwait, cancellation tokens, ejecución paralela, deadlocks

26 preguntas de entrevista·
Senior
1

¿Cuál es el rol principal de la palabra clave 'await' en un método asíncrono?

Respuesta

La palabra clave await suspende la ejecución del método asíncrono hasta que la Task se complete, liberando al mismo tiempo el thread que llama para que pueda procesar otras tareas. Esto evita el bloqueo del thread y mejora la escalabilidad de la aplicación. A diferencia de Task.Wait() o Task.Result que bloquean el thread, await permite un uso eficiente de los recursos del thread pool.

2

¿Por qué se debe evitar async void excepto para los manejadores de eventos?

Respuesta

Los métodos async void no se pueden esperar (await) y las excepciones lanzadas dentro no pueden ser capturadas por el código que llama, provocando un crash de la aplicación. Además, es imposible hacer pruebas unitarias de un método async void porque no hay ninguna Task que esperar. Los manejadores de eventos son la excepción porque son invocados por el framework y no pueden retornar Task.

3

¿En qué caso de uso se debe preferir ValueTask<T> en lugar de Task<T>?

Respuesta

ValueTask es un value type que evita la asignación en el heap cuando el resultado ya está disponible de manera síncrona, como en un cache. Esto reduce la presión sobre el garbage collector en escenarios de alto rendimiento. Task siempre se asigna en el heap incluso si el resultado es síncrono. Usa ValueTask únicamente cuando las ganancias de rendimiento sean medibles, ya que su uso incorrecto puede degradar el rendimiento.

4

¿Qué restricción importante se aplica a ValueTask<T> en comparación con Task<T>?

5

¿Cuál es el objetivo principal de ConfigureAwait(false) en una biblioteca .NET?

+23 preguntas de entrevista

Domina .NET para tu próxima entrevista

Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.

Empieza gratis