Какая база данных используется в проекте
Что проверяют
Понимаете ли вы, как устроено локальное хранение в вашем приложении, а не только умеете назвать библиотеку. Интервьюер хочет услышать, почему выбрали именно её, как проходят миграции и как данные доходят до UI. Следом обычно спрашивают, что будет с данными пользователя при изменении схемы.
Как отвечать
Назовите, что реально стоит в проекте, и разделите хранилища по назначению:
- Room: стандартный выбор поверх SQLite. Сущности через
@Entity, запросы в@Dao, база наследуетRoomDatabase. SQL проверяется при компиляции, аннотации обрабатывает KSP, kapt находится в режиме поддержки; - реактивность: DAO возвращает
Flow<List<T>>, и экран обновляется сам после записи. Запись черезsuspend-функции, а запрос на главном потоке Room по умолчанию запрещает исключением; - миграции:
Migration(from, to)с SQL илиautoMigrationsпри включённомexportSchema. Схемы лежат в репозитории, миграции проверяются тестом черезMigrationTestHelper; - ключ-значение: DataStore вместо
SharedPreferencesдля настроек и флагов; - облако и офлайн: Firestore держит локальный кеш и синхронизирует его сам, но это уже решение про бэкенд;
- мультиплатформа: при общем коде с iOS смотрят на SQLDelight или на Room с поддержкой Kotlin Multiplatform.
Опишите путь данных: репозиторий решает, взять из базы или из сети, база служит единым источником правды, UI подписан на Flow. Если в проекте было что-то нестандартное, например Realm или шифрование через SQLCipher, объясните, почему так вышло.
Если этот вопрос задаёте вы работодателю, он помогает оценить возраст кодовой базы: голый SQLiteOpenHelper с ручными курсорами обычно означает много наследия.
Где спотыкаются
Ставят fallbackToDestructiveMigration() и не могут объяснить, что при обновлении у пользователя пропадут все локальные данные.
Говорят про Room и SQLite как про две разные базы. Room это библиотека над SQLite, файл базы один и тот же.
Лечат ошибку главного потока через allowMainThreadQueries(). Это прячет проблему и даёт подвисания интерфейса на медленных устройствах.