DT Dart  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Условия, циклы и сопоставление шаблонов

Тест по теме «Условия, циклы и сопоставление шаблонов» охватывает «Ветвления», «Циклы», «Сопоставление с шаблонами» и «Управление выполнением». В 20 вопросах нужно читать код, различать граничные случаи, выбирать место исправления, формулировать внешний договор и проектировать регрессионную проверку. Заданий с фрагментами кода — 12; в каждом вопросе один правильный ответ из пяти.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 20
Что здесь следует считать правилом «Ветвления», а что — лишь деталью текущей реализации?
DartDart · Ветвления · семантика
String grade(int score) => switch (score) {
  >= 90 => 'A',
  >= 75 => 'B',
  _ => 'C',
};
void main() => print(grade(82));

// Контекст задания: проверка семантики фрагмента.
Вопрос 2 из 20
Текущая защита работает лишь в одном сценарии. Что следует изменить в самом решении по теме «Ветвления»?
DartDart · Ветвления · исправление
String grade(int score) => switch (score) {
  >= 90 => 'A',
  >= 75 => 'B',
  _ => 'C',
};
void main() => print(grade(82));

// Контекст задания: выбор места исправления.
Вопрос 3 из 20
Команда хочет сократить набор проверок для «Ветвления» до одного сценария. Какой вариант сохраняет важные различия?
DartDart · Ветвления · границы
String grade(int score) => switch (score) {
  >= 90 => 'A',
  >= 75 => 'B',
  _ => 'C',
};
void main() => print(grade(82));

// Контекст задания: анализ граничных входов.
Вопрос 4 из 20
Две реализации решают задачу «Ветвления» по-разному. Какое требование делает их взаимозаменяемыми для клиента?
Вопрос 5 из 20
Ручная проверка по теме «Ветвления» прошла. Как превратить её в полезную автоматическую регрессию?
Вопрос 6 из 20
Какое описание семантики показанного решения по теме «Циклы» является точным?
DartDart · Циклы · семантика
void main() {
  final values = <int>[2, 4, 6, 8];
  var sum = 0;
  for (var i = 0; i < values.length; i += 2) {
    sum += values[i];
  }
  print(sum);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 7 из 20
Для показанного решения написали один тест на успех. Какой набор граничных сценариев по теме «Циклы» должен появиться рядом?
DartDart · Циклы · границы
void main() {
  final values = <int>[2, 4, 6, 8];
  var sum = 0;
  for (var i = 0; i < values.length; i += 2) {
    sum += values[i];
  }
  print(sum);
}

// Контекст задания: анализ граничных входов.
Вопрос 8 из 20
Текущая защита работает лишь в одном сценарии. Что следует изменить в самом решении по теме «Циклы»?
DartDart · Циклы · исправление
void main() {
  final values = <int>[2, 4, 6, 8];
  var sum = 0;
  for (var i = 0; i < values.length; i += 2) {
    sum += values[i];
  }
  print(sum);
}

// Контекст задания: выбор места исправления.
Вопрос 9 из 20
Какая регрессия для «Циклы» будет падать на старом дефекте и не ломаться от безопасной перестройки кода?
Вопрос 10 из 20
Две реализации решают задачу «Циклы» по-разному. Какое требование делает их взаимозаменяемыми для клиента?
Вопрос 11 из 20
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Сопоставление с шаблонами»?
DartDart · Сопоставление с шаблонами · исправление
String describe(Object value) => switch (value) {
  (int x, int y) when x == y => 'diagonal $x',
  (int x, int y) => 'point ${x + y}',
  _ => 'other',
};
void main() => print(describe((3, 3)));

// Контекст задания: выбор места исправления.
Вопрос 12 из 20
Обычный путь в коде зелёный. Как построить проверку «Сопоставление с шаблонами», чтобы не пропустить различия между отказами?
DartDart · Сопоставление с шаблонами · границы
String describe(Object value) => switch (value) {
  (int x, int y) when x == y => 'diagonal $x',
  (int x, int y) => 'point ${x + y}',
  _ => 'other',
};
void main() => print(describe((3, 3)));

// Контекст задания: анализ граничных входов.
Вопрос 13 из 20
Что здесь следует считать правилом «Сопоставление с шаблонами», а что — лишь деталью текущей реализации?
DartDart · Сопоставление с шаблонами · семантика
String describe(Object value) => switch (value) {
  (int x, int y) when x == y => 'diagonal $x',
  (int x, int y) => 'point ${x + y}',
  _ => 'other',
};
void main() => print(describe((3, 3)));

// Контекст задания: проверка семантики фрагмента.
Вопрос 14 из 20
Что должно оставаться неизменным при замене реализации темы «Сопоставление с шаблонами»?
Вопрос 15 из 20
Какая регрессия для «Сопоставление с шаблонами» будет падать на старом дефекте и не ломаться от безопасной перестройки кода?
Вопрос 16 из 20
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Управление выполнением» отвечает этому требованию?
DartDart · Управление выполнением · исправление
void main() {
outer:
  for (var row = 0; row < 3; row++) {
    for (var col = 0; col < 3; col++) {
      if (row + col == 2) continue outer;
      print('$row:$col');
    }
  }
}

// Контекст задания: выбор места исправления.
Вопрос 17 из 20
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Управление выполнением»?
DartDart · Управление выполнением · семантика
void main() {
outer:
  for (var row = 0; row < 3; row++) {
    for (var col = 0; col < 3; col++) {
      if (row + col == 2) continue outer;
      print('$row:$col');
    }
  }
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 18 из 20
Обычный путь в коде зелёный. Как построить проверку «Управление выполнением», чтобы не пропустить различия между отказами?
DartDart · Управление выполнением · границы
void main() {
outer:
  for (var row = 0; row < 3; row++) {
    for (var col = 0; col < 3; col++) {
      if (row + col == 2) continue outer;
      print('$row:$col');
    }
  }
}

// Контекст задания: анализ граничных входов.
Вопрос 19 из 20
Какой сценарий должен стать постоянной проверкой после исправления «Управление выполнением»?
Вопрос 20 из 20
Что должно оставаться неизменным при замене реализации темы «Управление выполнением»?

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

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

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

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