Эйч
Эйч
  • Эйч Плюс
  • Все менторы
Гайды/Android-разработчик/Собес в Альфа-Банк · Android разработчик

Собес в Альфа-Банк · Android разработчик

Материал Эйч · Опубликовано 27 октября 2026

Обзор

Middle/Senior: Kotlin, архитектура мобильного банка, RxJava, Dagger, REST и качество UI

Kotlin и JVM
Android SDK и жизненный цикл
Архитектура MVP/MVVM/MVI
Многопоточность и корутины
DI (Dagger/Koin)
Сеть и REST
Паттерны проектирования
Тестирование и code review

Фишка: Крупный цифровой банк с акцентом на собственную мобильную разработку, сильный IT-хаб и внутренние митапы; типичны вопросы из реальных Android-проектов банка (Koin scopes, корутины, паттерны).

ЭтапДлительностьЧто проверяют
Скрининг / HR30–45 минМотивация, опыт 4+ лет в Android, формат работы (удалёнка/гибрид), ожидания по доходу и KPI-премии
Техническое интервью60–90 минKotlin, Android SDK, архитектура, RxJava/Dagger/Retrofit, SOLID, вопросы по прошлым проектам
Углублённое тех. / live coding60–90 минЗадачи на Kotlin, жизненный цикл, многопоточность, разбор архитектурного кейса под финтех
Финал с тимлидом / команда45–60 минКультурный fit, процессы (git flow, code review), масштабирование команды мобильного банка

Стек и темы

Обязательный минимум

  • Kotlin (inline, reified, data class, sealed class)
  • Activity/Fragment lifecycle, ViewModel, Navigation
  • MVVM/MVI/MVP и Clean Architecture (слои UI — domain — data)
  • RxJava 2 или корутины + Flow
  • Dagger 2 / Hilt или Koin (scopes)
  • Retrofit, OkHttp, REST/HTTP
  • Material Design, производительность UI
  • Git flow, unit/UI-тесты, code review
  • SOLID, базовые паттерны (Adapter, Facade, Builder)

Плюсом будет

  • Compose (если команда уже мигрирует)
  • Опыт финтеха: безопасное хранение, certificate pinning
  • Профилирование (Systrace, Memory Profiler)
  • Публикации на Хабр / выступления (упоминается в оффере)

Kotlin

Можешь назвать основные ключевые слова, применяемые при использовании inline в коде?

inline, noinline, crossinline; вставка тела в место вызова, меньше overhead для лямбд.

Можно ли применить ключевое слово reified без использования inline?

Нет: reified только у inline-функций из-за type erasure на JVM.

Как можно реализовать паттерн Builder в Kotlin, избегая дополнительных классов?

DSL: apply {}, именованные аргументы, функция-расширение с лямбдой-конфигуратором.

Как реализованы внутренние структуры MutableList и ImmutableList?

Mutable — ArrayList/динамический массив; immutable — обёртки без мутаций, copy-on-write у некоторых коллекций.

Можно ли определить тип объекта без typeof?

is/as, when с smart cast, reified T, проверка интерфейса/поведения.

Ловушка: Путают inline только с производительностью — на собесе ждут знание noinline/crossinline для лямбд-параметров.

Фишка: В Альфа-Банк часто спрашивают связь возможностей Kotlin с паттернами (object singleton, data class, sealed для UI state).

Android SDK и жизненный цикл

Объясните отличия onStop и onPause в жизненном цикле Activity.

onPause — частично видима (диалог); onStop — не видима; что останавливать на каждом этапе.

Можно ли использовать одну ViewModel для обмена данными между двумя фрагментами при навигации?

Да, если owner — общая Activity или nav graph scope; не создавать новую VM на каждый фрагмент.

Как определить правильный Looper для Handler при обмене между фоном и UI?

Main: Looper.getMainLooper(); фон: HandlerThread + свой Looper.

Совет: Свяжите lifecycle с корутинами: lifecycleScope, viewModelScope, repeatOnLifecycle для Flow.

Архитектура и слои

Как связать слой бизнес-логики с уровнем данных?

