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

Типы, переменные и null safety

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 20
Что здесь следует считать правилом «Вывод типов», а что — лишь деталью текущей реализации?
DartDart · Вывод типов · семантика
void main() {
  var count = 3;
  final label = 'items';
  // count = 3.5; // анализатор отклонит
  print('$count $label');
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 2 из 20
Код прошёл демонстрационный пример, но границы не разобраны. Что нужно проверить отдельно в теме «Вывод типов»?
DartDart · Вывод типов · границы
void main() {
  var count = 3;
  final label = 'items';
  // count = 3.5; // анализатор отклонит
  print('$count $label');
}

// Контекст задания: анализ граничных входов.
Вопрос 3 из 20
Какой вариант правки убирает источник дефекта «Вывод типов» и не заставляет клиентов дублировать защиту?
DartDart · Вывод типов · исправление
void main() {
  var count = 3;
  final label = 'items';
  // count = 3.5; // анализатор отклонит
  print('$count $label');
}

// Контекст задания: выбор места исправления.
Вопрос 4 из 20
После исправления темы «Вывод типов» нужен тест, который переживёт рефакторинг. Что следует закрепить?
Вопрос 5 из 20
Внутреннее устройство решения «Вывод типов» меняется. Какой внешний договор обязан сохраниться?
Вопрос 6 из 20
Какое изменение показанного кода исправляет правило «Nullable-типы», а не маскирует один его симптом?
DartDart · Nullable-типы · исправление
int? read(bool ok) => ok ? 7 : null;
void main() {
  final value = read(false);
  final doubled = value == null ? 0 : value * 2;
  print(doubled);
}

// Контекст задания: выбор места исправления.
Вопрос 7 из 20
Для показанного решения написали один тест на успех. Какой набор граничных сценариев по теме «Nullable-типы» должен появиться рядом?
DartDart · Nullable-типы · границы
int? read(bool ok) => ok ? 7 : null;
void main() {
  final value = read(false);
  final doubled = value == null ? 0 : value * 2;
  print(doubled);
}

// Контекст задания: анализ граничных входов.
Вопрос 8 из 20
Какой тезис о коде «Nullable-типы» можно защитить без ссылки на удачный тестовый запуск?
DartDart · Nullable-типы · семантика
int? read(bool ok) => ok ? 7 : null;
void main() {
  final value = read(false);
  final doubled = value == null ? 0 : value * 2;
  print(doubled);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 9 из 20
Какой договор позволяет тестировать «Nullable-типы» через результат, а не через приватные детали?
Вопрос 10 из 20
После исправления темы «Nullable-типы» нужен тест, который переживёт рефакторинг. Что следует закрепить?
Вопрос 11 из 20
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Операторы проверки»?
DartDart · Операторы проверки · исправление
void main() {
  String? name;
  name ??= 'guest';
  final length = name?.trim().length ?? 0;
  print('$name:$length');
}

// Контекст задания: выбор места исправления.
Вопрос 12 из 20
Какое описание семантики показанного решения по теме «Операторы проверки» является точным?
DartDart · Операторы проверки · семантика
void main() {
  String? name;
  name ??= 'guest';
  final length = name?.trim().length ?? 0;
  print('$name:$length');
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 13 из 20
Для показанного решения написали один тест на успех. Какой набор граничных сценариев по теме «Операторы проверки» должен появиться рядом?
DartDart · Операторы проверки · границы
void main() {
  String? name;
  name ??= 'guest';
  final length = name?.trim().length ?? 0;
  print('$name:$length');
}

// Контекст задания: анализ граничных входов.
Вопрос 14 из 20
Что добавить в набор тестов, чтобы ошибка по теме «Операторы проверки» не вернулась незаметно?
Вопрос 15 из 20
Какой договор позволяет тестировать «Операторы проверки» через результат, а не через приватные детали?
Вопрос 16 из 20
На ревью спорят, достаточно ли одного сквозного теста для «Безопасная инициализация». Какой набор действительно раскрывает границы поведения?
DartDart · Безопасная инициализация · границы
class Session {
  late final String token;
  void open(String value) => token = value;
}
void main() {
  final s = Session();
  s.open('abc');
  print(s.token.length);
}

// Контекст задания: анализ граничных входов.
Вопрос 17 из 20
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Безопасная инициализация»?
DartDart · Безопасная инициализация · исправление
class Session {
  late final String token;
  void open(String value) => token = value;
}
void main() {
  final s = Session();
  s.open('abc');
  print(s.token.length);
}

// Контекст задания: выбор места исправления.
Вопрос 18 из 20
Какое описание семантики показанного решения по теме «Безопасная инициализация» является точным?
DartDart · Безопасная инициализация · семантика
class Session {
  late final String token;
  void open(String value) => token = value;
}
void main() {
  final s = Session();
  s.open('abc');
  print(s.token.length);
}

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

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

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

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

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