Развивайтесь в мобильной разработке и создавайте приложения с заботой о пользователях.
Подготовка к собеседованию
Алгоритмы и структуры данных
- Освежите знания по алгоритмам и структурам данных: массивы, хеш-таблицы, деревья, графы, сортировки, поиск и обходы графов.
- Порешайте задачи уровня Easy и Medium, научитесь доводить решения до конца и искать краевые случаи.
- Научитесь тестировать код самостоятельно и находить ошибки без запуска.
Общие рекомендации и материалы
Рекомендуется изучить материалы CodeRun, тренировки по алгоритмам от Яндекса, оценку сложности алгоритмов, лекции и курсы по алгоритмам, а также материалы о прохождении алгоритмических секций в Яндексе.
Android-разработка
Для успешного прохождения собеседования на Android-разработчика нужно знать Kotlin, коллекции, корутины, Android SDK, архитектуру и жизненный цикл UI.
Kotlin, классы, коллекции и ООП
- Inline, noinline и crossinline.
- Reified type parameters и ограничения JVM type erasure.
- ArrayList, LinkedList, HashSet, LinkedHashSet, TreeSet, HashMap, LinkedHashMap и TreeMap.
- Сложности операций, equals/hashCode, порядок обхода, capacity и growth.
- Отличия Sequence от коллекций.
- Иммутабельные структуры данных и persistent-коллекции.
Многопоточность и Coroutines
- Параллельная загрузка данных через coroutineScope, async и awaitAll.
- supervisorScope, retry, timeout и обработка ошибок.
- Отмена корутин и structured concurrency.
- Использование Mutex и Semaphore.
- Запрет блокирующих вызовов и GlobalScope в UI.
- Использование suspend API и передача scope из ViewModel.
Android SDK, архитектура и жизненный цикл
- Clean Architecture: Presentation, Domain и Data.
- ViewModel, use cases, репозитории и источники данных.
- Dependency injection с Hilt или Koin.
- Android View pipeline: measure, layout и draw.
- requestLayout, invalidate, onMeasure, onLayout и onDraw.
- RecyclerView, ListAdapter, DiffUtil, ViewHolder и payloads.
- Jetpack Compose, state, recomposition, remember, rememberSaveable, derivedStateOf и стабильные ключи в Lazy-компонентах.
Практическая подготовка
В течение недели рекомендуется изучить inline и reified type parameters, внутреннее устройство коллекций, параллельную загрузку данных с помощью корутин, Clean Architecture, Android SDK, жизненный цикл View, Compose и оптимизацию рекомпозиций. Также нужно подготовить демонстрационное приложение со списком на Compose, параллельной загрузкой данных, хранением состояния, UseCase, Repository, обработкой ошибок и повторными попытками.
iOS-разработка
Swift: основы синтаксиса, Optionals и value/reference semantics
- Value и reference types.
- Copy-on-Write для коллекций.
- Optionals, if let, guard let, optional chaining и nil-coalescing operator.
- Замыкания, escaping и non-escaping.
Управление памятью
- ARC, strong, weak и unowned ссылки.
- Жизненный цикл объектов и retain cycles.
- Захват self замыканиями.
- Поиск retain cycles с помощью Memory Graph Debugger в Xcode.
UIKit и UI
- Жизненный цикл UIViewController.
- Отличия UIView и UIViewController.
- View hierarchy и lazy loading.
- Повторное использование ячеек через register и dequeueReusableCell.
- Работа с UI только из main thread.
- DispatchQueue.main.async.
- Отличия frame и bounds.
- setNeedsLayout, layoutIfNeeded и layoutSubviews.
Видеоматериалы и дополнительные ресурсы
Рекомендуется изучить лекции Школы мобильной разработки, материалы по Android и Swift, официальную документацию Kotlin, Android Developers и Swift, а также материалы по ARC, корутинам, structured concurrency, Compose state, View rendering pipeline и производительности приложений.