Отображение цвета экрана в зависимости от полученных данных о гражданине

Разделите HTTP-слой, репозиторий, ViewModel и Compose-экран. Преобразуйте ответ в состояние интерфейса, а правило выбора цвета сделайте явным.

Короткий ответ

Что ответить на собеседовании

Разделите HTTP-слой, репозиторий, ViewModel и Compose-экран. Преобразуйте ответ в состояние интерфейса, а правило выбора цвета сделайте явным.

Подробный разбор

Ответ с пояснениями

Условие

Выполняя требования чистой архитектуры, необходимо добавить следующую функциональность:

  1. Выполнить HTTP‑запрос к бекенду, получить сведения о пользователе. Сервер вернёт JSON следующего формата
{
  "id": "string",
  "age": "18",
  "gender": ["MALE", "FEMALE"]
}
  1. С помощью Jetpack Compose отрисовать фон всего приложения: если в ответе присутствует значение FEMALE – задать красный цвет, если MALE – черный.
  2. Применить любой подходящий шаблон проектирования.
  3. Подключить любой контейнер внедрения зависимостей.
  4. Предполагается, что все необходимые библиотеки (конвертер JSON, Retrofit, Ktor и т.п.) уже включены в проект.

Ответ

Разделите HTTP-слой, репозиторий, ViewModel и Compose-экран. Преобразуйте ответ в состояние интерфейса, а правило выбора цвета сделайте явным.

В условии есть неоднозначность: массив содержит одновременно MALE и FEMALE, но приоритет не задан. На собеседовании это нужно уточнить. Один допустимый вариант — считать такой ответ ошибкой данных и показывать нейтральный экран, а не выбирать цвет случайно.

  1. DTO принимает строковый age и список gender. Mapper проверяет возраст и допустимые значения.
  2. Репозиторий скрывает HTTP-клиент за интерфейсом и возвращает доменную модель.
  3. ViewModel запускает загрузку в своей области корутин и публикует Loading, Content или Error.
  4. Compose отображает состояние: единственный FEMALE — красный фон, единственный MALE — чёрный; неизвестный или противоречивый набор — согласованный fallback.
  5. Hilt или Koin связывает интерфейс репозитория с реализацией.

Цвета принадлежат UI-слою, DTO — data-слою. Повторный запрос запускается явным действием, а не при каждой рекомпозиции.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее