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

Аудит промышленного проекта на Dart

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 85 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 30
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Структура»?
DartDart · Структура · исправление
// lib/features/checkout/checkout.dart
export 'presentation/checkout_page.dart' show CheckoutPage;
export 'application/checkout.dart' show Checkout;
// Infrastructure remains private to the feature.

// Контекст задания: выбор места исправления.
Вопрос 2 из 30
Обычный путь в коде зелёный. Как построить проверку «Структура», чтобы не пропустить различия между отказами?
DartDart · Структура · границы
// lib/features/checkout/checkout.dart
export 'presentation/checkout_page.dart' show CheckoutPage;
export 'application/checkout.dart' show Checkout;
// Infrastructure remains private to the feature.

// Контекст задания: анализ граничных входов.
Вопрос 3 из 30
Что здесь следует считать правилом «Структура», а что — лишь деталью текущей реализации?
DartDart · Структура · семантика
// lib/features/checkout/checkout.dart
export 'presentation/checkout_page.dart' show CheckoutPage;
export 'application/checkout.dart' show Checkout;
// Infrastructure remains private to the feature.

// Контекст задания: проверка семантики фрагмента.
Вопрос 4 из 30
Что должно оставаться неизменным при замене реализации темы «Структура»?
Вопрос 5 из 30
Какая регрессия для «Структура» будет падать на старом дефекте и не ломаться от безопасной перестройки кода?
Вопрос 6 из 30
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Качество кода» отвечает этому требованию?
HTML/XMLКонфигурация · Качество кода · исправление
analyzer:
  errors:
    invalid_use_of_visible_for_testing_member: error
linter:
  rules:
    - avoid_dynamic_calls
    - discarded_futures
    - unawaited_futures

# Контекст задания: выбор места исправления.
Вопрос 7 из 30
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Качество кода»?
HTML/XMLКонфигурация · Качество кода · семантика
analyzer:
  errors:
    invalid_use_of_visible_for_testing_member: error
linter:
  rules:
    - avoid_dynamic_calls
    - discarded_futures
    - unawaited_futures

# Контекст задания: проверка семантики фрагмента.
Вопрос 8 из 30
Обычный путь в коде зелёный. Как построить проверку «Качество кода», чтобы не пропустить различия между отказами?
HTML/XMLКонфигурация · Качество кода · границы
analyzer:
  errors:
    invalid_use_of_visible_for_testing_member: error
linter:
  rules:
    - avoid_dynamic_calls
    - discarded_futures
    - unawaited_futures

# Контекст задания: анализ граничных входов.
Вопрос 9 из 30
Какой сценарий должен стать постоянной проверкой после исправления «Качество кода»?
Вопрос 10 из 30
Что должно оставаться неизменным при замене реализации темы «Качество кода»?
Вопрос 11 из 30
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Зависимости» всё ещё нужно проверить раздельно? В этом наборе спорный случай — «отсутствие пути замены».
BashКомандная строка · Зависимости · границы
dart pub outdated
dart pub deps --style=compact
dart analyze
# Review license, maintenance, advisories, and replacement cost before adoption.

# Контекст задания: анализ граничных входов.
Вопрос 12 из 30
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Зависимости» отвечает этому требованию? В этом наборе спорный случай — «отсутствие пути замены».
BashКомандная строка · Зависимости · исправление
dart pub outdated
dart pub deps --style=compact
dart analyze
# Review license, maintenance, advisories, and replacement cost before adoption.

# Контекст задания: выбор места исправления.
Вопрос 13 из 30
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Зависимости»?
BashКомандная строка · Зависимости · семантика
dart pub outdated
dart pub deps --style=compact
dart analyze
# Review license, maintenance, advisories, and replacement cost before adoption.

# Контекст задания: проверка семантики фрагмента.
Вопрос 14 из 30
Какой контракт по теме «Зависимости» отделяет наблюдаемое поведение от внутренних шагов? В этом наборе спорный случай — «отсутствие пути замены».
Вопрос 15 из 30
Какой сценарий должен стать постоянной проверкой после исправления «Зависимости»?
Вопрос 16 из 30
Код проходит обычный сценарий. Какие проверки по теме «План улучшений» нужны, чтобы разные граничные исходы не слились в один?
DartDart · План улучшений · границы
abstract interface class PaymentGateway {
  Future<Receipt> charge(PaymentRequest request);
}

final class MigratingPaymentGateway implements PaymentGateway {
  MigratingPaymentGateway(this.legacy, this.next, this.flags);
  final PaymentGateway legacy;
  final PaymentGateway next;
  final FeatureFlags flags;
  @override Future<Receipt> charge(PaymentRequest request) =>
      flags.newPayments ? next.charge(request) : legacy.charge(request);
}

// Контекст задания: анализ граничных входов.
Вопрос 17 из 30
Что в поведении этого кода гарантировано правилами темы «План улучшений», а не случайно совпало в одном запуске?
DartDart · План улучшений · семантика
abstract interface class PaymentGateway {
  Future<Receipt> charge(PaymentRequest request);
}

final class MigratingPaymentGateway implements PaymentGateway {
  MigratingPaymentGateway(this.legacy, this.next, this.flags);
  final PaymentGateway legacy;
  final PaymentGateway next;
  final FeatureFlags flags;
  @override Future<Receipt> charge(PaymentRequest request) =>
      flags.newPayments ? next.charge(request) : legacy.charge(request);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 18 из 30
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «План улучшений» отвечает этому требованию?
DartDart · План улучшений · исправление
abstract interface class PaymentGateway {
  Future<Receipt> charge(PaymentRequest request);
}

final class MigratingPaymentGateway implements PaymentGateway {
  MigratingPaymentGateway(this.legacy, this.next, this.flags);
  final PaymentGateway legacy;
  final PaymentGateway next;
  final FeatureFlags flags;
  @override Future<Receipt> charge(PaymentRequest request) =>
      flags.newPayments ? next.charge(request) : legacy.charge(request);
}

// Контекст задания: выбор места исправления.
Вопрос 19 из 30
Перед обновлением зависимости нужно защитить исправление «План улучшений». Какая проверка подходит лучше всего?
Вопрос 20 из 30
Какой контракт по теме «План улучшений» отделяет наблюдаемое поведение от внутренних шагов?
Вопрос 21 из 30
Какое утверждение корректно связывает показанный код с семантикой темы «Технический долг»?
DartDart · Технический долг · семантика
final class DebtItem {
  const DebtItem({required this.constraint, required this.impact, required this.owner, required this.exitCondition});
  final String constraint;
  final String impact;
  final Team owner;
  final bool Function(ProjectState) exitCondition;
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 22 из 30
В показанном решении проблему обходят рядом с одним вызовом. Какое изменение исправляет саму границу темы «Технический долг»?
DartDart · Технический долг · исправление
final class DebtItem {
  const DebtItem({required this.constraint, required this.impact, required this.owner, required this.exitCondition});
  final String constraint;
  final String impact;
  final Team owner;
  final bool Function(ProjectState) exitCondition;
}

// Контекст задания: выбор места исправления.
Вопрос 23 из 30
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Технический долг» всё ещё нужно проверить раздельно?
DartDart · Технический долг · границы
final class DebtItem {
  const DebtItem({required this.constraint, required this.impact, required this.owner, required this.exitCondition});
  final String constraint;
  final String impact;
  final Team owner;
  final bool Function(ProjectState) exitCondition;
}

// Контекст задания: анализ граничных входов.
Вопрос 24 из 30
Как сформулировать публичное обещание темы «Технический долг», не привязывая клиента к конкретному классу?
Вопрос 25 из 30
Перед обновлением зависимости нужно защитить исправление «Технический долг». Какая проверка подходит лучше всего?
Вопрос 26 из 30
Какой тезис о коде «Эволюция архитектуры» можно защитить без ссылки на удачный тестовый запуск?
DartDart · Эволюция архитектуры · семантика
@Deprecated('Remove after all clients move to CheckoutV2; target 2026-10-01')
final class CheckoutAdapter implements CheckoutApi {
  CheckoutAdapter(this.next);
  final CheckoutV2 next;
  @override Future<Receipt> pay(LegacyCart cart) => next.pay(cart.toV2());
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 27 из 30
Команда хочет сократить набор проверок для «Эволюция архитектуры» до одного сценария. Какой вариант сохраняет важные различия?
DartDart · Эволюция архитектуры · границы
@Deprecated('Remove after all clients move to CheckoutV2; target 2026-10-01')
final class CheckoutAdapter implements CheckoutApi {
  CheckoutAdapter(this.next);
  final CheckoutV2 next;
  @override Future<Receipt> pay(LegacyCart cart) => next.pay(cart.toV2());
}

// Контекст задания: анализ граничных входов.
Вопрос 28 из 30
В показанном решении проблему обходят рядом с одним вызовом. Какое изменение исправляет саму границу темы «Эволюция архитектуры»?
DartDart · Эволюция архитектуры · исправление
@Deprecated('Remove after all clients move to CheckoutV2; target 2026-10-01')
final class CheckoutAdapter implements CheckoutApi {
  CheckoutAdapter(this.next);
  final CheckoutV2 next;
  @override Future<Receipt> pay(LegacyCart cart) => next.pay(cart.toV2());
}

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

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

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

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

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