DT Dart  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Локальное хранение данных

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 70 минут. В заданиях с кодом опирайтесь на показанный фрагмент и наблюдаемое поведение; в ситуационных — на публичный договор и последствия решения.
Вопрос 1 из 25
Какой вывод о фрагменте «Файлы» останется верным после безопасного рефакторинга?
DartDart · Файлы · семантика
Future<void> writeAtomically(File target, List<int> bytes) async {
  final temp = File('${target.path}.tmp');
  await temp.writeAsBytes(bytes, flush: true);
  await temp.rename(target.path);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 2 из 25
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Файлы»?
DartDart · Файлы · исправление
Future<void> writeAtomically(File target, List<int> bytes) async {
  final temp = File('${target.path}.tmp');
  await temp.writeAsBytes(bytes, flush: true);
  await temp.rename(target.path);
}

// Контекст задания: выбор места исправления.
Вопрос 3 из 25
Обычный путь в коде зелёный. Как построить проверку «Файлы», чтобы не пропустить различия между отказами?
DartDart · Файлы · границы
Future<void> writeAtomically(File target, List<int> bytes) async {
  final temp = File('${target.path}.tmp');
  await temp.writeAsBytes(bytes, flush: true);
  await temp.rename(target.path);
}

// Контекст задания: анализ граничных входов.
Вопрос 4 из 25
Команда хочет свободно менять устройство решения «Файлы». Какое требование нельзя нарушить?
Вопрос 5 из 25
Что добавить в набор тестов, чтобы ошибка по теме «Файлы» не вернулась незаметно?
Вопрос 6 из 25
Что в поведении этого кода гарантировано правилами темы «Хранилище простых настроек», а не случайно совпало в одном запуске?
DartDart · Хранилище простых настроек · семантика
Future<void> saveThemeMode(SharedPreferences prefs, ThemeMode mode) async {
  await prefs.setString('theme_mode', mode.name);
}

ThemeMode readThemeMode(SharedPreferences prefs) {
  return ThemeMode.values.byName(prefs.getString('theme_mode') ?? 'system');
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 7 из 25
На ревью спорят, достаточно ли одного сквозного теста для «Хранилище простых настроек». Какой набор действительно раскрывает границы поведения?
DartDart · Хранилище простых настроек · границы
Future<void> saveThemeMode(SharedPreferences prefs, ThemeMode mode) async {
  await prefs.setString('theme_mode', mode.name);
}

ThemeMode readThemeMode(SharedPreferences prefs) {
  return ThemeMode.values.byName(prefs.getString('theme_mode') ?? 'system');
}

// Контекст задания: анализ граничных входов.
Вопрос 8 из 25
Фрагмент допускает частный обход спорного случая. Как перенести ответственность туда, где определяется правило «Хранилище простых настроек»?
DartDart · Хранилище простых настроек · исправление
Future<void> saveThemeMode(SharedPreferences prefs, ThemeMode mode) async {
  await prefs.setString('theme_mode', mode.name);
}

ThemeMode readThemeMode(SharedPreferences prefs) {
  return ThemeMode.values.byName(prefs.getString('theme_mode') ?? 'system');
}

// Контекст задания: выбор места исправления.
Вопрос 9 из 25
Как проверить тему «Хранилище простых настроек» через публичный результат, не цепляясь за устройство реализации?
Вопрос 10 из 25
Команда хочет свободно менять устройство решения «Хранилище простых настроек». Какое требование нельзя нарушить?
Вопрос 11 из 25
В показанном решении проблему обходят рядом с одним вызовом. Какое изменение исправляет саму границу темы «Локальная база SQLite»?
DartDart · Локальная база SQLite · исправление
Future<List<Note>> recentNotes(Database db) async {
  final rows = await db.query(
    'notes',
    where: 'archived = ?',
    whereArgs: [0],
    orderBy: 'updated_at DESC',
    limit: 50,
  );
  return rows.map(Note.fromRow).toList(growable: false);
}

// Контекст задания: выбор места исправления.
Вопрос 12 из 25
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Локальная база SQLite» всё ещё нужно проверить раздельно?
DartDart · Локальная база SQLite · границы
Future<List<Note>> recentNotes(Database db) async {
  final rows = await db.query(
    'notes',
    where: 'archived = ?',
    whereArgs: [0],
    orderBy: 'updated_at DESC',
    limit: 50,
  );
  return rows.map(Note.fromRow).toList(growable: false);
}

// Контекст задания: анализ граничных входов.
Вопрос 13 из 25
Какой вывод о фрагменте «Локальная база SQLite» останется верным после безопасного рефакторинга?
DartDart · Локальная база SQLite · семантика
Future<List<Note>> recentNotes(Database db) async {
  final rows = await db.query(
    'notes',
    where: 'archived = ?',
    whereArgs: [0],
    orderBy: 'updated_at DESC',
    limit: 50,
  );
  return rows.map(Note.fromRow).toList(growable: false);
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 14 из 25
Одна реализация темы «Локальная база SQLite» заменяется другой. Что внешний код вправе ожидать после замены?
Вопрос 15 из 25
Как проверить тему «Локальная база SQLite» через публичный результат, не цепляясь за устройство реализации?
Вопрос 16 из 25
Какой вариант правки убирает источник дефекта «Миграции схемы» и не заставляет клиентов дублировать защиту?
DartDart · Миграции схемы · исправление
Future<void> migrate(Database db, int oldVersion) async {
  await db.transaction((txn) async {
    if (oldVersion < 2) {
      await txn.execute('ALTER TABLE notes ADD COLUMN archived INTEGER NOT NULL DEFAULT 0');
    }
    if (oldVersion < 3) {
      await txn.execute('CREATE INDEX notes_updated_idx ON notes(updated_at)');
    }
  });
}

// Контекст задания: выбор места исправления.
Вопрос 17 из 25
Какое утверждение о показанном фрагменте и теме «Миграции схемы» опирается на реальную гарантию Dart или используемого интерфейса?
DartDart · Миграции схемы · семантика
Future<void> migrate(Database db, int oldVersion) async {
  await db.transaction((txn) async {
    if (oldVersion < 2) {
      await txn.execute('ALTER TABLE notes ADD COLUMN archived INTEGER NOT NULL DEFAULT 0');
    }
    if (oldVersion < 3) {
      await txn.execute('CREATE INDEX notes_updated_idx ON notes(updated_at)');
    }
  });
}

// Контекст задания: проверка семантики фрагмента.
Вопрос 18 из 25
После одного успешного запуска фрагмент признали готовым. Какой набор случаев по теме «Миграции схемы» всё ещё нужно проверить раздельно?
DartDart · Миграции схемы · границы
Future<void> migrate(Database db, int oldVersion) async {
  await db.transaction((txn) async {
    if (oldVersion < 2) {
      await txn.execute('ALTER TABLE notes ADD COLUMN archived INTEGER NOT NULL DEFAULT 0');
    }
    if (oldVersion < 3) {
      await txn.execute('CREATE INDEX notes_updated_idx ON notes(updated_at)');
    }
  });
}

// Контекст задания: анализ граничных входов.
Вопрос 19 из 25
Какой тест действительно поймает возврат дефекта в теме «Миграции схемы»?
Вопрос 20 из 25
Одна реализация темы «Миграции схемы» заменяется другой. Что внешний код вправе ожидать после замены?
Вопрос 21 из 25
Код прошёл демонстрационный пример, но границы не разобраны. Что нужно проверить отдельно в теме «Выбор компромисса»?
DartDart · Выбор компромисса · границы
abstract interface class SettingsStore {
  Future<String?> read(String key);
  Future<void> write(String key, String value);
}

abstract interface class DocumentStore {
  Future<List<Document>> search(DocumentQuery query);
  Future<void> transaction(Future<void> Function(DocumentTxn) action);
}

// Контекст задания: анализ граничных входов.
Вопрос 22 из 25
Какой вариант правки убирает источник дефекта «Выбор компромисса» и не заставляет клиентов дублировать защиту?
DartDart · Выбор компромисса · исправление
abstract interface class SettingsStore {
  Future<String?> read(String key);
  Future<void> write(String key, String value);
}

abstract interface class DocumentStore {
  Future<List<Document>> search(DocumentQuery query);
  Future<void> transaction(Future<void> Function(DocumentTxn) action);
}

// Контекст задания: выбор места исправления.
Вопрос 23 из 25
Какое утверждение о показанном фрагменте и теме «Выбор компромисса» опирается на реальную гарантию Dart или используемого интерфейса?
DartDart · Выбор компромисса · семантика
abstract interface class SettingsStore {
  Future<String?> read(String key);
  Future<void> write(String key, String value);
}

abstract interface class DocumentStore {
  Future<List<Document>> search(DocumentQuery query);
  Future<void> transaction(Future<void> Function(DocumentTxn) action);
}

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

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

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

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

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