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

Профилирование и производительность Flutter

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 85 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 30
Обычный путь в коде зелёный. Как построить проверку «Кадры интерфейса», чтобы не пропустить различия между отказами?
DartDart · Кадры интерфейса · границы
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]),
  );
}

// Контекст задания: анализ граничных входов.
Вопрос 2 из 30
Что здесь следует считать правилом «Кадры интерфейса», а что — лишь деталью текущей реализации?
DartDart · Кадры интерфейса · семантика
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]),
  );
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 3 из 30
Текущая защита работает лишь в одном сценарии. Что следует изменить в самом решении по теме «Кадры интерфейса»?
DartDart · Кадры интерфейса · исправление
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]),
  );
}

// Контекст задания: выбор места исправления.
Вопрос 4 из 30
Какая регрессия для «Кадры интерфейса» будет падать на старом дефекте и не ломаться от безопасной перестройки кода?
Вопрос 5 из 30
Две реализации решают задачу «Кадры интерфейса» по-разному. Какое требование делает их взаимозаменяемыми для клиента?
Вопрос 6 из 30
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Лишние перестроения»?
DartDart · Лишние перестроения · семантика
Selector<CartModel, Money>(
  selector: (_, cart) => cart.total,
  builder: (_, total, __) => Text(total.format()),
)

// Контекст задания: проверка семантики фрагмента.
Вопрос 7 из 30
Какое изменение показанного кода исправляет правило «Лишние перестроения», а не маскирует один его симптом?
DartDart · Лишние перестроения · исправление
Selector<CartModel, Money>(
  selector: (_, cart) => cart.total,
  builder: (_, total, __) => Text(total.format()),
)

// Контекст задания: выбор места исправления.
Вопрос 8 из 30
Для показанного решения написали один тест на успех. Какой набор граничных сценариев по теме «Лишние перестроения» должен появиться рядом?
DartDart · Лишние перестроения · границы
Selector<CartModel, Money>(
  selector: (_, cart) => cart.total,
  builder: (_, total, __) => Text(total.format()),
)

