Приведи пример запоминающейся решенной задачи

«Приведи пример запоминающейся решенной задачи» — вопрос из категории Софт-скиллы, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Однажды мне нужно было реализовать бесконечную ленту с пагинацией, но с "умной" подгрузкой - чтобы при быстром скролле не грузились промежуточные страницы.

Решение:

val scrollListener = object : RecyclerView.OnScrollListener() {
    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
        val lastVisiblePosition = layoutManager.findLastVisibleItemPosition()
        val threshold = 5

        if (lastVisiblePosition > adapter.itemCount - threshold 
            && !isLoading 
            && !isLastPage) {
            loadNextPage()
        }
    }
}

Ключевые моменты:

  • Дебаунс для быстрого скролла
  • Проверка isLoading и isLastPage
  • Оптимальный threshold для плавности
  • Отмена pending запросов при скролле

Это дало плавный UX и экономию трафика.