C# C#  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Сложный  ·  👥 1 прошёл

Асинхронность async/await

Проверяет модель async/await без мифов о «новом потоке»: состояние Task, контекст продолжения, ValueTask, распространение ошибок и наблюдение фоновой работы. Кодовые вопросы требуют точно восстановить порядок и понять, где ожидание освобождает поток, а где блокирует его.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В заданиях с кодом учитывайте указанную конструкцию и не додумывайте отсутствующие условия. После завершения откроются общий результат, тематические шкалы и разбор каждого ответа.
Вопрос 1 из 25
Что представляет Task<int>?
Вопрос 2 из 25
Когда начнётся выполнение LoadAsync?
C#
var task = LoadAsync();
Console.WriteLine("task obtained");
var data = await task;
Вопрос 3 из 25
Для чего Task.Run уместен в серверном коде?
Вопрос 4 из 25
Что даст Task.FromResult(5)?
C#
Task<int> cached = Task.FromResult(5);
Console.WriteLine(cached.IsCompletedSuccessfully);
Вопрос 5 из 25
Когда нужен TaskCompletionSource<T>?
C#
var tcs = new TaskCompletionSource<string>(
    TaskCreationOptions.RunContinuationsAsynchronously);
legacy.Begin(value => tcs.TrySetResult(value), error => tcs.TrySetException(error));
return tcs.Task;
Вопрос 6 из 25
Что делает await незавершённой задачи?
Вопрос 7 из 25
Почему два await здесь выполняются в основном последовательно?
C#
var user = await LoadUserAsync(id);
var orders = await LoadOrdersAsync(id);
Вопрос 8 из 25
Как запустить две независимые операции до ожидания?
C#
var userTask = LoadUserAsync(id);
var ordersTask = LoadOrdersAsync(id);
await Task.WhenAll(userTask, ordersTask);
var user = await userTask;
var orders = await ordersTask;
Вопрос 9 из 25
Что происходит при await уже успешно завершённого Task?
Вопрос 10 из 25
Почему ValueTask нельзя бездумно await-ить несколько раз?
C#
ValueTask<int> valueTask = reader.ReadAsync(token);
var first = await valueTask;
var second = await valueTask;
Вопрос 11 из 25
Зачем UI-коду обычно возвращаться в захваченный контекст?
Вопрос 12 из 25
Что меняет ConfigureAwait(false) у данного await?
C#
var bytes = await stream.ReadAsync(buffer, token).ConfigureAwait(false);
Process(bytes);
Вопрос 13 из 25
Почему ConfigureAwait(false) не исправляет CPU-блокировку до await?
Вопрос 14 из 25
Есть ли стандартный SynchronizationContext запроса в ASP.NET Core?
Вопрос 15 из 25
Почему correlation id из AsyncLocal часто сохраняется через await?
C#
Correlation.Current.Value = requestId;
await CallDependencyAsync();
log.LogInformation("Request {Id}", Correlation.Current.Value);
Вопрос 16 из 25
Где будет поймано исключение?
C#
try
{
    await LoadAsync();
}
catch (HttpRequestException ex)
{
    Handle(ex);
}
Вопрос 17 из 25
Почему try/catch только вокруг вызова без await не ловит поздний сбой?
C#
Task task;
try { task = LoadAsync(); }
catch { /* не ловит сбой после await внутри LoadAsync */ }
await task;
Вопрос 18 из 25
Почему async void следует оставлять в основном для обработчиков событий?
Вопрос 19 из 25
Как получить все исключения нескольких задач, если это важно?
C#
var tasks = calls.Select(CallAsync).ToArray();
var all = Task.WhenAll(tasks);
try { await all; }
catch
{
    foreach (var t in tasks.Where(t => t.IsFaulted)) Log(t.Exception);
    throw;
}
Вопрос 20 из 25
Как безопаснее владеть фоновой задачей в сервисе?
Вопрос 21 из 25
Как должен выглядеть тест async-метода в xUnit?
C#
[Fact]
public async Task Load_returns_item()
{
    var item = await sut.LoadAsync(7);
    Assert.Equal(7, item.Id);
}
Вопрос 22 из 25
Чем заменить Thread.Sleep в тесте гонки завершения?
Вопрос 23 из 25
Как проверить исключение async-метода?
C#
await Assert.ThrowsAsync<InvalidOperationException>(
    () => sut.ProcessAsync(invalidInput));
Вопрос 24 из 25
Что полезно передавать в Activity при внешнем async-вызове?
C#
using var activity = source.StartActivity("catalog.get");
activity?.SetTag("peer.service", "catalog");
try { return await client.GetAsync(id, token); }
catch (Exception ex) { activity?.SetStatus(ActivityStatusCode.Error, ex.Message); throw; }
Вопрос 25 из 25
Какие метрики лучше показывают проблемы async-зависимости?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу