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

Генерация кода и метаданные

Тест по теме «Генерация кода и метаданные» охватывает «Аннотации», «Запуск генераторов build_runner», «Генераторы исходного кода», «Контроль артефактов», «Границы применимости» и «Сопровождение проекта». В 30 вопросах нужно читать код, различать граничные случаи, выбирать место исправления, формулировать внешний договор и проектировать регрессионную проверку. Заданий с фрагментами кода — 18; в каждом вопросе один правильный ответ из пяти.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 85 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 30
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Аннотации» отвечает этому требованию?
DartDart · Аннотации · исправление
class GenerateCodec {
  const GenerateCodec({required this.version});
  final int version;
}

@GenerateCodec(version: 2)
final class EventDto { const EventDto(this.id); final String id; }

// Контекст задания: выбор места исправления.
Вопрос 2 из 30
Фрагмент выглядит убедительно на типичных данных. Какие входы по теме «Аннотации» нельзя проверять одним общим ожиданием?
DartDart · Аннотации · границы
class GenerateCodec {
  const GenerateCodec({required this.version});
  final int version;
}

@GenerateCodec(version: 2)
final class EventDto { const EventDto(this.id); final String id; }

// Контекст задания: анализ граничных входов.
Вопрос 3 из 30
Какое описание семантики показанного решения по теме «Аннотации» является точным?
DartDart · Аннотации · семантика
class GenerateCodec {
  const GenerateCodec({required this.version});
  final int version;
}

@GenerateCodec(version: 2)
final class EventDto { const EventDto(this.id); final String id; }

// Контекст задания: проверка семантики фрагмента.
Вопрос 4 из 30
Команда хочет свободно менять устройство решения «Аннотации». Какое требование нельзя нарушить?
Вопрос 5 из 30
Что добавить в набор тестов, чтобы ошибка по теме «Аннотации» не вернулась незаметно?
Вопрос 6 из 30
Локальная заплатка помогла только одному клиенту этого кода. Какая правка устраняет причину в теме «Запуск генераторов build_runner»?
BashКомандная строка · Запуск генераторов build_runner · исправление
dart pub get --enforce-lockfile
dart run build_runner build --delete-conflicting-outputs
git diff --exit-code -- '*.g.dart'

# Контекст задания: выбор места исправления.
Вопрос 7 из 30
Какой вывод о фрагменте «Запуск генераторов build_runner» останется верным после безопасного рефакторинга?
BashКомандная строка · Запуск генераторов build_runner · семантика
dart pub get --enforce-lockfile
dart run build_runner build --delete-conflicting-outputs
git diff --exit-code -- '*.g.dart'

# Контекст задания: проверка семантики фрагмента.
Вопрос 8 из 30
Фрагмент выглядит убедительно на типичных данных. Какие входы по теме «Запуск генераторов build_runner» нельзя проверять одним общим ожиданием?
BashКомандная строка · Запуск генераторов build_runner · границы
dart pub get --enforce-lockfile
dart run build_runner build --delete-conflicting-outputs
git diff --exit-code -- '*.g.dart'

# Контекст задания: анализ граничных входов.
Вопрос 9 из 30
Как проверить тему «Запуск генераторов build_runner» через публичный результат, не цепляясь за устройство реализации?
Вопрос 10 из 30
Команда хочет свободно менять устройство решения «Запуск генераторов build_runner». Какое требование нельзя нарушить?
Вопрос 11 из 30
Код проходит обычный сценарий. Какие проверки по теме «Генераторы исходного кода» нужны, чтобы разные граничные исходы не слились в один?
DartDart · Генераторы исходного кода · границы
String generateFieldList(Iterable<FieldElement> fields) {
  final ordered = fields.toList()..sort((a, b) => a.name.compareTo(b.name));
  return ordered.map((field) => "'${field.name}'").join(', ');
}

// Контекст задания: анализ граничных входов.
Вопрос 12 из 30
Локальная заплатка помогла только одному клиенту этого кода. Какая правка устраняет причину в теме «Генераторы исходного кода»?
DartDart · Генераторы исходного кода · исправление
String generateFieldList(Iterable<FieldElement> fields) {
  final ordered = fields.toList()..sort((a, b) => a.name.compareTo(b.name));
  return ordered.map((field) => "'${field.name}'").join(', ');
}

