Собеседование на junior: как это устроено

Джуна берут не за количество выученных тем, а за умение спокойно объяснить базу. Я регулярно провожу технические собеседования, и обе крайности проваливаются одинаково: кандидат, который «перечитал всё», и кандидат, который знает три темы, но отвечает так, что сразу видно — человек реально разбирается.

Цель этой статьи — дать вам ориентир, а не список из ста пунктов. Ниже — то, что реально спрашивают на собеседовании уровня junior, в порядке важности, с пояснением, почему интервьюер спрашивает именно это. Плюс чек-лист, по которому можно проверить себя перед откликом.

Если вы готовитесь впервые — не пытайтесь закрыть всё за неделю. Материал ниже рассчитан на 2–3 месяца спокойной подготовки, если учить по порядку и писать код руками.

База, которую проверяют первой

Есть пять блоков, на которые приходится подавляющее большинство вопросов джуновского собеседования. Если закрыть их — вы уже сильнее половины кандидатов.

Kotlin. Синтаксис, null-safety, коллекции, scope-функции, sealed class. Котлин — основной язык Android с 2019 года, и интервьюер почти наверняка начнёт с него. Типичные вопросы: чем val отличается от var, что такое data class, как работает when с sealed class, чем let отличается от run.

Жизненный цикл. Activity и Fragment: набор колбэков, что происходит при повороте экрана, как ведёт себя состояние. Это классика, которую спрашивают на каждом собеседовании, потому что без понимания жизненного цикла невозможно писать приложения, которые не «падают» при повороте экрана.

UI и список. RecyclerView, ViewHolder, адаптер. На джуновском собеседовании часто просят объяснить, как работает список: почему нужен ViewHolder, что такое DiffUtil и зачем он нужен.

Сеть. Retrofit + OkHttp: как описать запрос, обработать ошибку, что такое JSON. Джуна редко просят написать архитектуру сети, но базовые вопросы — почти всегда.

Coroutines. launch, Dispatchers, viewModelScope, отмена корутин. Без этого сейчас не проходит ни одно собеседование: асинхронность — половина повседневной работы Android-разработчика.

Обратите внимание на порядок: Kotlin и жизненный цикл — это 60–70% вопросов. Люди, которые «прошли курс по Android», обычно сильны в UI и слабы в Kotlin, и именно на Kotlin их и валят. Не повторяйте эту ошибку.

Чек-лист из 10 тем

Проверьте себя по списку перед первым откликом. Это не «выучите всё идеально» — это ориентир, ниже которого начинать искать работу рано, а выше — уже можно пробовать.

  • Kotlin: null-safety, коллекции, scope-функции, sealed class, when
  • Жизненный цикл: Activity, Fragment, что происходит при повороте экрана
  • Coroutines: launch, Dispatchers, viewModelScope, отмена и обработка ошибок
  • UI: RecyclerView и ViewHolder, DiffUtil, базовое понимание Compose или XML
  • Сеть: Retrofit, OkHttp, JSON, обработка ошибок запроса
  • ViewModel и состояние: зачем нужна ViewModel, как хранить состояние экрана
  • Хранение данных: Room или SQLite, SharedPreferences, когда что использовать
  • Потоки: почему нельзя трогать UI из фонового потока, что такое основной поток
  • Git: ветки, коммиты, pull request, разрешение конфликтов
  • Тесты: зачем они нужны, пример простого unit-теста

Как пользоваться чек-листом: по каждой теме ответьте себе на вопрос «могу ли я объяснить это вслух за минуту?». Если да — тема закрыта. Если «вроде помню» — вернитесь к ней: на собеседовании «вроде помню» не работает.

Уровень «могу объяснить»: код на собеседовании

От джуна не ждут продакшен-архитектуры. Но любой код, который вы показываете или пишете на собеседовании, вы обязаны уметь объяснить построчно. Вот типичный пример, который встречается в учебных проектах:

UiState.kt
sealed class UiState {
    data object Loading : UiState()
    data class Error(val message: String) : UiState()
    data class Content(val items: List<Item>) : UiState()
}

