Вопрос на собеседовании · Android-разработчик

Что вызывает recomposition в Jetpack Compose и как избежать лишней работы?

Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.

Обновлено 19 августа 2026 г.Встречается почти всегда
Android-разработчикПрофессии и разделы
Короткий ответ

Когда composable читает наблюдаемое state, Compose запоминает эту зависимость. При изменении значения он планирует recomposition затронутой части дерева и старается пропустить вызовы со стабильными, неизменившимися параметрами. Это не равнозначно полной перерисовке экрана: конкретный результат зависит от того, какие участки действительно читают изменившееся состояние.

Оптимизация начинается с модели состояния: передавайте небольшие стабильные значения, поднимайте состояние к владельцу и не выполняйте сетевую, сортировку или тяжёлую конвертацию прямо в composition. remember хранит вычисленное значение между recomposition при тех же ключах, а derivedStateOf полезен, когда производное состояние меняется реже исходного.

01 · Структура ответа

Что важно сказать интервьюеру

Начните с определения, затем объясните механизм и закончите примером из практики. Для полного ответа раскройте эти тезисы:

Recomposition вызывается изменением прочитанного state.
Compose может пропускать неизменившиеся стабильные ветви.
remember кэширует значение в рамках composition и ключей.
derivedStateOf уменьшает лишние обновления производного state.

02 · Пример

Как объяснить на практике

Кнопка «Наверх» зависит только от того, превысил ли список первый элемент. Вместо передачи полного scroll offset во всё дерево вычисляют showButton через derivedStateOf и передают в кнопку Boolean; сам список продолжает обновляться, но кнопка меняется только при пересечении порога.

Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.

03 · Ошибки

Чего избегать в ответе

Ставить remember вокруг любой операции без понимания ключей.
Выполнять side effect прямо в теле composable.
Объяснять recomposition как обязательную полную перерисовку экрана.

04 · Углубление

Что могут спросить следом

  1. Чем LaunchedEffect отличается от remember?
  2. Что такое state hoisting?
  3. Как профилировать Compose UI?

Практика ответа

Ответьте вслух, а не про себя

Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с подсказкой.

Потренировать ответ