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

Функции и именованные параметры

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 20
Команда хочет сократить набор проверок для «Сигнатуры» до одного сценария. Какой вариант сохраняет важные различия?
DartDart · Сигнатуры · границы
int transform(int value, int Function(int) op) => op(value);
void main() {
  final result = transform(4, (x) => x * x - 1);
  print(result);
}

// Контекст задания: анализ граничных входов.
Вопрос 2 из 20
Какое утверждение о показанном фрагменте и теме «Сигнатуры» опирается на реальную гарантию Dart или используемого интерфейса?
DartDart · Сигнатуры · семантика
int transform(int value, int Function(int) op) => op(value);
void main() {
  final result = transform(4, (x) => x * x - 1);
  print(result);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 3 из 20
Локальная заплатка помогла только одному клиенту этого кода. Какая правка устраняет причину в теме «Сигнатуры»?
DartDart · Сигнатуры · исправление
int transform(int value, int Function(int) op) => op(value);
void main() {
  final result = transform(4, (x) => x * x - 1);
  print(result);
}

// Контекст задания: выбор места исправления.
Вопрос 4 из 20
Какой тест действительно поймает возврат дефекта в теме «Сигнатуры»?
Вопрос 5 из 20
Одна реализация темы «Сигнатуры» заменяется другой. Что внешний код вправе ожидать после замены?
Вопрос 6 из 20
Какой тезис о коде «Необязательные параметры» можно защитить без ссылки на удачный тестовый запуск?
DartDart · Необязательные параметры · семантика
String connect({required String host, int port = 443, bool tls = true}) {
  return '${tls ? 'https' : 'http'}://$host:$port';
}
void main() => print(connect(host: 'api.example'));

// Контекст задания: проверка семантики фрагмента.
Вопрос 7 из 20
Какой вариант правки убирает источник дефекта «Необязательные параметры» и не заставляет клиентов дублировать защиту?
DartDart · Необязательные параметры · исправление
String connect({required String host, int port = 443, bool tls = true}) {
  return '${tls ? 'https' : 'http'}://$host:$port';
}
void main() => print(connect(host: 'api.example'));

// Контекст задания: выбор места исправления.
Вопрос 8 из 20
Код проходит обычный сценарий. Какие проверки по теме «Необязательные параметры» нужны, чтобы разные граничные исходы не слились в один?
DartDart · Необязательные параметры · границы
String connect({required String host, int port = 443, bool tls = true}) {
  return '${tls ? 'https' : 'http'}://$host:$port';
}
void main() => print(connect(host: 'api.example'));

// Контекст задания: анализ граничных входов.
Вопрос 9 из 20
Внутреннее устройство решения «Необязательные параметры» меняется. Какой внешний договор обязан сохраниться?
Вопрос 10 из 20
Какой тест действительно поймает возврат дефекта в теме «Необязательные параметры»?
Вопрос 11 из 20
Что здесь следует считать правилом «Замыкания», а что — лишь деталью текущей реализации?
DartDart · Замыкания · семантика
void main() {
  var factor = 2;
  final scale = (int value) => value * factor;
  factor = 5;
  print(scale(3));
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 12 из 20
Код прошёл демонстрационный пример, но границы не разобраны. Что нужно проверить отдельно в теме «Замыкания»?
DartDart · Замыкания · границы
void main() {
  var factor = 2;
  final scale = (int value) => value * factor;
  factor = 5;
  print(scale(3));
}

// Контекст задания: анализ граничных входов.
Вопрос 13 из 20
Какой вариант правки убирает источник дефекта «Замыкания» и не заставляет клиентов дублировать защиту?
DartDart · Замыкания · исправление
void main() {
  var factor = 2;
  final scale = (int value) => value * factor;
  factor = 5;
  print(scale(3));
}

// Контекст задания: выбор места исправления.
Вопрос 14 из 20
После исправления темы «Замыкания» нужен тест, который переживёт рефакторинг. Что следует закрепить?
Вопрос 15 из 20
Внутреннее устройство решения «Замыкания» меняется. Какой внешний договор обязан сохраниться?
Вопрос 16 из 20
Какое изменение показанного кода исправляет правило «Возвращаемые значения», а не маскирует один его симптом?
DartDart · Возвращаемые значения · исправление
Future<int> load(bool ok) async {
  if (!ok) return 0;
  await Future<void>.delayed(Duration.zero);
  return 12;
}
Future<void> main() async => print(await load(true));

// Контекст задания: выбор места исправления.
Вопрос 17 из 20
Для показанного решения написали один тест на успех. Какой набор граничных сценариев по теме «Возвращаемые значения» должен появиться рядом?
DartDart · Возвращаемые значения · границы
Future<int> load(bool ok) async {
  if (!ok) return 0;
  await Future<void>.delayed(Duration.zero);
  return 12;
}
Future<void> main() async => print(await load(true));

// Контекст задания: анализ граничных входов.
Вопрос 18 из 20
Какой тезис о коде «Возвращаемые значения» можно защитить без ссылки на удачный тестовый запуск?
DartDart · Возвращаемые значения · семантика
Future<int> load(bool ok) async {
  if (!ok) return 0;
  await Future<void>.delayed(Duration.zero);
  return 12;
}
Future<void> main() async => print(await load(true));

// Контекст задания: проверка семантики фрагмента.
Вопрос 19 из 20
Какой договор позволяет тестировать «Возвращаемые значения» через результат, а не через приватные детали?
Вопрос 20 из 20
После исправления темы «Возвращаемые значения» нужен тест, который переживёт рефакторинг. Что следует закрепить?

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

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

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

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