Кандидат, который написал это сам, легко ответит на три вопроса: почему sealed class, а не обычный class или enum; как обрабатывать состояние в when; что будет, если состояние одновременно «грузится» и «содержит данные». Официальную документацию по sealed class можно посмотреть на kotlinlang.org — но главное, чтобы вы могли объяснить это словами, а не пересказать статью.

Типичная картина: кандидат показывает проект, где состояние экрана — три булевых флага. На вопрос «что будет, если одновременно loading = true и hasError = true» — пауза. Хорошая новость: этот вопрос закрывается один раз — когда вы осознанно разберёте, как хранить состояние. Это и есть тот самый «уровень junior», который ищут.

Ошибки, которые превращают год подготовки в два

Подготовку к собеседованию затягивают не сложные темы, а четыре типичные ошибки.

Зубрёжка ответов — главный враг джуна

Интервьюер всегда копает на один уровень глубже. Выученное «жизненный цикл — это onCreate, onStart, onResume» рассыпается на вопросе «а что произойдёт с ViewModel при повороте экрана». Учить надо не формулировки, а механику: что происходит и почему.

  • Учить всё подряд без порядка. Сегодня корутины, через неделю архитектура, потом бросили. Итог — каша. Подготовка работает только последовательно: база → глубина → проекты.
  • Не писать код руками. Смотреть лекции — не значит учиться. Собеседование уровня junior — это в первую очередь разговор о коде, который вы писали. Без собственного проекта отвечать нечего.
  • Скрывать пробелы. «Ну да, знаю, просто не вспомнил» — худший ответ. Честное «не работал с этим, но разберусь» ценится выше: джуна берут за обучаемость.
  • Не ходить на собеседования ради тренировки. Собеседование — это навык, и он нарабатывается только практикой. Первые два-три интервью почти у всех провальные — и это нормально, если вы делаете выводы.

Что отличает джуна, которого берут

На собеседованиях я вижу много людей с одинаковым уровнем знаний. Берут тех, у кого есть три вещи:

Проект, который можно показать. Один свой проект — приложение, которое вы сами придумали, написали и опубликовали, — весит больше, чем три пройденных курса. Он даёт материал для разговора: «почему выбрал эту архитектуру», «с какими проблемами столкнулся».

Умение объяснить свои решения. «Сделал так, потому что так в курсе показали» — это ответ джуна. «Сделал так, потому что состояние экрана проще держать в ViewModel, а данные подгружать через репозиторий» — это ответ, после которого интервьюер отмечает «берём».

Адекватная подача себя. Резюме, в котором ваши проекты видны с первого экрана, и честный разговор о пробелах. Про то, как резюме проходит автоматические фильтры, я подробно писал в отдельной статье — без этого даже сильные кандидаты не доходят до собеседования.

Я — Рустем Бикбулатов, senior Android-разработчик, ментор Яндекс Практикума. Провожу технические собеседования и помогаю разработчикам расти с уровня junior: закрываю пробелы в Kotlin, Coroutines и архитектуре, тренирую ответы на собеседованиях. За моими плечами больше 100 учеников и разборов — типичные ошибки подготовки я вижу постоянно.

Готовитесь к первому собеседованию?

Бесплатный чек-лист подготовки: конкретные пункты — что закрыть и в каком порядке. Без обязательств — если менторство вам не подойдёт, честно скажу.

Итоги

Путь на позицию junior Android выглядит так:

  • База важнее широты: Kotlin, жизненный цикл, Coroutines, RecyclerView, сеть — эти пять блоков закрывают почти все вопросы.
  • Код, который вы можете объяснить, весит больше выученных формулировок — собеседование строится вокруг вашего проекта и ваших решений.
  • Подготовка — это последовательный процесс, а не зубрёжка: чек-лист выше — это ориентир, по которому можно проверить себя уже сейчас.

Главное

Junior — это не «человек, который всё знает», а «человек, которому можно доверить задачу и который честно скажет, где не разберётся». Поэтому на собеседовании ценятся честность и умение объяснять больше, чем количество выученных тем.

Если не знаете, с чего начать, — напишите в Telegram, разберём вашу ситуацию и составим план подготовки к первому собеседованию.