Какая архитектура используется сейчас на Android?
Что проверяют
Следите ли вы за текущими рекомендациями и умеете ли обосновать выбор, а не назвать аббревиатуру. Ожидаемый ответ звучит не как «MVVM», а как описание слоёв и направления, в котором ходят данные.
Как отвечать
Сегодняшний мейнстрим это официальный гайд по архитектуре приложения: слой UI, необязательный доменный слой и слой данных. Слой UI состоит из элементов интерфейса и держателя состояния, обычно ViewModel, который отдаёт наружу неизменяемое состояние экрана. Слой данных это репозитории поверх источников: сеть, локальная база, настройки. Репозиторий и есть единственный источник правды. Доменный слой с классами сценариев заводят, когда одна и та же логика нужна нескольким экранам.
Поток данных однонаправленный: события идут вверх, состояние спускается вниз. Compose ложится на это естественно: ViewModel выставляет поток состояния, экран подписывается на него с учётом жизненного цикла и перерисовывается целиком по одному объекту.
Типовой набор рядом: Kotlin с корутинами и потоками, Compose, контейнер внедрения зависимостей, Room, клиент HTTP, навигация, планировщик фоновых задач. MVI тут не отдельная вселенная, а тот же однонаправленный поток, только со строгим единым объектом состояния и явными намерениями пользователя.
Где спотыкаются
Отвечают одной аббревиатурой и замолкают. Следом спрашивают, где живёт бизнес-логика и кто владеет состоянием при повороте экрана, и становится видно, что за словом ничего не стоит.
Предлагают двустороннюю привязку данных как современное решение. Библиотека привязки больше не рекомендуется, новые экраны пишут на Compose, где состояние поднимают наверх, а вниз отдают значения и колбэки.
Держат во ViewModel ссылку на контекст активности или на сам экран. Это утечка: ViewModel переживает пересоздание активности и удержит уничтоженный объект. Отдельно устаревшим звучит рассказ про LiveData как про основной инструмент, её место давно занял поток состояния из корутин.