💡 Инструкция: Выберите один ответ из пяти. На работу отведено 85 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 30
Обычный путь в коде зелёный. Как построить проверку «Кадры интерфейса», чтобы не пропустить различия между отказами?
Dart Dart · Кадры интерфейса · границы Копировать
Widget build(BuildContext context) {
final sorted = [...entries]..sort((a, b) => b.score.compareTo(a.score));
return ListView.builder(
itemCount: sorted.length,
itemBuilder: (_, index) => EntryTile(entry: sorted[index]),
);
}
// Контекст задания: анализ граничных входов.
Проверить для «Кадры интерфейса» только самый сложный случай «различие debug/profile», считая остальные границы косвенно покрытыми.
Автоматизировать обычный путь «Кадры интерфейса», а случай «различие debug/profile» оставить в ручном чек-листе выпуска.
Развести по отдельным проверкам: редкие длинные кадры, слабое устройство, анимация под нагрузкой и различие debug/profile.
Для «Кадры интерфейса» ограничиться случаем «редкие длинные кадры», а остальные входы считать тем же классом отказа.
Во всех спорных входах «Кадры интерфейса» проверять только отсутствие необработанного исключения, не сравнивая состояние.
Вопрос 6 из 30
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Лишние перестроения»?
Dart Dart · Лишние перестроения · семантика Копировать
Selector<CartModel, Money>(
selector: (_, cart) => cart.total,
builder: (_, total, __) => Text(total.format()),
)
// Контекст задания: проверка семантики фрагмента.
Случай «который получает лишние изменения» объявить внутренней деталью «Лишние перестроения», даже если клиент видит иной результат.
Спорный результат «Лишние перестроения» должен разбирать вызывающий код, поскольку компонент отвечает лишь за обычный путь. Клиенту «Лишние перестроения» предлагают самостоятельно уточнять смысл спорного результата.
Порядок внутренних вызовов «Лишние перестроения» считать публичной гарантией, которую нельзя менять при рефакторинге. Так внутренняя структура «Лишние перестроения» фактически становится частью внешнего обещания.
Лишние перестроения находят измерением и локализуют через более узкие слушатели, const-виджеты и разбиение дерева; механическое добавление const не лечит изменяемые зависимости.
Для «Лишние перестроения» считать случаи «широкий `setState`, создание новых объектов в `build` и слушатель, который получает лишние изменения» эквивалентными, если программа не завершается аварийно.
Вопрос 7 из 30
Какое изменение показанного кода исправляет правило «Лишние перестроения», а не маскирует один его симптом?
Dart Dart · Лишние перестроения · исправление Копировать
Selector<CartModel, Money>(
selector: (_, cart) => cart.total,
builder: (_, total, __) => Text(total.format()),
)
// Контекст задания: выбор места исправления.
Оставить поведение «Лишние перестроения» прежним, но заменить сообщение об ошибке на более подробное.
Сузить область перестроения и стабилизировать неизменяемые входы, подтвердив эффект счётчиком или профилем.
Скопировать защиту «Лишние перестроения» во все найденные места вызова и считать повторение единым исправлением.
Скрыть сбой «Лишние перестроения» автоматической повторной попыткой без ограничения числа запусков.
Добавить в «Лишние перестроения» специальный флаг только для одного экрана или сервиса, сохранив общий контракт.
Вопрос 8 из 30
Для показанного решения написали один тест на успех. Какой набор граничных сценариев по теме «Лишние перестроения» должен появиться рядом?
Dart Dart · Лишние перестроения · границы Копировать
Selector<CartModel, Money>(
selector: (_, cart) => cart.total,
builder: (_, total, __) => Text(total.format()),
)
// Контекст задания: анализ граничных входов.
Не объединять в один исход следующие случаи: широкий `setState`, создание новых объектов в `build` и слушатель, который получает лишние изменения.
Проверить для «Лишние перестроения» только самый сложный случай «который получает лишние изменения», считая остальные границы косвенно покрытыми.
Автоматизировать обычный путь «Лишние перестроения», а случай «который получает лишние изменения» оставить в ручном чек-листе выпуска.
Во всех спорных входах «Лишние перестроения» проверять только отсутствие необработанного исключения, не сравнивая состояние.
Объединить «широкий `setState`» и «создание новых объектов в `build` и слушатель» в один тест «Лишние перестроения» с общим ожидаемым исходом.