💡 Инструкция: Выберите один ответ из пяти. На работу отведено 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()),
)
// Контекст задания: проверка семантики фрагмента.
Случай «который получает лишние изменения» объявить внутренней деталью «Лишние перестроения», даже если клиент видит иной результат.
Порядок внутренних вызовов «Лишние перестроения» считать публичной гарантией, которую нельзя менять при рефакторинге. Так внутренняя структура «Лишние перестроения» фактически становится частью внешнего обещания.
Спорный результат «Лишние перестроения» должен разбирать вызывающий код, поскольку компонент отвечает лишь за обычный путь. Клиенту «Лишние перестроения» предлагают самостоятельно уточнять смысл спорного результата.
Для «Лишние перестроения» считать случаи «широкий `setState`, создание новых объектов в `build` и слушатель, который получает лишние изменения» эквивалентными, если программа не завершается аварийно.
Лишние перестроения находят измерением и локализуют через более узкие слушатели, const-виджеты и разбиение дерева; механическое добавление const не лечит изменяемые зависимости.
Вопрос 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` и слушатель, который получает лишние изменения.
Автоматизировать обычный путь «Лишние перестроения», а случай «который получает лишние изменения» оставить в ручном чек-листе выпуска.
Проверить для «Лишние перестроения» только самый сложный случай «который получает лишние изменения», считая остальные границы косвенно покрытыми.
Во всех спорных входах «Лишние перестроения» проверять только отсутствие необработанного исключения, не сравнивая состояние.