Repository interface в domain; реализация в data; UseCase зависит от абстракции; DI.

Какие варианты Model-View паттернов использовали в проектах?

MVC/MVP/MVVM/MVI: кто держит state, однонаправленный поток, тестируемость Presenter/ViewModel.

В чём взаимосвязь Kotlin и паттернов проектирования?

object — Singleton; data class — Value Object; sealed — иерархия состояний; делегаты.

Фишка: В вакансии явно ждут масштабируемый код под «лучший мобильный банк» — готовьте пример модульности и переиспользуемых UI-компонентов.

Многопоточность

Можно ли volatile обеспечить thread-safety при совместной работе с переменной?

Только visibility, не атомарность составных операций; для счётчиков — Atomic* или mutex.

В каких случаях нужны атомарные операции или транзакции?

Составные обновления, БД-транзакции Room, race на shared state.

Какие факторы влияют на поведение DefaultDispatcher?

Пул ~ число ядер, work-stealing; не для блокирующего IO — Dispatchers.IO.

Ловушка: RxJava vs корутины: в стеке вакансии RxJava 2 — будьте готовы объяснить subscribeOn/observeOn и disposable.

DI: Dagger и Koin

Как обеспечить сохранение объекта, связанного с Activity, в Koin?

scope для Activity/Fragment; getKoin().createScope; закрытие scope в onDestroy.

Совет: Для Dagger 2: Component vs Subcomponent, @Inject constructor, модули для Retrofit/OkHttp.

Сеть и API

Принципы RESTful API и HTTP — что проверяют на собесе?

Методы, коды ответов, идемпотентность, кеширование, interceptors (auth, logging).

Совет: Retrofit + OkHttp: timeout, retry policy, обработка ошибок на уровне repository, не в UI.

Паттерны проектирования

Различие Adapter и Facade?

Adapter — совместимость интерфейсов; Facade — упрощённый вход в подсистему.

Различие Decorator и Facade?

Decorator — наслоение поведения на один объект; Facade — единая точка входа.

Задачи

Два указателя: пара с заданной суммой

Дан отсортированный массив целых и число target. Найдите индексы двух элементов, сумма которых равна target (ровно одно решение). Вернуть пары индексов.

fun twoSum(nums: IntArray, target: Int): IntArray {
    var left = 0
    var right = nums.size - 1
    while (left < right) {
        val sum = nums[left] + nums[right]
        when {
            sum == target -> return intArrayOf(left, right)
            sum < target -> left++
            else -> right--
        }
    }
    return intArrayOf()
}

Сложность: O(n) по времени, O(1) по памяти

LRU-кеш (концепт для Android)

Реализуйте LRU-кеш фиксированной ёмкости: get и put за O(1). Объясните, где это применимо в мобильном приложении.

LinkedHashMap с accessOrder=true или LinkedHashMap + HashMap узлов; при put сверх capacity удалить eldest. В Android — аналогия LruCache<K,V> для bitmap/ответов API.

Сложность: O(1) amortized для get/put

Поток UI-состояний

Опишите (или набросайте код) однонаправленный поток: UserAction → ViewModel → State → UI для экрана списка операций с loading/error/content.

sealed class UiState { Loading, Error(msg), Content(List<Item>) }; sealed class Action { Refresh, Retry }; ViewModel обрабатывает Action, эмитит State через StateFlow; Fragment collect с repeatOnLifecycle.

Сложность: Архитектурная задача

System Design

  • Спроектируйте модуль «история операций» в мобильном банке: офлайн-кеш, пагинация, pull-to-refresh, безопасность.
  • Как организовать многофичевое Android-приложение (десятки команд): модули, общий network layer, feature flags?
  • Обработка ошибок сети и повтор запросов без дублирования платежей (идемпотентность).

Каркас ответа

  1. Уточнить NFR: объём данных, SLA, офлайн, версии API
  2. Слои: UI → domain (use cases) → data (repository, local Room + remote Retrofit)
  3. Модель данных и кеш-стратегия (stale-while-revalidate)
  4. Навигация и границы модулей
  5. Безопасность: keystore, не логировать PAN/токены
  6. Наблюдаемость: crashlytics, метрики экранов
  7. Тесты: repository unit, ViewModel с fake repo

