Технички интервју — процес процене вештина програмера кроз серију интервјуа и практичних задатака. У мобилном развоју укључује проверу знања платформе (Android SDK, UIKit, SwiftUI), алгоритама и структура података, архитектонских образаца (MVVM, Clean Architecture, MVI) и системског дизајна мобилне апликације. Велике компаније спроводе од 3 до 5 рунди, просечно време запошљавања је 4-6 недеља. Према LinkedIn Talent Report 2025, потражња за iOS и Android инжењерима порасла је за 34% за две године.
Главно
Технички интервју — структурисан процес процене професионалних компетенција програмера, који укључује проверу hard skills (техничка знања) и soft skills (комуникација, рад у тиму). Стандардни циклус интервјуа мобилног програмера траје 3-5 рунди укупног трајања 4-6 сати. Проценат успешног проласка од броја примарних одговора износи 2-5% у великим технолошким компанијама.
Процес запошљавања у мобилном развоју разликује се од веб развоја: додају се питања о специфичностима платформе — животни циклус Activity/Fragment, ARC и управљање меморијом у Swift-у, threading модели (Main Thread, Dispatch Queue, Coroutines), рад са мрежним захтевима и кеширањем података. Android програмер мора да зна Jetpack Compose, Room, WorkManager, Dagger/Hilt. iOS програмер — SwiftUI, Core Data, Combine, URLSession. Разлика у захтевима расте са искуством: за Senior позиције додаје се системски дизајн и архитектура целе апликације.
Структура интервјуа зависи од нивоа. За Junior позиције довољно је основно знање језика и платформе (1-2 рунде). Middle програмер пролази 2-3 рунде са блоком алгоритама. Senior интервју укључује 4-5 рунди: алгоритме, архитектуру мобилне апликације, системски дизајн, бихејвиорални интервју и финални интервју са VPE (Vice President of Engineering) или CTO.
HR скрининг — прва фаза у трајању од 20-30 минута. Рекрутер проверава усклађеност искуства са захтевима радног места, разговара о условима рада, платним очекивањима и мотивацији кандидата. У овој фази је важно јасно формулисати своје искуство: пројекти, технолошки стек, достигнућа у метрикама (смањење времена учитавања, смањење стопе падова, убрзање компилације). HR скрининг не проверава техничка знања, али одстрањује до 40% кандидата због неусклађености са формалним захтевима.
Након скрининга следи алгоритамски интервју — кључна фаза за већину компанија. Трајање — 45-90 минута. Кандидату се даје 1-2 задатка на алгоритме и структуре података. Решење се пише на онлајн табли (Codility, HackerRank, CoderPad) или на папиру. Оцењује се не само тачност, већ и брзина мишљења, способност постављања разјашњавајућих питања и оптимизације решења. Према interviewing.io (2025), 73% кандидата пада управо на алгоритамској фази.
Архитектонска рунда проверава способност пројектовања мобилних апликација. Кандидату се предлаже да пројектује апликацију (TODO листа, messenger, агрегатор вести, стриминг сервис). Оцењује се избор архитектонског обрасца (MVP, MVVM, MVI, VIPER), организација слојева (Presentation, Domain, Data), рад са DI (Dagger, Hilt, Swinject) и навигација. За Android — познавање Jetpack Navigation, за iOS — Coordinator образац и SwiftUI NavigationStack.
На бихејвиоралном интервјуу оцењују се soft skills: способност рада у тиму, решавања конфликата, аргументације одлука. Користи се STAR метода (Situation, Task, Action, Result) — кандидат описује конкретну ситуацију из искуства. Пример питања: „Испричајте о најтежој грешци коју сте пронашли и поправили”. Финална рунда са тимлидом или VPE проверава стратешко размишљање и културолошку усклађеност са компанијом.
Алгоритамски задаци — обавезна компонента интервјуа у великим технолошким компанијама (Google, Meta, Yandex, Tinkoff, Avito). Главни циљ је процена ability to solve (способност решавања проблема), а не познавање језика. Кандидат може користити било који програмски језик — предност се даје Kotlin-у за Android и Swift-у за iOS. Типичне теме: низови, хеш табеле, графови, динамичко програмирање, стабла (Binary Tree, Trie, Segment Tree).
Према LeetCode (2025), за сигурно пролажење алгоритамског интервјуа потребно је решити 250-400 задатака. Кључне теме по учесталости појављивања: Two Pointers (12%), Sliding Window (10%), DFS/BFS на графовима (14%), Binary Search (8%), Dynamic Programming (18%), Hash Map / Set (15%). Big O нотација — обавезан елемент: кандидат мора објаснити временску и просторну сложеност свог решења и предложити оптимизацију.
// LeetCode 1: Two Sum — класичан HashMap проблем
fun twoSum(nums: IntArray, target: Int): IntArray {
// Чувај complement = target - nums[i] и његов индекс
val map = mutableMapOf<Int, Int>()
for (i in nums.indices) {
val complement = target - nums[i]
// Ако је complement пронађен — пар је пронађен
if (complement in map) {
return intArrayOf(map[complement]!!, i)
}
map[nums[i]] = i
}
throw IllegalArgumentException("No two sum solution")
}
// Време: O(n), Меморија: O(n)Задатак Two Sum — најпопуларнији задатак на интервјуима (према LeetCode, преко 20 милиона слања). Решење у O(n) користи HashMap: за сваки елемент проверавамо да ли се разлика target - nums[i] већ појавила. Ако да — враћамо индексе. Ако не — чувамо тренутни елемент у HashMap. Наивно решење у O(n²) са две угњеждене петље сматра се непролазним за Senior позиције.
Питања о платформи на интервјуу мобилног програмера деле се у три блока: фундаментална знања платформе, рад са UI и вишенитност, мрежни захтеви и складиштење података. За Android обавезно: животни циклус Activity и Fragment, разлике Fragment v1 vs Fragment v2, ActivityResult API (замена за onActivityResult), ViewModel + StateFlow, Compose lifecycle. За iOS: животни циклус UIViewController, ARC (Automatic Reference Counting), DispatchQueue и OperationQueue, SwiftUI lifecycle (View — @State — @Binding — @ObservedObject).
Типично питање: „Који callback-и животног циклуса Activity се позивају при ротацији екрана?”. Тачан одговор: onPause → onStop → onDestroy → onCreate → onStart → onResume. Додатно питање: „Како сачувати стање при ротацији?” — преко SavedStateHandle у ViewModel-у, onSaveInstanceState Bundle или rememberSaveable у Jetpack Compose-у. За iOS: „Шта се дешава са UIViewController-ом при одласку у позадину?” — viewWillDisappear → viewDidDisappear → didEnterBackground (AppDelegate).
| Компонента | Android | iOS |
|---|---|---|
| Животни циклус | Activity: onCreate → onStart → onResume → onPause → onStop → onDestroy | UIViewController: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear |
| Чување стања | SavedStateHandle, onSaveInstanceState, rememberSaveable | Codable + UserDefaults, Core Data, @SceneStorage |
| Вишенитност | Coroutines (Dispatchers.Main, IO, Default) | GCD (DispatchQueue.main, .global, .background) |
| Изградња UI | Jetpack Compose (Modifier, @Composable) | SwiftUI (View, @ViewBuilder, Modifier) |
| Навигација | Jetpack Navigation Component, Cicerone, Decompose | NavigationStack, Coordinator, Router (RIBs) |
System Design Interview за мобилног програмера проверава способност пројектовања архитектуре клијентске апликације и њене интеракције са сервером. Стандардни задаци: пројектовање вести фида (као Instagram/TikTok), ћаскања (као Telegram), видео плејера (као YouTube), кеша првог нивоа (L1 — in-memory, L2 — диск). Трајање — 60 минута. Оцењује се структурисаност мишљења, а не број детаља.
Шаблон одговора за System Design: 1) Clarify requirements — разјаснити функционалне (фид, лајкови, коментари, отпремање фотографија) и нефункционалне захтеве (офлајн, брзина учитавања, потрошња батерије). 2) High-level design — нацртати шему слојева: UI Layer → ViewModel → Repository → Network / Cache / DB. 3) Deep dive — детаљисати кључне компоненте, на пример механизам пагинације (Paging 3 за Android, Offset-based vs Cursor-based за iOS). 4) Trade-offs — дискутовати компромисе: кеш vs свежина података, offline-first vs online-only.
Кључне теме System Design за мобилне: кеширање (LRU Cache, Disk Cache са лимитом), рад са сликама (Coil, Glide, SDWebImage — учитавање, кеш, placeholder, прогрес), оптимизација саобраћаја (protobuf уместо JSON, компресија, Differ/GraphQL), рад у офлајну (Room + Sync Adapter, Core Data + iCloud, WorkManager за позадинску синхронизацију). Offline-first — једна од најчешћих тема за Senior позиције.
За iOS се додају питања о App Thinning, Slicing, On-Demand Resources и оптимизацији билда. За Android — о R8/ProGuard, App Bundles (AAB vs APK), Dynamic Delivery и Minification. Архитектонско питање „Како имплементирати кеш слика са ограничењем меморије?” проверава разумевање LRU Cache (LinkedHashMap са access order), Disk LRU Cache (DiskLruCache Џејка Вортона) и слоја меморијског кеша Coil/Glide.
Припрема за интервју захтева систематски приступ 4-8 недеља пре планираног интервјуа. Основна стратегија: 2 недеље за понављање теорије (језик, платформа, алгоритми), 2-4 недеље за решавање алгоритамских задатака (100-300 задатака на LeetCode-у), 1-2 недеље за mock интервјуе (Pramp, interview.io, са пријатељима). За Senior позиције додаје се припрема System Design (2-3 недеље). План даје 70-80% успешног проласка на циљаном нивоу.
За мобилне програмере специфична припрема укључује: читање Android Developers Guide / iOS Developer Library, анализу изворног кода популарних библиотека (Retrofit, OkHttp, Coil, Koin, Alamofire, Kingfisher), писање pet-пројекта са Clean Architecture и CI/CD (GitHub Actions, Fastlane). Напишите пример апликације на GitHub-у са модуларном архитектуром, DI, тестовима (Unit + UI + Snapshot) — то ће показати дубоко разумевање и биће аргумент на интервјуу.
| Недеља | Чиме се бавити | Резултат |
|---|---|---|
| 1-2 | Понављање теорије: језик (Kotlin/Swift), платформа (Android/iOS), алгоритми (big O, основне структуре) | Конспект кључних тема |
| 3-4 | LeetCode: 100-150 задатака, теме: Arrays, Hash Maps, Trees, DFS/BFS, DP | Сигурно решавање Medium задатака |
| 5-6 | System Design: читање „Designing Data-Intensive Applications”, пракса 5-7 дизајнова | Готов шаблон одговора за System Design |
| 7-8 | Mock интервјуи (5-10 интервјуа), понављање питања о платформи, бихејвиорална питања | Потпуна спремност за прави интервју |
Грешка 1: ћутљиво решавање. Кандидат пише код ћутке, не коментаришући ток мисли. Интервјуер не може да процени процес решавања. Исправно: изговарати сваки корак наглас — „Видим да се задатак своди на претрагу графа. Предлажем да користимо BFS јер треба да пронађемо најкраћи пут”. Таква комуникација даје интервјуеру могућност да усмери кандидата при грешци, што се позитивно оцењује.
Грешка 2: одмах писање кода. Почетак кодирања без разјашњавања захтева и дискусије приступа — један од главних разлога неуспеха. Пре писања кода потребно је: разјаснити улазне/излазне податке, дискутовати ивичне случајеве, упоредити 2-3 приступа са проценом Big O и тек након договора са интервјуером написати оптимално решење. Исправан образац: Clarify → High-level approach → Big O → Write code → Test with examples → Discuss trade-offs.
Грешка 3: непознавање платформе. Кандидат одлично решава алгоритме, али не може да објасни разлику између Activity и Fragment или између weak/unowned у Swift-у. За мобилне позиције знање платформе се оцењује једнако као и алгоритми. Проучите: разлике верзија SDK (compileSdk vs minSdk vs targetSdk), ProGuard/R8 правила за популарне библиотеке, Swift Concurrency (async/await, actors) и MainActor. Сваки трећи кандидат за iOS позицију пада на питањима о ARC-у.
Често постављана питања
Стандардан број рунди је 3-5: HR скрининг (30 минута), алгоритми (60 минута), архитектура/системски дизајн (60 минута), бихејвиорални интервју (45 минута), финална рунда са тимлидом (60 минута). У стартапима може бити 2-3 рунде, у великим компанијама (Google, Meta) — до 6 рунди. Укупно трајање циклуса интервјуа — од 2 до 6 недеља у зависности од компаније.
Топ 5 тема за алгоритамски интервју: динамичко програмирање (18% задатака), DFS/BFS на графовима (14%), Two Pointers (12%), Sliding Window (10%), Binary Search (8%). За пролазак интервјуа у FAANG препоручује се решавање 250-400 задатака на LeetCode-у. Medium ниво — обавезни минимум. За Senior позиције додају се задаци на стаблима и приоритетним редовима.
План за месец дана: недеља 1 — понављање језика и платформе (језик Kotlin/Swift, основне библиотеке, животни циклуси). Недеља 2 — LeetCode Medium (100 задатака, теме: Arrays, Hash Maps, Trees). Недеља 3 — System Design за мобилне (кеш, пагинација, offline-first). Недеља 4 — mock интервјуи (минимум 3 на Pramp или са колегом). Кључни савет: полажите mock интервјуе у условима приближним реалним — рок, непознати интервјуер, онлајн табла.
Junior: 1-2 рунде, основни алгоритми (reverse string, fizzbuzz, basic tree traversal), питања о језику и основама платформе. Middle: 2-3 рунде, Medium алгоритми, питања о архитектури (MVP/MVVM), рад са мрежом и кешом. Senior: 4-5 рунди, Hard алгоритми, System Design, архитектура целе апликације, CI/CD, code review, бихејвиорална питања о лидерству и менторству. Очекује се да Senior сам поставља питања и води дискусију.
Примери питања: „Испричајте о конфликту у тиму и како сте га решили”, „Која функција је била најтежа и зашто”, „Зашто желите да радите баш код нас”, „Шта сте радили на побољшању процеса у тиму”. Користите STAR метод (Situation, Task, Action, Result) за структуриран одговор. Припремите 3-4 приче из искуства унапред — то покрива 80% бихејвиоралних питања.
Закључци
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође