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

Списки, множества и отображения

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 20
Фрагмент выглядит убедительно на типичных данных. Какие входы по теме «Коллекции» нельзя проверять одним общим ожиданием?
DartDart · Коллекции · границы
void main() {
  final tags = <String>{'dart', 'flutter', 'dart'};
  final lengths = <String, int>{for (final t in tags) t: t.length};
  print('${tags.length}:${lengths['flutter']}');
}

// Контекст задания: анализ граничных входов.
Вопрос 2 из 20
Какое изменение показанного кода исправляет правило «Коллекции», а не маскирует один его симптом?
DartDart · Коллекции · исправление
void main() {
  final tags = <String>{'dart', 'flutter', 'dart'};
  final lengths = <String, int>{for (final t in tags) t: t.length};
  print('${tags.length}:${lengths['flutter']}');
}

// Контекст задания: выбор места исправления.
Вопрос 3 из 20
Что здесь следует считать правилом «Коллекции», а что — лишь деталью текущей реализации?
DartDart · Коллекции · семантика
void main() {
  final tags = <String>{'dart', 'flutter', 'dart'};
  final lengths = <String, int>{for (final t in tags) t: t.length};
  print('${tags.length}:${lengths['flutter']}');
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 4 из 20
Что должно оставаться неизменным при замене реализации темы «Коллекции»?
Вопрос 5 из 20
Какая регрессия для «Коллекции» будет падать на старом дефекте и не ломаться от безопасной перестройки кода?
Вопрос 6 из 20
На ревью спорят, достаточно ли одного сквозного теста для «Spread-оператор». Какой набор действительно раскрывает границы поведения?
DartDart · Spread-оператор · границы
void main() {
  List<int>? extra = [3, 4];
  final values = <int>[1, 2, ...?extra, 5];
  extra[0] = 99;
  print(values);
}

// Контекст задания: анализ граничных входов.
Вопрос 7 из 20
На какую гарантию языка или интерфейса можно опереться при разборе этого кода по теме «Spread-оператор»?
DartDart · Spread-оператор · семантика
void main() {
  List<int>? extra = [3, 4];
  final values = <int>[1, 2, ...?extra, 5];
  extra[0] = 99;
  print(values);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 8 из 20
Какое изменение показанного кода исправляет правило «Spread-оператор», а не маскирует один его симптом?
DartDart · Spread-оператор · исправление
void main() {
  List<int>? extra = [3, 4];
  final values = <int>[1, 2, ...?extra, 5];
  extra[0] = 99;
  print(values);
}

// Контекст задания: выбор места исправления.
Вопрос 9 из 20
Какой сценарий должен стать постоянной проверкой после исправления «Spread-оператор»?
Вопрос 10 из 20
Что должно оставаться неизменным при замене реализации темы «Spread-оператор»?
Вопрос 11 из 20
Что в поведении этого кода гарантировано правилами темы «Условия и циклы внутри коллекций», а не случайно совпало в одном запуске?
DartDart · Условия и циклы внутри коллекций · семантика
List<String> menu(bool admin, List<String> projects) => <String>[
  'home',
  if (admin) 'settings',
  for (final p in projects) 'project:$p',
];
void main() => print(menu(false, ['a', 'b']));

// Контекст задания: проверка семантики фрагмента.
Вопрос 12 из 20
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Условия и циклы внутри коллекций» отвечает этому требованию?
DartDart · Условия и циклы внутри коллекций · исправление
List<String> menu(bool admin, List<String> projects) => <String>[
  'home',
  if (admin) 'settings',
  for (final p in projects) 'project:$p',
];
void main() => print(menu(false, ['a', 'b']));

// Контекст задания: выбор места исправления.
Вопрос 13 из 20
Фрагмент выглядит убедительно на типичных данных. Какие входы по теме «Условия и циклы внутри коллекций» нельзя проверять одним общим ожиданием?
DartDart · Условия и циклы внутри коллекций · границы
List<String> menu(bool admin, List<String> projects) => <String>[
  'home',
  if (admin) 'settings',
  for (final p in projects) 'project:$p',
];
void main() => print(menu(false, ['a', 'b']));

// Контекст задания: анализ граничных входов.
Вопрос 14 из 20
Какой контракт по теме «Условия и циклы внутри коллекций» отделяет наблюдаемое поведение от внутренних шагов?
Вопрос 15 из 20
Какой сценарий должен стать постоянной проверкой после исправления «Условия и циклы внутри коллекций»?
Вопрос 16 из 20
Какое утверждение о показанном фрагменте и теме «Неизменяемые данные» опирается на реальную гарантию Dart или используемого интерфейса?
DartDart · Неизменяемые данные · семантика
class Item { Item(this.value); int value; }
void main() {
  final source = [Item(1)];
  final view = List<Item>.unmodifiable(source);
  source.first.value = 9;
  print(view.first.value);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 17 из 20
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Неизменяемые данные» всё ещё нужно проверить раздельно?
DartDart · Неизменяемые данные · границы
class Item { Item(this.value); int value; }
void main() {
  final source = [Item(1)];
  final view = List<Item>.unmodifiable(source);
  source.first.value = 9;
  print(view.first.value);
}

// Контекст задания: анализ граничных входов.
Вопрос 18 из 20
На ревью просят не размножать проверки по вызывающему коду. Какое исправление для «Неизменяемые данные» отвечает этому требованию?
DartDart · Неизменяемые данные · исправление
class Item { Item(this.value); int value; }
void main() {
  final source = [Item(1)];
  final view = List<Item>.unmodifiable(source);
  source.first.value = 9;
  print(view.first.value);
}

// Контекст задания: выбор места исправления.
Вопрос 19 из 20
Перед обновлением зависимости нужно защитить исправление «Неизменяемые данные». Какая проверка подходит лучше всего?
Вопрос 20 из 20
Какой контракт по теме «Неизменяемые данные» отделяет наблюдаемое поведение от внутренних шагов?

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

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

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

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