DT Dart  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Конкурентные вычисления и изоляты

Тест по теме «Конкурентные вычисления и изоляты» охватывает «Разбиение задачи», «Передача больших данных», «Пул исполнителей», «Отмена вычисления», «Профилирование решения» и «Архитектурные компромиссы». В 30 вопросах нужно читать код, различать граничные случаи, выбирать место исправления, формулировать внешний договор и проектировать регрессионную проверку. Заданий с фрагментами кода — 18; в каждом вопросе один правильный ответ из пяти.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 85 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 30
Обычный путь в коде зелёный. Как построить проверку «Разбиение задачи», чтобы не пропустить различия между отказами?
DartDart · Разбиение задачи · границы
List<List<int>> chunks(List<int> values, int size) {
  return [
    for (var start = 0; start < values.length; start += size)
      values.sublist(start, (start + size).clamp(0, values.length)),
  ];
}

// Контекст задания: анализ граничных входов.
Вопрос 2 из 30
Несколько мест использования повторяют одну и ту же защиту. Какая правка должна стать единой для темы «Разбиение задачи»?
DartDart · Разбиение задачи · исправление
List<List<int>> chunks(List<int> values, int size) {
  return [
    for (var start = 0; start < values.length; start += size)
      values.sublist(start, (start + size).clamp(0, values.length)),
  ];
}

