Вернуться в каталог собеседований

Jetpack Compose Battle: Онлайн-собеседования Senior разработчика / Мобильный разработчик

Техническое интервью-батл по Jetpack Compose для Senior Android-разработчиков. Участники обсуждают internals Compose и разбирают производительность и архитектурные ошибки на примере списка контактов.

Алексей Гладков
  • Опубликовано на YouTube:
  • Просмотры на YouTube: 18,4 тыс.
  • Лайки на YouTube: 474
Открыть на YouTube

Таймлайн

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

Запись стрима в формате Jetpack Compose Battle: интервьюер Алексей Панов и кандидат Никита Куликов разбирают устройство Jetpack Compose — от composable-функций, Composer и композиции до рекомпозиции, стабильности типов, состояния и snapshot-механизма. Во второй части они проводят ревью учебного экрана контактов, находя проблемы с созданием объектов при рекомпозиции, списками, ключами, корутинами, лямбдами, layout и частыми обновлениями scroll state. В финале обсуждаются side effects, жизненный цикл LaunchedEffect, внутренности подписки на State и синхронизация рекомпозиции с кадрами.

Затронутые темы

Что взять на заметку

  • Уметь объяснить, почему @Composable-функция вызывается только из composable-контекста: Compose Compiler добавляет служебный контекст Composer и использует его при композиции.
  • Подготовить модель фаз Compose: композиция, измерение и layout, затем drawing; отдельно понимать создание начальной композиции через setContent и назначение SubcomposeLayout.
  • Разобраться в рекомпозиции: какие параметры считаются изменившимися, как стабильность типов влияет на пропуск работы и почему контракт @Stable/@Immutable нельзя нарушать изменяемыми данными.
  • Не считать MutableState атомарным счётчиком: конкурентные операции read-modify-write требуют подходящей синхронизации или атомарных примитивов.
  • На ревью Compose-кода проверять объекты и лямбды, создаваемые при рекомпозиции: применять remember там, где это оправдано, и передавать ссылку на метод вместо новой лямбды, если сигнатура позволяет.
  • Для длинных списков знать LazyColumn, уникальные стабильные ключи и риск ключа по имени контакта; сортировку не следует без нужды выполнять при каждой рекомпозиции.
  • Для часто меняющегося scroll state выводить производное булево состояние через derivedStateOf, а для изменения только фона рассматривать перенос работы в drawBehind, чтобы не затрагивать лишние фазы.

Рекомендуем посмотреть