ANDROID CAREER

Telegram-канал с новостями

Обзор контента

Привет! Это роадмап «Андоид Карьера» для подготовки к собесу на Senior Android Developer.

Включает 15 разделов. Каждый раздел - отдельная Notion-страница.

Некоторые разделы включают собственные вложенные страницы, они размещаются в самом верху.

Getting Started

Подборка курсов и примеров проектов для изучения Android, Kotlin, Java, Jetpack Compose, Ktor, алгоритмов, SQL, Git и искусственного интеллекта.

Job Interview

Подготовка к интервью на Senior Android Developer: вопросы по системному дизайну, лайвкодингу, первичным этапам отбора. Материалы о навыках, самопрезентации, вопросах для работодателя и кандидата. Ссылки на статьи и записи мок-собеседований.

System Design

Материалы для подготовки к проектированию систем: основные подходы, принципы масштабируемости, архитектурные паттерны, работа с нагрузкой. Ссылки на статьи, лекции и примеры решений для разбора типичных задач собеседований.

Live Coding

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

Screening

Советы и примеры вопросов для прохождения начальных этапов собеседования: технические скрининги, HR-интервью. Как отвечать на общие вопросы, избегать частых ошибок и производить хорошее впечатление.

Soft

Рекомендации по развитию мягких навыков: презентация своих достижений, умение задавать вопросы, обсуждение культурных ценностей компании. Подготовка к вопросам о личных качествах и работе в команде.

Computer Science

Ключевые темы Computer Science: процессоры, память, асинхронность, параллелизм, синхронизация, безопасность, сетевые протоколы и обработка данных. Затрагиваются шифрование, хеширование, cookies, User-Agent и различия TCP/UDP. Вопросы, задаваемые на собеседованиях.

Algorithms

Основные темы алгоритмов: временная и пространственная сложность, Big O-нотация, оптимизация, структуры данных, бинарный поиск, бинарные деревья, красно-чёрные деревья, алгоритмы сортировки, задачи LeetCode и вопросы для собеседований.

DevOps

Основные темы DevOps: CI/CD, инструменты автоматизации (GitHub Actions, GitLab CI, Bitrise, Fastlane, CircleCI, Jenkins, Travis CI, TeamCity) и вопросы для собеседований.

Detekt

Detekt — статический анализатор для Kotlin, который выявляет проблемы в стиле, баги и уязвимости. Улучшает качество кода и помогает поддерживать стандарты.

Java

Описание языка Java: Basic types, Reference types, Strings, Arrays, Serialization, Modifiers, IO, Exceptions, Enums, Generics, Lambda.

Collection

Описание работы коллекций в Java: Iterator List ArrayList LinkedList Set HashSet TreeSet SortedSet Queue Map TreeMap Hashtable.

HashMap

Работа с HashMap в Java: создание коллекции, добавление элемента, получение элемента, удаление элемента, Node synchronizedMap LinkedHashMap ConcurrentHashMap.

Object

Описание класса Object в Java, его основных методов и методов синхронизации.

Strings

Описание работы со строками в Java.

GC

Описание работы сборщика мусора в Java: GC. GS roots. finalize WeakReference SoftReference PhantomReference ReferenceQueue WeakHashMap. Утечки памяти.

Thread

Описание работы класса Thread в Java: Thread isDaemon isAlive interrupt sleep yield join Priority.

Concurrent

Работа с многопоточностью в Java: Heap, Stack, Process, Thread, Method Area, deadlock, mutex, Concurrent Collections, Runnable ThreadPool ThreadPoolExecutor ScheduledThreadPoolExecutor Executor ExecutorService ScheduledExecutorService Future synchronized volatile atomic.

Atomic

Описание работы с атомарными классами.

RxJava

Описание работы RxJava - фреймворка для реактивного программирования: Observable Single Completable Maybe Flowable PublishSubject ReplaySubject BehaviorSubject AsyncSubject UnicastSubject Schedulers Disposable CompositeDisposable subscribeOn observeOn map flatMap concatMap switchMap distinct merge zip.

Kotlin

Описание языка Kotlin: Any Unit Nothing. Basic types, Null safety, Properties, Lambdas, Enums, Special Identifiers, Access Modifiers, Exceptions, Smart casts, Operator overloading, Context Receivers, DSL, Functional Interfaces, Type Aliases, Annotations, Concurrent, Math, Preconditions.

Collection

Описание работы коллекций и последовательностей в Kotlin: Iterable Collection List MutableList Set MutableSet Map MutableMap Sequences.

Generics

Описание дженериков и вариативностей в Kotlin: out in where. Ковариантность, контравариантность, инвариантность, бивариантность.

Delegates

Описание работы делегатов в Kotlin: by lazy notNull. Properties.

Object

Описание работы объектов в Kotlin: object data object companion object. Анонимные объекты.

Data Class

Описание работы классов данных в Kotlin: data class. Методы: equals hashCode toString copy componentN.

Value Class

Описание работы классов значений в Kotlin: @JvmInline. Generic value class.

Sealed Class

