DT Dart  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Изоляты и обмен сообщениями

Тест по теме «Изоляты и обмен сообщениями» охватывает «Память изолята», «Каналы сообщений SendPort», «Фоновые вычисления», «Завершение работы» и «Ошибки интеграции». В 25 вопросах нужно читать код, различать граничные случаи, выбирать место исправления, формулировать внешний договор и проектировать регрессионную проверку. Заданий с фрагментами кода — 15; в каждом вопросе один правильный ответ из пяти.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 70 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 25
Что здесь следует считать правилом «Память изолята», а что — лишь деталью текущей реализации?
DartDart · Память изолята · семантика
Future<int> sumInWorker(List<int> values) async {
  final snapshot = List<int>.unmodifiable(values);
  return Isolate.run(() => snapshot.fold(0, (a, b) => a + b));
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 2 из 25
Текущая защита работает лишь в одном сценарии. Что следует изменить в самом решении по теме «Память изолята»?
DartDart · Память изолята · исправление
Future<int> sumInWorker(List<int> values) async {
  final snapshot = List<int>.unmodifiable(values);
  return Isolate.run(() => snapshot.fold(0, (a, b) => a + b));
}

// Контекст задания: выбор места исправления.
Вопрос 3 из 25
Команда хочет сократить набор проверок для «Память изолята» до одного сценария. Какой вариант сохраняет важные различия?
DartDart · Память изолята · границы
Future<int> sumInWorker(List<int> values) async {
  final snapshot = List<int>.unmodifiable(values);
  return Isolate.run(() => snapshot.fold(0, (a, b) => a + b));
}

// Контекст задания: анализ граничных входов.
Вопрос 4 из 25
Две реализации решают задачу «Память изолята» по-разному. Какое требование делает их взаимозаменяемыми для клиента?
Вопрос 5 из 25
Ручная проверка по теме «Память изолята» прошла. Как превратить её в полезную автоматическую регрессию?
Вопрос 6 из 25
Какое описание семантики показанного решения по теме «Каналы сообщений SendPort» является точным?
DartDart · Каналы сообщений SendPort · семантика
Future<int> requestSum(SendPort worker, List<int> values) async {
  final replies = ReceivePort();
  worker.send((values, replies.sendPort));
  try {
    return await replies.first as int;
  } finally {
    replies.close();
  }
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 7 из 25
Для показанного решения написали один тест на успех. Какой набор граничных сценариев по теме «Каналы сообщений SendPort» должен появиться рядом?
DartDart · Каналы сообщений SendPort · границы
Future<int> requestSum(SendPort worker, List<int> values) async {
  final replies = ReceivePort();
  worker.send((values, replies.sendPort));
  try {
    return await replies.first as int;
  } finally {
    replies.close();
  }
}

// Контекст задания: анализ граничных входов.
Вопрос 8 из 25
Текущая защита работает лишь в одном сценарии. Что следует изменить в самом решении по теме «Каналы сообщений SendPort»?
DartDart · Каналы сообщений SendPort · исправление
Future<int> requestSum(SendPort worker, List<int> values) async {
  final replies = ReceivePort();
  worker.send((values, replies.sendPort));
  try {
    return await replies.first as int;
  } finally {
    replies.close();
  }
}

// Контекст задания: выбор места исправления.
Вопрос 9 из 25
Какая регрессия для «Каналы сообщений SendPort» будет падать на старом дефекте и не ломаться от безопасной перестройки кода?
Вопрос 10 из 25
Две реализации решают задачу «Каналы сообщений SendPort» по-разному. Какое требование делает их взаимозаменяемыми для клиента?
Вопрос 11 из 25
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Фоновые вычисления»?
DartDart · Фоновые вычисления · исправление
Future<Report> buildReport(Uint8List bytes) {
  return Isolate.run(() {
    final rows = decodeRows(bytes);
    return Report.aggregate(rows);
  });
}

// Контекст задания: выбор места исправления.
Вопрос 12 из 25
Обычный путь в коде зелёный. Как построить проверку «Фоновые вычисления», чтобы не пропустить различия между отказами?
DartDart · Фоновые вычисления · границы
Future<Report> buildReport(Uint8List bytes) {
  return Isolate.run(() {
    final rows = decodeRows(bytes);
    return Report.aggregate(rows);
  });
}

// Контекст задания: анализ граничных входов.
Вопрос 13 из 25
Что здесь следует считать правилом «Фоновые вычисления», а что — лишь деталью текущей реализации?
DartDart · Фоновые вычисления · семантика
Future<Report> buildReport(Uint8List bytes) {
  return Isolate.run(() {
    final rows = decodeRows(bytes);
    return Report.aggregate(rows);
  });
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 14 из 25
Что должно оставаться неизменным при замене реализации темы «Фоновые вычисления»?
Вопрос 15 из 25
Какая регрессия для «Фоновые вычисления» будет падать на старом дефекте и не ломаться от безопасной перестройки кода?
Вопрос 16 из 25
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Завершение работы» отвечает этому требованию?
DartDart · Завершение работы · исправление
Future<void> stopWorker(Isolate worker, ReceivePort events) async {
  events.close();
  worker.kill(priority: Isolate.beforeNextEvent);
}

// Контекст задания: выбор места исправления.
Вопрос 17 из 25
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Завершение работы»?
DartDart · Завершение работы · семантика
Future<void> stopWorker(Isolate worker, ReceivePort events) async {
  events.close();
  worker.kill(priority: Isolate.beforeNextEvent);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 18 из 25
Обычный путь в коде зелёный. Как построить проверку «Завершение работы», чтобы не пропустить различия между отказами?
DartDart · Завершение работы · границы
Future<void> stopWorker(Isolate worker, ReceivePort events) async {
  events.close();
  worker.kill(priority: Isolate.beforeNextEvent);
}

// Контекст задания: анализ граничных входов.
Вопрос 19 из 25
Какой сценарий должен стать постоянной проверкой после исправления «Завершение работы»?
Вопрос 20 из 25
Что должно оставаться неизменным при замене реализации темы «Завершение работы»?
Вопрос 21 из 25
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Ошибки интеграции» всё ещё нужно проверить раздельно?
DartDart · Ошибки интеграции · границы
Future<WorkerHandle> spawnWorker() async {
  final ready = ReceivePort();
  final errors = ReceivePort();
  final exits = ReceivePort();
  final isolate = await Isolate.spawn(
    workerMain,
    ready.sendPort,
    onError: errors.sendPort,
    onExit: exits.sendPort,
  );
  return WorkerHandle(isolate, ready, errors, exits);
}

// Контекст задания: анализ граничных входов.
Вопрос 22 из 25
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Ошибки интеграции» отвечает этому требованию?
DartDart · Ошибки интеграции · исправление
Future<WorkerHandle> spawnWorker() async {
  final ready = ReceivePort();
  final errors = ReceivePort();
  final exits = ReceivePort();
  final isolate = await Isolate.spawn(
    workerMain,
    ready.sendPort,
    onError: errors.sendPort,
    onExit: exits.sendPort,
  );
  return WorkerHandle(isolate, ready, errors, exits);
}

// Контекст задания: выбор места исправления.
Вопрос 23 из 25
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Ошибки интеграции»?
DartDart · Ошибки интеграции · семантика
Future<WorkerHandle> spawnWorker() async {
  final ready = ReceivePort();
  final errors = ReceivePort();
  final exits = ReceivePort();
  final isolate = await Isolate.spawn(
    workerMain,
    ready.sendPort,
    onError: errors.sendPort,
    onExit: exits.sendPort,
  );
  return WorkerHandle(isolate, ready, errors, exits);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 24 из 25
Какой контракт по теме «Ошибки интеграции» отделяет наблюдаемое поведение от внутренних шагов?
Вопрос 25 из 25
Какой сценарий должен стать постоянной проверкой после исправления «Ошибки интеграции»?

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

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

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

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