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

Обобщения и расширения типов

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 20
Что в поведении этого кода гарантировано правилами темы «Параметры типов», а не случайно совпало в одном запуске?
DartDart · Параметры типов · семантика
T firstOr<T>(List<T> values, T fallback) {
  return values.isEmpty ? fallback : values.first;
}
void main() => print(firstOr<int>([], 8));

// Контекст задания: проверка семантики фрагмента.
Вопрос 2 из 20
На ревью спорят, достаточно ли одного сквозного теста для «Параметры типов». Какой набор действительно раскрывает границы поведения?
DartDart · Параметры типов · границы
T firstOr<T>(List<T> values, T fallback) {
  return values.isEmpty ? fallback : values.first;
}
void main() => print(firstOr<int>([], 8));

// Контекст задания: анализ граничных входов.
Вопрос 3 из 20
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Параметры типов»?
DartDart · Параметры типов · исправление
T firstOr<T>(List<T> values, T fallback) {
  return values.isEmpty ? fallback : values.first;
}
void main() => print(firstOr<int>([], 8));

// Контекст задания: выбор места исправления.
Вопрос 4 из 20
Как проверить тему «Параметры типов» через публичный результат, не цепляясь за устройство реализации?
Вопрос 5 из 20
Команда хочет свободно менять устройство решения «Параметры типов». Какое требование нельзя нарушить?
Вопрос 6 из 20
В показанном решении проблему обходят рядом с одним вызовом. Какое изменение исправляет саму границу темы «Ограничения»?
DartDart · Ограничения · исправление
num sumValues<T extends num>(Iterable<T> values) {
  return values.fold<num>(0, (sum, value) => sum + value);
}
void main() => print(sumValues([1, 2.5, 3]));

// Контекст задания: выбор места исправления.
Вопрос 7 из 20
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Ограничения» всё ещё нужно проверить раздельно?
DartDart · Ограничения · границы
num sumValues<T extends num>(Iterable<T> values) {
  return values.fold<num>(0, (sum, value) => sum + value);
}
void main() => print(sumValues([1, 2.5, 3]));

// Контекст задания: анализ граничных входов.
Вопрос 8 из 20
Какой вывод о фрагменте «Ограничения» останется верным после безопасного рефакторинга?
DartDart · Ограничения · семантика
num sumValues<T extends num>(Iterable<T> values) {
  return values.fold<num>(0, (sum, value) => sum + value);
}
void main() => print(sumValues([1, 2.5, 3]));

// Контекст задания: проверка семантики фрагмента.
Вопрос 9 из 20
Одна реализация темы «Ограничения» заменяется другой. Что внешний код вправе ожидать после замены?
Вопрос 10 из 20
Как проверить тему «Ограничения» через публичный результат, не цепляясь за устройство реализации?
Вопрос 11 из 20
Какой вариант правки убирает источник дефекта «Методы расширения» и не заставляет клиентов дублировать защиту?
DartDart · Методы расширения · исправление
extension SafeFirst<T> on Iterable<T> {
  T? get firstOrNull {
    final it = iterator;
    return it.moveNext() ? it.current : null;
  }
}
void main() => print(<int>[].firstOrNull);

// Контекст задания: выбор места исправления.
Вопрос 12 из 20
Какое утверждение о показанном фрагменте и теме «Методы расширения» опирается на реальную гарантию Dart или используемого интерфейса?
DartDart · Методы расширения · семантика
extension SafeFirst<T> on Iterable<T> {
  T? get firstOrNull {
    final it = iterator;
    return it.moveNext() ? it.current : null;
  }
}
void main() => print(<int>[].firstOrNull);

// Контекст задания: проверка семантики фрагмента.
Вопрос 13 из 20
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Методы расширения» всё ещё нужно проверить раздельно?
DartDart · Методы расширения · границы
extension SafeFirst<T> on Iterable<T> {
  T? get firstOrNull {
    final it = iterator;
    return it.moveNext() ? it.current : null;
  }
}
void main() => print(<int>[].firstOrNull);

// Контекст задания: анализ граничных входов.
Вопрос 14 из 20
Какой тест действительно поймает возврат дефекта в теме «Методы расширения»?
Вопрос 15 из 20
Одна реализация темы «Методы расширения» заменяется другой. Что внешний код вправе ожидать после замены?
Вопрос 16 из 20
Код прошёл демонстрационный пример, но границы не разобраны. Что нужно проверить отдельно в теме «Повторное использование»?
DartDart · Повторное использование · границы
abstract interface class Decoder<T> {
  T decode(Object? raw);
}

T load<T>(Object? raw, Decoder<T> decoder) {
  return decoder.decode(raw);
}

// Контекст задания: анализ граничных входов.
Вопрос 17 из 20
Какой вариант правки убирает источник дефекта «Повторное использование» и не заставляет клиентов дублировать защиту?
DartDart · Повторное использование · исправление
abstract interface class Decoder<T> {
  T decode(Object? raw);
}

T load<T>(Object? raw, Decoder<T> decoder) {
  return decoder.decode(raw);
}

// Контекст задания: выбор места исправления.
Вопрос 18 из 20
Какое утверждение о показанном фрагменте и теме «Повторное использование» опирается на реальную гарантию Dart или используемого интерфейса?
DartDart · Повторное использование · семантика
abstract interface class Decoder<T> {
  T decode(Object? raw);
}

T load<T>(Object? raw, Decoder<T> decoder) {
  return decoder.decode(raw);
}

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

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

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

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

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