DT Dart  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Future и async/await

Тест по теме «Future и async/await» охватывает «Создание Future», «Ожидание результата», «Параллельный запуск» и «Обработка отказов». В 20 вопросах нужно читать код, различать граничные случаи, выбирать место исправления, формулировать внешний договор и проектировать регрессионную проверку. Заданий с фрагментами кода — 12; в каждом вопросе один правильный ответ из пяти.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 20
Код проходит обычный сценарий. Какие проверки по теме «Создание Future» нужны, чтобы разные граничные исходы не слились в один?
DartDart · Создание Future · границы
Future<int> calculate() {
  return Future<int>(() {
    print('worker');
    return 6 * 7;
  });
}
Future<void> main() async {
  print('start');
  print(await calculate());
}

// Контекст задания: анализ граничных входов.
Вопрос 2 из 20
Что в поведении этого кода гарантировано правилами темы «Создание Future», а не случайно совпало в одном запуске?
DartDart · Создание Future · семантика
Future<int> calculate() {
  return Future<int>(() {
    print('worker');
    return 6 * 7;
  });
}
Future<void> main() async {
  print('start');
  print(await calculate());
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 3 из 20
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Создание Future» отвечает этому требованию?
DartDart · Создание Future · исправление
Future<int> calculate() {
  return Future<int>(() {
    print('worker');
    return 6 * 7;
  });
}
Future<void> main() async {
  print('start');
  print(await calculate());
}

// Контекст задания: выбор места исправления.
Вопрос 4 из 20
Перед обновлением зависимости нужно защитить исправление «Создание Future». Какая проверка подходит лучше всего?
Вопрос 5 из 20
Какой контракт по теме «Создание Future» отделяет наблюдаемое поведение от внутренних шагов?
Вопрос 6 из 20
Какое утверждение корректно связывает показанный код с семантикой темы «Ожидание результата»?
DartDart · Ожидание результата · семантика
Future<void> main() async {
  print('A');
  await Future<void>.delayed(Duration.zero);
  print('B');
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 7 из 20
В показанном решении проблему обходят рядом с одним вызовом. Какое изменение исправляет саму границу темы «Ожидание результата»?
DartDart · Ожидание результата · исправление
Future<void> main() async {
  print('A');
  await Future<void>.delayed(Duration.zero);
  print('B');
}

// Контекст задания: выбор места исправления.
Вопрос 8 из 20
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Ожидание результата» всё ещё нужно проверить раздельно?
DartDart · Ожидание результата · границы
Future<void> main() async {
  print('A');
  await Future<void>.delayed(Duration.zero);
  print('B');
}

// Контекст задания: анализ граничных входов.
Вопрос 9 из 20
Как сформулировать публичное обещание темы «Ожидание результата», не привязывая клиента к конкретному классу?
Вопрос 10 из 20
Перед обновлением зависимости нужно защитить исправление «Ожидание результата». Какая проверка подходит лучше всего?
Вопрос 11 из 20
Какой тезис о коде «Параллельный запуск» можно защитить без ссылки на удачный тестовый запуск?
DartDart · Параллельный запуск · семантика
Future<void> loadAll() async {
  final userFuture = loadUser();
  final feedFuture = loadFeed();
  final results = await Future.wait([userFuture, feedFuture]);
  render(results);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 12 из 20
Команда хочет сократить набор проверок для «Параллельный запуск» до одного сценария. Какой вариант сохраняет важные различия?
DartDart · Параллельный запуск · границы
Future<void> loadAll() async {
  final userFuture = loadUser();
  final feedFuture = loadFeed();
  final results = await Future.wait([userFuture, feedFuture]);
  render(results);
}

// Контекст задания: анализ граничных входов.
Вопрос 13 из 20
В показанном решении проблему обходят рядом с одним вызовом. Какое изменение исправляет саму границу темы «Параллельный запуск»?
DartDart · Параллельный запуск · исправление
Future<void> loadAll() async {
  final userFuture = loadUser();
  final feedFuture = loadFeed();
  final results = await Future.wait([userFuture, feedFuture]);
  render(results);
}

// Контекст задания: выбор места исправления.
Вопрос 14 из 20
Ручная проверка по теме «Параллельный запуск» прошла. Как превратить её в полезную автоматическую регрессию?
Вопрос 15 из 20
Как сформулировать публичное обещание темы «Параллельный запуск», не привязывая клиента к конкретному классу?
Вопрос 16 из 20
Несколько мест использования повторяют одну и ту же защиту. Какая правка должна стать единой для темы «Обработка отказов»?
DartDart · Обработка отказов · исправление
Future<String> request() async {
  try {
    return await client.fetch();
  } on TimeoutException {
    return 'cached';
  }
}

// Контекст задания: выбор места исправления.
Вопрос 17 из 20
Код прошёл демонстрационный пример, но границы не разобраны. Что нужно проверить отдельно в теме «Обработка отказов»?
DartDart · Обработка отказов · границы
Future<String> request() async {
  try {
    return await client.fetch();
  } on TimeoutException {
    return 'cached';
  }
}

// Контекст задания: анализ граничных входов.
Вопрос 18 из 20
Какое утверждение корректно связывает показанный код с семантикой темы «Обработка отказов»?
DartDart · Обработка отказов · семантика
Future<String> request() async {
  try {
    return await client.fetch();
  } on TimeoutException {
    return 'cached';
  }
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 19 из 20
Две реализации решают задачу «Обработка отказов» по-разному. Какое требование делает их взаимозаменяемыми для клиента?
Вопрос 20 из 20
Ручная проверка по теме «Обработка отказов» прошла. Как превратить её в полезную автоматическую регрессию?

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

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

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

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