// Контекст задания: выбор места исправления.
Вопрос 13 из 30
Какой вывод о фрагменте «Генераторы исходного кода» останется верным после безопасного рефакторинга?
DartDart · Генераторы исходного кода · семантика
String generateFieldList(Iterable<FieldElement> fields) {
  final ordered = fields.toList()..sort((a, b) => a.name.compareTo(b.name));
  return ordered.map((field) => "'${field.name}'").join(', ');
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 14 из 30
Одна реализация темы «Генераторы исходного кода» заменяется другой. Что внешний код вправе ожидать после замены?
Вопрос 15 из 30
Как проверить тему «Генераторы исходного кода» через публичный результат, не цепляясь за устройство реализации?
Вопрос 16 из 30
Команда хочет сократить набор проверок для «Контроль артефактов» до одного сценария. Какой вариант сохраняет важные различия?
BashКомандная строка · Контроль артефактов · границы
rm -rf .dart_tool/build
dart pub get --enforce-lockfile
dart run build_runner build
git diff --exit-code -- lib

# Контекст задания: анализ граничных входов.
Вопрос 17 из 30
Какое утверждение о показанном фрагменте и теме «Контроль артефактов» опирается на реальную гарантию Dart или используемого интерфейса?
BashКомандная строка · Контроль артефактов · семантика
rm -rf .dart_tool/build
dart pub get --enforce-lockfile
dart run build_runner build
git diff --exit-code -- lib

# Контекст задания: проверка семантики фрагмента.
Вопрос 18 из 30
Локальная заплатка помогла только одному клиенту этого кода. Какая правка устраняет причину в теме «Контроль артефактов»?
BashКомандная строка · Контроль артефактов · исправление
rm -rf .dart_tool/build
dart pub get --enforce-lockfile
dart run build_runner build
git diff --exit-code -- lib

# Контекст задания: выбор места исправления.
Вопрос 19 из 30
Какой тест действительно поймает возврат дефекта в теме «Контроль артефактов»?
Вопрос 20 из 30
Одна реализация темы «Контроль артефактов» заменяется другой. Что внешний код вправе ожидать после замены?
Вопрос 21 из 30
Какой тезис о коде «Границы применимости» можно защитить без ссылки на удачный тестовый запуск?
DartDart · Границы применимости · семантика
Money calculateInvoice(Invoice invoice, TaxPolicy policy) {
  // Subject rules stay explicit: they change often and need ordinary tests.
  return invoice.lines.fold(Money.zero, (sum, line) => sum + policy.totalFor(line));
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 22 из 30
Какой вариант правки убирает источник дефекта «Границы применимости» и не заставляет клиентов дублировать защиту?
DartDart · Границы применимости · исправление
Money calculateInvoice(Invoice invoice, TaxPolicy policy) {
  // Subject rules stay explicit: they change often and need ordinary tests.
  return invoice.lines.fold(Money.zero, (sum, line) => sum + policy.totalFor(line));
}

// Контекст задания: выбор места исправления.
Вопрос 23 из 30
Код проходит обычный сценарий. Какие проверки по теме «Границы применимости» нужны, чтобы разные граничные исходы не слились в один?
DartDart · Границы применимости · границы
Money calculateInvoice(Invoice invoice, TaxPolicy policy) {
  // Subject rules stay explicit: they change often and need ordinary tests.
  return invoice.lines.fold(Money.zero, (sum, line) => sum + policy.totalFor(line));
}

// Контекст задания: анализ граничных входов.
Вопрос 24 из 30
Внутреннее устройство решения «Границы применимости» меняется. Какой внешний договор обязан сохраниться?
Вопрос 25 из 30
Какой тест действительно поймает возврат дефекта в теме «Границы применимости»?
Вопрос 26 из 30
Что здесь следует считать правилом «Сопровождение проекта», а что — лишь деталью текущей реализации?
DartDart · Сопровождение проекта · семантика
test('generator reports two fields with the same wire name', () async {
  final result = await runGenerator('duplicate_wire_name.dart');
  expect(result.errors.single.message, contains('wire name'));
});

// Контекст задания: проверка семантики фрагмента.
Вопрос 27 из 30
Код прошёл демонстрационный пример, но границы не разобраны. Что нужно проверить отдельно в теме «Сопровождение проекта»?
DartDart · Сопровождение проекта · границы
test('generator reports two fields with the same wire name', () async {
  final result = await runGenerator('duplicate_wire_name.dart');
  expect(result.errors.single.message, contains('wire name'));
});

// Контекст задания: анализ граничных входов.
Вопрос 28 из 30
Какой вариант правки убирает источник дефекта «Сопровождение проекта» и не заставляет клиентов дублировать защиту?
DartDart · Сопровождение проекта · исправление
test('generator reports two fields with the same wire name', () async {
  final result = await runGenerator('duplicate_wire_name.dart');
  expect(result.errors.single.message, contains('wire name'));
});

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

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

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

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

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