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

Потоки Stream

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 20
Фрагмент выглядит убедительно на типичных данных. Какие входы по теме «Подписка» нельзя проверять одним общим ожиданием?
DartDart · Подписка · границы
Future<void> main() async {
  final stream = Stream<int>.fromIterable([1, 2, 3]);
  final total = await stream.fold<int>(0, (a, b) => a + b);
  print(total);
}

// Контекст задания: анализ граничных входов.
Вопрос 2 из 20
Какое изменение показанного кода исправляет правило «Подписка», а не маскирует один его симптом?
DartDart · Подписка · исправление
Future<void> main() async {
  final stream = Stream<int>.fromIterable([1, 2, 3]);
  final total = await stream.fold<int>(0, (a, b) => a + b);
  print(total);
}

// Контекст задания: выбор места исправления.
Вопрос 3 из 20
Что здесь следует считать правилом «Подписка», а что — лишь деталью текущей реализации?
DartDart · Подписка · семантика
Future<void> main() async {
  final stream = Stream<int>.fromIterable([1, 2, 3]);
  final total = await stream.fold<int>(0, (a, b) => a + b);
  print(total);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 4 из 20
Что должно оставаться неизменным при замене реализации темы «Подписка»?
Вопрос 5 из 20
Какая регрессия для «Подписка» будет падать на старом дефекте и не ломаться от безопасной перестройки кода?
Вопрос 6 из 20
На ревью спорят, достаточно ли одного сквозного теста для «Преобразование событий». Какой набор действительно раскрывает границы поведения?
DartDart · Преобразование событий · границы
Stream<String> labels(Stream<int> input) {
  return input.where((n) => n.isEven).map((n) => 'item:$n');
}

// Контекст задания: анализ граничных входов.
Вопрос 7 из 20
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Преобразование событий»?
DartDart · Преобразование событий · семантика
Stream<String> labels(Stream<int> input) {
  return input.where((n) => n.isEven).map((n) => 'item:$n');
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 8 из 20
Какое изменение показанного кода исправляет правило «Преобразование событий», а не маскирует один его симптом?
DartDart · Преобразование событий · исправление
Stream<String> labels(Stream<int> input) {
  return input.where((n) => n.isEven).map((n) => 'item:$n');
}

// Контекст задания: выбор места исправления.
Вопрос 9 из 20
Какой сценарий должен стать постоянной проверкой после исправления «Преобразование событий»?
Вопрос 10 из 20
Что должно оставаться неизменным при замене реализации темы «Преобразование событий»?
Вопрос 11 из 20
Что в поведении этого кода гарантировано правилами темы «Broadcast-потоки», а не случайно совпало в одном запуске?
DartDart · Broadcast-потоки · семантика
final controller = StreamController<int>.broadcast();
final first = controller.stream.listen(print);
controller.add(1);
final second = controller.stream.listen((v) => print('late:$v'));
controller.add(2);

// Контекст задания: проверка семантики фрагмента.
Вопрос 12 из 20
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Broadcast-потоки» отвечает этому требованию?
DartDart · Broadcast-потоки · исправление
final controller = StreamController<int>.broadcast();
final first = controller.stream.listen(print);
controller.add(1);
final second = controller.stream.listen((v) => print('late:$v'));
controller.add(2);

// Контекст задания: выбор места исправления.
Вопрос 13 из 20
Фрагмент выглядит убедительно на типичных данных. Какие входы по теме «Broadcast-потоки» нельзя проверять одним общим ожиданием?
DartDart · Broadcast-потоки · границы
final controller = StreamController<int>.broadcast();
final first = controller.stream.listen(print);
controller.add(1);
final second = controller.stream.listen((v) => print('late:$v'));
controller.add(2);

// Контекст задания: анализ граничных входов.
Вопрос 14 из 20
Какой контракт по теме «Broadcast-потоки» отделяет наблюдаемое поведение от внутренних шагов?
Вопрос 15 из 20
Какой сценарий должен стать постоянной проверкой после исправления «Broadcast-потоки»?
Вопрос 16 из 20
Какое утверждение о показанном фрагменте и теме «Отмена подписки» опирается на реальную гарантию Dart или используемого интерфейса?
DartDart · Отмена подписки · семантика
class Presenter {
  StreamSubscription<int>? _sub;
  void bind(Stream<int> source) {
    _sub = source.listen(render, onError: showError);
  }
  Future<void> dispose() async => _sub?.cancel();
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 17 из 20
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Отмена подписки» всё ещё нужно проверить раздельно?
DartDart · Отмена подписки · границы
class Presenter {
  StreamSubscription<int>? _sub;
  void bind(Stream<int> source) {
    _sub = source.listen(render, onError: showError);
  }
  Future<void> dispose() async => _sub?.cancel();
}

// Контекст задания: анализ граничных входов.
Вопрос 18 из 20
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Отмена подписки» отвечает этому требованию?
DartDart · Отмена подписки · исправление
class Presenter {
  StreamSubscription<int>? _sub;
  void bind(Stream<int> source) {
    _sub = source.listen(render, onError: showError);
  }
  Future<void> dispose() async => _sub?.cancel();
}

// Контекст задания: выбор места исправления.
Вопрос 19 из 20
Перед обновлением зависимости нужно защитить исправление «Отмена подписки». Какая проверка подходит лучше всего?
Вопрос 20 из 20
Какой контракт по теме «Отмена подписки» отделяет наблюдаемое поведение от внутренних шагов?

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

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

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

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