// Контекст задания: выбор места исправления.
Вопрос 3 из 30
Какой тезис о коде «Разбиение задачи» можно защитить без ссылки на удачный тестовый запуск?
DartDart · Разбиение задачи · семантика
List<List<int>> chunks(List<int> values, int size) {
  return [
    for (var start = 0; start < values.length; start += size)
      values.sublist(start, (start + size).clamp(0, values.length)),
  ];
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 4 из 30
Какой договор позволяет тестировать «Разбиение задачи» через результат, а не через приватные детали?
Вопрос 5 из 30
После исправления темы «Разбиение задачи» нужен тест, который переживёт рефакторинг. Что следует закрепить?
Вопрос 6 из 30
Фрагмент выглядит убедительно на типичных данных. Какие входы по теме «Передача больших данных» нельзя проверять одним общим ожиданием?
DartDart · Передача больших данных · границы
Future<Uint8List> decodeInWorker(Uint8List bytes) async {
  final transferable = TransferableTypedData.fromList([bytes]);
  return Isolate.run(() => decode(transferable.materialize().asUint8List()));
}

// Контекст задания: анализ граничных входов.
Вопрос 7 из 30
Какое описание семантики показанного решения по теме «Передача больших данных» является точным?
DartDart · Передача больших данных · семантика
Future<Uint8List> decodeInWorker(Uint8List bytes) async {
  final transferable = TransferableTypedData.fromList([bytes]);
  return Isolate.run(() => decode(transferable.materialize().asUint8List()));
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 8 из 30
Несколько мест использования повторяют одну и ту же защиту. Какая правка должна стать единой для темы «Передача больших данных»?
DartDart · Передача больших данных · исправление
Future<Uint8List> decodeInWorker(Uint8List bytes) async {
  final transferable = TransferableTypedData.fromList([bytes]);
  return Isolate.run(() => decode(transferable.materialize().asUint8List()));
}

// Контекст задания: выбор места исправления.
Вопрос 9 из 30
Что добавить в набор тестов, чтобы ошибка по теме «Передача больших данных» не вернулась незаметно?
Вопрос 10 из 30
Какой договор позволяет тестировать «Передача больших данных» через результат, а не через приватные детали?
Вопрос 11 из 30
Какой вывод о фрагменте «Пул исполнителей» останется верным после безопасного рефакторинга?
DartDart · Пул исполнителей · семантика
final class WorkerPool {
  WorkerPool(this.size);
  final int size;
  final Queue<Job> pending = Queue();
  final Set<Worker> busy = {};

  void submit(Job job) {
    pending.add(job);
    schedule();
  }
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 12 из 30
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Пул исполнителей»?
DartDart · Пул исполнителей · исправление
final class WorkerPool {
  WorkerPool(this.size);
  final int size;
  final Queue<Job> pending = Queue();
  final Set<Worker> busy = {};

  void submit(Job job) {
    pending.add(job);
    schedule();
  }
}

// Контекст задания: выбор места исправления.
Вопрос 13 из 30
Обычный путь в коде зелёный. Как построить проверку «Пул исполнителей», чтобы не пропустить различия между отказами?
DartDart · Пул исполнителей · границы
final class WorkerPool {
  WorkerPool(this.size);
  final int size;
  final Queue<Job> pending = Queue();
  final Set<Worker> busy = {};

  void submit(Job job) {
    pending.add(job);
    schedule();
  }
}

// Контекст задания: анализ граничных входов.
Вопрос 14 из 30
Команда хочет свободно менять устройство решения «Пул исполнителей». Какое требование нельзя нарушить?
Вопрос 15 из 30
Что добавить в набор тестов, чтобы ошибка по теме «Пул исполнителей» не вернулась незаметно?
Вопрос 16 из 30
Что в поведении этого кода гарантировано правилами темы «Отмена вычисления», а не случайно совпало в одном запуске?
DartDart · Отмена вычисления · семантика
sealed class WorkerCommand { const WorkerCommand(); }
final class RunJob extends WorkerCommand { const RunJob(this.id, this.data); final int id; final Uint8List data; }
final class CancelJob extends WorkerCommand { const CancelJob(this.id); final int id; }

if (cancelled.contains(job.id)) return const JobResult.cancelled();

// Контекст задания: проверка семантики фрагмента.
Вопрос 17 из 30
На ревью спорят, достаточно ли одного сквозного теста для «Отмена вычисления». Какой набор действительно раскрывает границы поведения?
DartDart · Отмена вычисления · границы
sealed class WorkerCommand { const WorkerCommand(); }
final class RunJob extends WorkerCommand { const RunJob(this.id, this.data); final int id; final Uint8List data; }
final class CancelJob extends WorkerCommand { const CancelJob(this.id); final int id; }

if (cancelled.contains(job.id)) return const JobResult.cancelled();

// Контекст задания: анализ граничных входов.
Вопрос 18 из 30
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Отмена вычисления»?
DartDart · Отмена вычисления · исправление
sealed class WorkerCommand { const WorkerCommand(); }
final class RunJob extends WorkerCommand { const RunJob(this.id, this.data); final int id; final Uint8List data; }
final class CancelJob extends WorkerCommand { const CancelJob(this.id); final int id; }

if (cancelled.contains(job.id)) return const JobResult.cancelled();

// Контекст задания: выбор места исправления.
Вопрос 19 из 30
Как проверить тему «Отмена вычисления» через публичный результат, не цепляясь за устройство реализации?
Вопрос 20 из 30
Команда хочет свободно менять устройство решения «Отмена вычисления». Какое требование нельзя нарушить?
Вопрос 21 из 30
В показанном решении проблему обходят рядом с одним вызовом. Какое изменение исправляет саму границу темы «Профилирование решения»?
DartDart · Профилирование решения · исправление
Future<Comparison> compareStrategies(List<int> input) async {
  final sequential = await measure(() async => calculate(input));
  final oneIsolate = await measure(() => Isolate.run(() => calculate(input)));
  final pooled = await measure(() => pool.calculate(input));
  return Comparison(sequential, oneIsolate, pooled);
}

// Контекст задания: выбор места исправления.
Вопрос 22 из 30
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Профилирование решения» всё ещё нужно проверить раздельно?
DartDart · Профилирование решения · границы
Future<Comparison> compareStrategies(List<int> input) async {
  final sequential = await measure(() async => calculate(input));
  final oneIsolate = await measure(() => Isolate.run(() => calculate(input)));
  final pooled = await measure(() => pool.calculate(input));
  return Comparison(sequential, oneIsolate, pooled);
}

// Контекст задания: анализ граничных входов.
Вопрос 23 из 30
Какой вывод о фрагменте «Профилирование решения» останется верным после безопасного рефакторинга?
DartDart · Профилирование решения · семантика
Future<Comparison> compareStrategies(List<int> input) async {
  final sequential = await measure(() async => calculate(input));
  final oneIsolate = await measure(() => Isolate.run(() => calculate(input)));
  final pooled = await measure(() => pool.calculate(input));
  return Comparison(sequential, oneIsolate, pooled);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 24 из 30
Одна реализация темы «Профилирование решения» заменяется другой. Что внешний код вправе ожидать после замены?
Вопрос 25 из 30
Как проверить тему «Профилирование решения» через публичный результат, не цепляясь за устройство реализации?
Вопрос 26 из 30
Какой вариант правки убирает источник дефекта «Архитектурные компромиссы» и не заставляет клиентов дублировать защиту?
DartDart · Архитектурные компромиссы · исправление
Future<Thumbnail> loadThumbnail(Uri uri) async {
  final bytes = await http.readBytes(uri);       // asynchronous I/O
  return Isolate.run(() => decodeImage(bytes));  // CPU-bound decoding
}

// Контекст задания: выбор места исправления.
Вопрос 27 из 30
Какое утверждение о показанном фрагменте и теме «Архитектурные компромиссы» опирается на реальную гарантию Dart или используемого интерфейса?
DartDart · Архитектурные компромиссы · семантика
Future<Thumbnail> loadThumbnail(Uri uri) async {
  final bytes = await http.readBytes(uri);       // asynchronous I/O
  return Isolate.run(() => decodeImage(bytes));  // CPU-bound decoding
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 28 из 30
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Архитектурные компромиссы» всё ещё нужно проверить раздельно?
DartDart · Архитектурные компромиссы · границы
Future<Thumbnail> loadThumbnail(Uri uri) async {
  final bytes = await http.readBytes(uri);       // asynchronous I/O
  return Isolate.run(() => decodeImage(bytes));  // CPU-bound decoding
}

// Контекст задания: анализ граничных входов.
Вопрос 29 из 30
Какой тест действительно поймает возврат дефекта в теме «Архитектурные компромиссы»?
Вопрос 30 из 30
Одна реализация темы «Архитектурные компромиссы» заменяется другой. Что внешний код вправе ожидать после замены?

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

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

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

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