// Контекст задания: анализ граничных входов.
Вопрос 9 из 30
Что должно оставаться неизменным при замене реализации темы «Лишние перестроения»?
Вопрос 10 из 30
Какая регрессия для «Лишние перестроения» будет падать на старом дефекте и не ломаться от безопасной перестройки кода?
Вопрос 11 из 30
Какой вывод о фрагменте «Память» останется верным после безопасного рефакторинга?
DartDart · Память · семантика
class _TickerState extends State<Ticker> {
  Timer? timer;
  @override void initState() {
    super.initState();
    timer = Timer.periodic(const Duration(seconds: 1), (_) => setState(() {}));
  }
  @override void dispose() {
    timer?.cancel();
    super.dispose();
  }
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 12 из 30
Фрагмент выглядит убедительно на типичных данных. Какие входы по теме «Память» нельзя проверять одним общим ожиданием?
DartDart · Память · границы
class _TickerState extends State<Ticker> {
  Timer? timer;
  @override void initState() {
    super.initState();
    timer = Timer.periodic(const Duration(seconds: 1), (_) => setState(() {}));
  }
  @override void dispose() {
    timer?.cancel();
    super.dispose();
  }
}

// Контекст задания: анализ граничных входов.
Вопрос 13 из 30
Какое изменение показанного кода исправляет правило «Память», а не маскирует один его симптом?
DartDart · Память · исправление
class _TickerState extends State<Ticker> {
  Timer? timer;
  @override void initState() {
    super.initState();
    timer = Timer.periodic(const Duration(seconds: 1), (_) => setState(() {}));
  }
  @override void dispose() {
    timer?.cancel();
    super.dispose();
  }
}

// Контекст задания: выбор места исправления.
Вопрос 14 из 30
Какой сценарий должен стать постоянной проверкой после исправления «Память»?
Вопрос 15 из 30
Что должно оставаться неизменным при замене реализации темы «Память»?
Вопрос 16 из 30
Локальная заплатка помогла только одному клиенту этого кода. Какая правка устраняет причину в теме «Профилирование в DevTools»?
DartDart · Профилирование в DevTools · исправление
Future<Report> loadReport() async {
  Timeline.startSync('load-report');
  try {
    return await repository.load();
  } finally {
    Timeline.finishSync();
  }
}

// Контекст задания: выбор места исправления.
Вопрос 17 из 30
На ревью спорят, достаточно ли одного сквозного теста для «Профилирование в DevTools». Какой набор действительно раскрывает границы поведения?
DartDart · Профилирование в DevTools · границы
Future<Report> loadReport() async {
  Timeline.startSync('load-report');
  try {
    return await repository.load();
  } finally {
    Timeline.finishSync();
  }
}

// Контекст задания: анализ граничных входов.
Вопрос 18 из 30
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Профилирование в DevTools»?
DartDart · Профилирование в DevTools · семантика
Future<Report> loadReport() async {
  Timeline.startSync('load-report');
  try {
    return await repository.load();
  } finally {
    Timeline.finishSync();
  }
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 19 из 30
Какой контракт по теме «Профилирование в DevTools» отделяет наблюдаемое поведение от внутренних шагов?
Вопрос 20 из 30
Какой сценарий должен стать постоянной проверкой после исправления «Профилирование в DevTools»?
Вопрос 21 из 30
В показанном решении проблему обходят рядом с одним вызовом. Какое изменение исправляет саму границу темы «Наблюдаемость и диагностика»?
DartDart · Наблюдаемость и диагностика · исправление
Future<T> measured<T>(String operation, Future<T> Function() body) async {
  final watch = Stopwatch()..start();
  try {
    return await body();
  } catch (error) {
    metrics.count('$operation.error');
    rethrow;
  } finally {
    metrics.timing(operation, watch.elapsed);
  }
}

// Контекст задания: выбор места исправления.
Вопрос 22 из 30
Что в поведении этого кода гарантировано правилами темы «Наблюдаемость и диагностика», а не случайно совпало в одном запуске?
DartDart · Наблюдаемость и диагностика · семантика
Future<T> measured<T>(String operation, Future<T> Function() body) async {
  final watch = Stopwatch()..start();
  try {
    return await body();
  } catch (error) {
    metrics.count('$operation.error');
    rethrow;
  } finally {
    metrics.timing(operation, watch.elapsed);
  }
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 23 из 30
На ревью спорят, достаточно ли одного сквозного теста для «Наблюдаемость и диагностика». Какой набор действительно раскрывает границы поведения?
DartDart · Наблюдаемость и диагностика · границы
Future<T> measured<T>(String operation, Future<T> Function() body) async {
  final watch = Stopwatch()..start();
  try {
    return await body();
  } catch (error) {
    metrics.count('$operation.error');
    rethrow;
  } finally {
    metrics.timing(operation, watch.elapsed);
  }
}

// Контекст задания: анализ граничных входов.
Вопрос 24 из 30
Перед обновлением зависимости нужно защитить исправление «Наблюдаемость и диагностика». Какая проверка подходит лучше всего?
Вопрос 25 из 30
Какой контракт по теме «Наблюдаемость и диагностика» отделяет наблюдаемое поведение от внутренних шагов?
Вопрос 26 из 30
Команда хочет сократить набор проверок для «Надёжность в эксплуатации» до одного сценария. Какой вариант сохраняет важные различия?
DartDart · Надёжность в эксплуатации · границы
Future<BenchmarkResult> benchmarkTimeline(List<Entry> input) async {
  final before = await measure(() => buildTimeline(input));
  final optimized = await measure(() => buildIndexedTimeline(input));
  return BenchmarkResult(before: before, after: optimized);
}

// Контекст задания: анализ граничных входов.
Вопрос 27 из 30
В показанном решении проблему обходят рядом с одним вызовом. Какое изменение исправляет саму границу темы «Надёжность в эксплуатации»?
DartDart · Надёжность в эксплуатации · исправление
Future<BenchmarkResult> benchmarkTimeline(List<Entry> input) async {
  final before = await measure(() => buildTimeline(input));
  final optimized = await measure(() => buildIndexedTimeline(input));
  return BenchmarkResult(before: before, after: optimized);
}

// Контекст задания: выбор места исправления.
Вопрос 28 из 30
Что в поведении этого кода гарантировано правилами темы «Надёжность в эксплуатации», а не случайно совпало в одном запуске?
DartDart · Надёжность в эксплуатации · семантика
Future<BenchmarkResult> benchmarkTimeline(List<Entry> input) async {
  final before = await measure(() => buildTimeline(input));
  final optimized = await measure(() => buildIndexedTimeline(input));
  return BenchmarkResult(before: before, after: optimized);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 29 из 30
Как сформулировать публичное обещание темы «Надёжность в эксплуатации», не привязывая клиента к конкретному классу?
Вопрос 30 из 30
Перед обновлением зависимости нужно защитить исправление «Надёжность в эксплуатации». Какая проверка подходит лучше всего?

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

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

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

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