Описание работы запечатанных классов в Kotlin: sealed class sealed interface.

Inner Class

Описание работы внутренних классов в Kotlin: модификатор inner.

Inline Functions

Описание встраиваемых функций в Kotlin: inline noinline crossinline reified. Inline properties.

Infix Functions

Описание работы инфиксных функций в Kotlin: оператор infix.

Extension Functions

Описание работы функций-расширений в Kotlin.

Scope Functions

Описание работы функций области видимости в Kotlin: let run with apply also takeIf.

Coroutines

Описание работы корутин в Kotlin: suspend runCatching runBlocking launch async await yield Job SupervisorJob CoroutineContext withContext CoroutineScope supervisorScope GlobalScope viewModelScope Dispatcher CoroutineExceptionHandler Channel. Backpressure. Structures cuncurrency.

Flow

Описание работы оператора Flow в Kotlin: callbackFlow StateFlow SharedFlow. Разбор более 50 операторов над потоками.

Channels

Описание работы каналов в Kotlin: send receive receiveAsFlow close producer consumeEach.

Coroutine Cases

Описание кейсов работы с корутинами.

Regex

Описание работы с регулярными выражениями.

Multiplatform

Описание работы с Kotlin Multiplatform: expect actual. Kotlin Native, Best practices, совместимость с Java, Ktor, список библиотек.

Multiplatform Cases

Описание кейсов работы с мультиплатформой: установить brew, ruby, cocoapods. Сгенерировать ресурсы.

Android Platform

Описание работы с платформой Android: документация, роадмап, блоги на Medium, YouTube-каналы.

Architecture

Описание архитектуры Android-приложений: Clean Architecture, Architecture patterns, OOP, Modularization, Development Principles, Сlasses and objects relationships, Design Patterns, class abstract class interface.

Manifest

Все про файл AndroidManifest.xml.

Concurrent

Работа с многопоточностью в Android: Main thread, Worker thread, Looper ThreadLocal Message MessageQueue Handler runOnUiThread.

Network

Работа с сетью в Android: Protocol Buffers, gRPC, JSON, WebSockets, GraphQL, REST, OkHTTP.

Collection

Описание работы коллекций в Android: ArrayMap ArraySet ScatterMap ObjectFloatMap IntIntPair FloatFloatPair LongLongPair.

Build

Описание сборки Android-приложения: Product Flavors, BuildVariants. Gradle ProGuard R8 APK AAB NDK JNI ART ANR AIDL.

Releases

Что нового в версиях Android: начиная с Android 5.0 Lollipop (API 21) и заканчивая Android 14 Upside Down Cake (API 34).

SDK

Описание работы с Android SDK: Permissions, Notifications, Reflection API, Context Application ContentProvider Bundle Parcelable LruCache.

Intent

Описание работы с Intent в Android: явный интент, неявный интент, PendingIntent.

Activity

Описание базового компонента Activity: Lifecycle, Launch mode, OnBackPressedDispatcher taskAffinity ActivityManager.

Service

Описание базового компонента Service: Lifecycle, Background, Foreground, Types, Bound IBinder IntentService JobIntentService JobScheduler AlarmManager DownloadManager WakeLock.

BroadcastReceiver

Описание базового компонента BroadcastReceiver.

ContentProvider

Описание базового компонента ContentProvider.

Fragment

Описание работы фрагментов в Android.

View & ViewGroup

Описание работы класса View в Android: Lifecycle, invalidate requestLayout forceLayout ViewGroup ViewStub.

UI

Работа с дизайном и пользовательским интерфейсом в Android: единицы измерения, слои, 9-Patch, HEX Colors Density Plurals RenderThread Bitmap.

UI Components

Описание работы с компонентами UI в Android: Анимации, RemoteViews FrameLayout LinearLayout RelativeLayout ConstraintLayout TextView ScrollView CoordinatorLayout ViewPager2.

RecyclerView

Описание работы RecyclerView.

Lifecycle

Описание работы с жизненным циклом в Android.

DI

Работа с внедрением зависимостей в Android: библиотека Koin, аннотация @Inject.

Test

Тестирование приложений Android: UnitTest, AndroidTest, MemoryLeak, JUnit, Robolectric, Roborazzi, Mockito, MockK, Expresso, Kaspresso.

SDK (Deprecated)

Устаревшие компоненты Android SDK: SharedPreferences AppWidget.

Android Jetpack

Описание набора библиотек Android Jetpack: Hilt ViewModel Room WorkManager LiveData ViewBinding.

Hilt

Описание Hilt - фреймворка для внедрения зависимостей: аннотации, component scopes, отложенная инициализация.

Room

Описание Room - локальной базы данных: ForeignKey @Database @Entity @Dao.

ViewModel

Описание ViewModel - класса для работы с бизнес-логикой экрана: ViewModel AndroidViewModel Assisted ViewModelStore ViewModelProvider Lifecycle SavedStateHandle.

ViewBinding

Описание ViewBinding - библиотеки для генерации файла привязки для каждого макета XML: настройка в Gradle-модуле. Привязка внутри Activity, Fragment, View и ViewHolder. Библиотека ViewBindingPropertyDelegate.

WorkManager

Описание WorkManager - библиотеки для выполнения фоновых задач.

Startup

Описание Startup - библиотеки для инициализации зависимостей.

Media3

Описание работы с видео в Android: Exoplayer, Советы по оптимизации.

LiveData (Deprecated)

Описание LiveData - класса-держателя данных, который можно наблюдать в рамках заданного жизненного цикла: LiveData MediatorLiveData observe onserveForever viewLifecycleOwner setValue postValue.

Compose

Описание фреймворка для UI - Jetpack Compose. Жизненный цикл. Рекомпозиция. Аннотации: @Composable @Preview @ReadOnlyComposable @Stable @Immutable. Функции: remember rememberSaveable rememberUpdateState mutableStateOf derivedStateOf. ViewCompositionStrategy. CompositionLocal. nestedScrollConnection.

Side Effects

Описание работы побочных эффектов в Compose: SideEffect LaunchedEffect DisposableEffect.

CompositionLocal

Описание передачи данных через дерево композиций.

UI Components

Описание компонентов UI в Compose: Snackbar Text TextField ConstraintLayout Slider Canvas.

Canvas

Описание инструмента для рисования Canvas.

Material3

Описание Material Design в Compose.

Modifier

Описание способа изменить или дополнить поведение и внешний вид UI-компонентов.

Multiplatform

Описание библиотеки от JetBrains, основанной на Jetpack Compose.

Gradle

Инструкции для сборки проекта, создания APK, запуска проверок кода, установки переменных среды, отображения подключенных зависимостей.

Firebase

Библиотеки Firebase.

Android Studio

Инструкции для настройки IDE Android Studio и эмуляторов.

Keyboard Shortcuts

Список всех необходимых хоткеев, без которых невозможно работать в Android Studio.

Git

Описание команд: fetch pull push merge rebase revert commit squash ament checkout cherry-pick stash reflog tag log.

Commands

Примеры выполнения команд Git: принудительно записать изменения в репозиторий, отменить слияние, создать релиз, порешать конфликты, откатить изменения, откатиться к предыдущему коммиту и др.

GitHub

Управление репозиторием на Github: настроить Dependabot, подключить Github Actions, добавить code_owners и pull_request_template.

Samples

Список библиотек и фреймворков, без которых не сделать работающее приложение. Список open-source проектов для изучения Android и Kotlin Multiplatform.

Android

Список библиотек и приложений для Android.

Kotlin Multiplatform

Список библиотек и приложений для Kotlin Multiplatform.

Actions

Список репозиториев для настройки GitHub Actions.

Структура всех страниц

Android Career
├── Getting Started
├── Job Interview
│   ├── System Design
│   ├── Live Coding
│   ├── Screening
│   ├── Soft
│   └── Overemployed
├── Computer Science
├── Algorithms
│   └── LeetCode
├── DevOps
│   └── Detekt
├── Java
│   ├── Collection
│   ├── HashMap
│   ├── Object
│   ├── Strings
│   ├── GC
│   ├── Thread
│   ├── Concurrent
│   ├── Atomic
│   └── RxJava
├── Kotlin
│   ├── Collection
│   ├── Generics
│   ├── Delegates
│   ├── Object
│   ├── Data Class
│   ├── Value Class
│   ├── Sealed Class
│   ├── Inner Class
│   ├── Inline Functions
│   ├── Infix Functions
│   ├── Extension Functions
│   ├── Scope Functions
│   ├── Coroutines
│   │   ├── Flow
│   │   ├── Channels
│   │   └── Cases
│   └────── Regex
├── Multiplatform
│   └── Cases
├── Android Platform
│   ├── Architecture
│   ├── Manifest
│   ├── Concurrent
│   ├── Network
│   ├── Collection
│   ├── Build
│   ├── Releases
│   ├── SDK
│   ├── Intent
│   ├── Activity
│   ├── Service
│   ├── BroadcastReceiver
│   ├── ContentProvider
│   ├── Fragment
│   ├── View & ViewGroup
│   ├── UI
│   ├── UI Components
│   ├── RecyclerView
│   ├── DI
│   ├── Test
│   ├── Lifecycle
│   └── SDK (Deprecated)
├── Android Jetpack
│   ├── Hilt
│   ├── Room
│   ├── ViewModel
│   ├── ViewBinding
│   ├── WorkManager
│   ├── Startup
│   ├── Media3
│   ├── Glance
│   ├── Paging
│   ├── Navigation
│   ├── DataStore
│   └── LiveData
├── Compose
│   ├── Side Effects
│   ├── CompositionLocal
│   ├── UI Components
│   ├── Canvas
│   ├── Material3
│   ├── Modifier
│   └── Multiplatform
├── Gradle
├── Firebase
├── Android Studio
│   └── Keyboard Shortcuts
├── Git
│   ├── Commands
│   └── GitHub
└── Samples
    ├── Android
    ├── Kotlin Multiplatform
    └── Actions