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