Поведенческое

  • Расскажите о самой сложной архитектурной задаче в мобильном проекте и как вы её решили.
  • Пример конфликта на code review: как договорились с коллегой?
  • Как вы обеспечивали производительность и плавность UI под нагрузкой?
  • Опыт внедрения новой технологии в существующий код (миграция, риски).
  • Почему финтех / мобильный банк, а не продуктовая студия?

План подготовки

3 дня

  • Повторить lifecycle Activity/Fragment и ViewModel scopes
  • Пройти 15 вопросов Kotlin (inline, reified, collections)
  • Разобрать одну задачу на два указателя и LRU на бумаге
  • Освежить RxJava: цепочки, schedulers, CompositeDisposable

7 дней

  • Схема Clean Architecture на примере экрана с API
  • Dagger/Koin: нарисовать граф зависимостей для Retrofit+Repository
  • 2 mock-интервью: архитектура + паттерны
  • Material: списки, diff util, избегание лишних rebind

14 дней

  • System design: история операций + офлайн
  • Написать мини-модуль: repository + ViewModel + unit-тест
  • Поведенческие истории в STAR (3 кейса)
  • Прочитать про процессы Альфа-Банк IT (митапы, git flow) — для финала
БлокГотов, если...
Kotlinобъясняете inline/reified и отличие mutable/immutable коллекций
Androidрисуете lifecycle и знаете, как шарить ViewModel между фрагментами
Архитектурасравниваете MVP/MVVM/MVI и связываете domain с repository
Стек вакансиинастраиваете Retrofit+OkHttp и DI-модуль без подсказок
Многопоточностьразличаете volatile, atomic и корутинные диспетчеры

В день собеседования

  • Проверить стабильный интернет и IDE/заметки под рукой
  • Иметь один чёткий пример «мобильный банк / финтех-подобный» проекта без NDA-деталей
  • Заготовить вопросы команде: стек Compose, CI, метрики качества

Профессия

Android-разработчик

Темы

Kotlin и JVM
Android SDK и жизненный цикл
Архитектура MVP/MVVM/MVI
Многопоточность и корутины
DI (Dagger/Koin)
Сеть и REST
Паттерны проектирования
Тестирование и code review

Компания

Альфа-БанкАльфа-Банк

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

🍪 Мы используем cookie и Яндекс Метрику, чтобы сайт работал и становился лучше. Подробнее в политике.

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Сервисы
AI поиск работы newПоиск вакансий newПоиск компаний newКонструктор резюме newВопросы с собеседований newЗадачи с собеседований newГайды к собеседованиям newПроверятор резюме newГенератор сопроводительных new
Поиски себя
Войти в ITКарьерная стратегияПовысить доходПрофориентация
Работа в России
Сопровождение до оффера Найти работу в РоссииРевью портфолиоРевью резюмеТестовое собеседование
Работа за рубежом
Найти работу за границейПомощь в оформлении LinkedInРевью резюме на английскомТестовое собеседование на английском
Навыки
Личный брендОценка навыковРазвитие навыков и компетенций
Поддержка
ВыгораниеОтношения с коллективомОтношения с руководителемСиндром самозванцаСложное увольнение
Для бизнеса
Аудит процессов компанииВыступление на внутреннем мероприятии компанииКонсалтинг бизнеса
Профессии
HRАдминистрированиеАналитикаДизайнИнформационная безопасностьИскусственный интеллектИсследованияКонсалтингКонтентМаркетингМенеджментНаука и образованиеОфисПоддержкаПредпринимательство
Компания
С чем помогаемОтзывы Вопросы и ответыСертификатыВебинарыСтать ментором

Услуги оказывает ООО «Эйч Карьера»
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, г. Москва, Старопименовский пер., д. 18, стр. 2, помещ./ком./этаж I/19/2
Платформа принадлежит ООО «Эйч Карьера»

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта