Interviul tehnic — procesul de evaluare a abilităților dezvoltatorului printr-o serie de interviuri și sarcini practice. În dezvoltarea mobilă include verificarea cunoștințelor platformei (Android SDK, UIKit, SwiftUI), algoritmilor și structurilor de date, modelelor arhitecturale (MVVM, Clean Architecture, MVI) și designului de sistem al aplicației mobile. Companiile mari desfășoară între 3 și 5 runde, timpul mediu de angajare este de 4-6 săptămâni. Conform LinkedIn Talent Report 2025, cererea de ingineri iOS și Android a crescut cu 34% în doi ani.
Principalele
Interviul tehnic — un proces structurat de evaluare a competențelor profesionale ale dezvoltatorului, incluzând verificarea hard skills (cunoștințe tehnice) și soft skills (comunicare, lucru în echipă). Ciclul standard de interviu al unui dezvoltator mobil durează 3-5 runde cu o durată totală de 4-6 ore. Procentul de promovare din numărul de răspunsuri primare este de 2-5% în companiile mari de tehnologie.
Procesul de angajare în dezvoltarea mobilă diferă de dezvoltarea web: se adaugă întrebări legate de specificul platformei — ciclul de viață Activity/Fragment, ARC și gestionarea memoriei în Swift, modelele de threading (Main Thread, Dispatch Queue, Coroutines), lucrul cu solicitări de rețea și stocarea în cache a datelor. Dezvoltatorul Android trebuie să cunoască Jetpack Compose, Room, WorkManager, Dagger/Hilt. Dezvoltatorul iOS — SwiftUI, Core Data, Combine, URLSession. Diferența în cerințe crește cu experiența: pentru pozițiile Senior se adaugă designul de sistem și arhitectura întregii aplicații.
Structura interviului depinde de nivel. Pentru pozițiile Junior sunt suficiente cunoștințele de bază ale limbajului și platformei (1-2 runde). Dezvoltatorul Middle trece prin 2-3 runde cu un bloc de algoritmi. Interviul Senior include 4-5 runde: algoritmi, arhitectura aplicației mobile, design de sistem, interviu comportamental și interviul final cu VPE (Vice President of Engineering) sau CTO.
Screening HR — prima etapă cu durata de 20-30 de minute. Recrutorul verifică conformitatea experienței cu cerințele postului, discută condițiile de muncă, așteptările salariale și motivația candidatului. În această etapă este important să vă formulați clar experiența: proiecte, stiva de tehnologii, realizări în metrici (reducerea timpului de încărcare, scăderea ratei de crash, accelerarea compilării). Screening-ul HR nu verifică cunoștințele tehnice, dar elimină până la 40% dintre candidați din cauza neconformității cu cerințele formale.
După screening urmează interviul algoritmic — etapa cheie pentru majoritatea companiilor. Durata — 45-90 de minute. Candidatul primește 1-2 sarcini de algoritmi și structuri de date. Soluția se scrie pe o tablă online (Codility, HackerRank, CoderPad) sau pe hârtie. Se evaluează nu doar corectitudinea, ci și viteza de gândire, abilitatea de a pune întrebări clarificatoare și de a optimiza soluția. Conform interviewing.io (2025), 73% dintre candidați eșuează tocmai la etapa algoritmică.
Runda arhitecturală verifică abilitatea de a proiecta aplicații mobile. Candidatului i se propune să proiecteze o aplicație (listă TODO, mesager, agregator de știri, serviciu de streaming). Se evaluează alegerea modelului arhitectural (MVP, MVVM, MVI, VIPER), organizarea straturilor (Presentation, Domain, Data), lucrul cu DI (Dagger, Hilt, Swinject) și navigația. Pentru Android — cunoașterea Jetpack Navigation, pentru iOS — modelul Coordinator și SwiftUI NavigationStack.
La interviul comportamental se evaluează soft skills: abilitatea de a lucra în echipă, de a rezolva conflicte, de a argumenta deciziile. Se folosește metoda STAR (Situation, Task, Action, Result) — candidatul descrie o situație concretă din experiență. Exemplu de întrebare: „Povestește despre cea mai dificilă eroare pe care ai găsit-o și ai reparat-o”. Runda finală cu liderul echipei sau VPE verifică gândirea strategică și potrivirea culturală cu compania.
Sarcinile algoritmice — o componentă obligatorie a interviurilor în companiile mari de tehnologie (Google, Meta, Yandex, Tinkoff, Avito). Scopul principal este evaluarea ability to solve (capacitatea de a rezolva probleme), nu cunoașterea limbajului. Candidatul poate folosi orice limbaj de programare — preferința se acordă Kotlin pentru Android și Swift pentru iOS. Temele tipice: array-uri, tabele hash, grafuri, programare dinamică, arbori (Binary Tree, Trie, Segment Tree).
Conform datelor LeetCode (2025), pentru o promovare sigură a interviului algoritmic este necesar să se rezolve 250-400 de sarcini. Temele cheie după frecvența apariției: Two Pointers (12%), Sliding Window (10%), DFS/BFS pe grafuri (14%), Binary Search (8%), Dynamic Programming (18%), Hash Map / Set (15%). Notația Big O — element obligatoriu: candidatul trebuie să explice complexitatea temporală și spațială a soluției sale și să propună optimizarea.
// LeetCode 1: Two Sum — problema HashMap clasică
fun twoSum(nums: IntArray, target: Int): IntArray {
// Stochează complement = target - nums[i] și indexul său
val map = mutableMapOf<Int, Int>()
for (i in nums.indices) {
val complement = target - nums[i]
// Dacă complementul este găsit — perechea este găsită
if (complement in map) {
return intArrayOf(map[complement]!!, i)
}
map[nums[i]] = i
}
throw IllegalArgumentException("No two sum solution")
}
// Timp: O(n), Spațiu: O(n)Sarcina Two Sum — cea mai populară sarcină la interviuri (conform LeetCode, peste 20 de milioane de trimiteri). Soluția în O(n) folosește HashMap: pentru fiecare element verificăm dacă diferența target - nums[i] a mai apărut. Dacă da — returnăm indicii. Dacă nu — salvăm elementul curent în HashMap. Soluția naivă în O(n²) cu două bucle imbricate este considerată nepromovabilă pentru pozițiile Senior.
Întrebările de platformă la interviul dezvoltatorului mobil se împart în trei blocuri: cunoștințe fundamentale ale platformei, lucrul cu UI și multi-threading, solicitări de rețea și stocare a datelor. Pentru Android obligatorii: ciclul de viață Activity și Fragment, diferențele Fragment v1 vs Fragment v2, ActivityResult API (înlocuitor pentru onActivityResult), ViewModel + StateFlow, Compose lifecycle. Pentru iOS: ciclul de viață UIViewController, ARC (Automatic Reference Counting), DispatchQueue și OperationQueue, SwiftUI lifecycle (View — @State — @Binding — @ObservedObject).
Întrebarea tipică: „Ce callback-uri ale ciclului de viață Activity sunt apelate la rotirea ecranului?”. Răspunsul corect: onPause → onStop → onDestroy → onCreate → onStart → onResume. Întrebarea suplimentară: „Cum se salvează starea la rotire?” — prin SavedStateHandle în ViewModel, onSaveInstanceState Bundle sau rememberSaveable în Jetpack Compose. Pentru iOS: „Ce se întâmplă cu UIViewController la trecerea în fundal?” — viewWillDisappear → viewDidDisappear → didEnterBackground (AppDelegate).
| Componentă | Android | iOS |
|---|---|---|
| Ciclul de viață | Activity: onCreate → onStart → onResume → onPause → onStop → onDestroy | UIViewController: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear |
| Salvarea stării | SavedStateHandle, onSaveInstanceState, rememberSaveable | Codable + UserDefaults, Core Data, @SceneStorage |
| Multi-threading | Coroutines (Dispatchers.Main, IO, Default) | GCD (DispatchQueue.main, .global, .background) |
| Construire UI | Jetpack Compose (Modifier, @Composable) | SwiftUI (View, @ViewBuilder, Modifier) |
| Navigație | Jetpack Navigation Component, Cicerone, Decompose | NavigationStack, Coordinator, Router (RIBs) |
System Design Interview pentru dezvoltatorul mobil verifică abilitatea de a proiecta arhitectura aplicației client și interacțiunea acesteia cu serverul. Sarcini standard: proiectarea unui flux de știri (ca Instagram/TikTok), chat (ca Telegram), player video (ca YouTube), cache de prim nivel (L1 — in-memory, L2 — disc). Durata — 60 de minute. Se evaluează structurarea gândirii, nu cantitatea de detalii.
Șablonul de răspuns pentru System Design: 1) Clarify requirements — clarificarea cerințelor funcționale (flux, like-uri, comentarii, încărcare foto) și nefuncționale (offline, viteza de încărcare, consumul bateriei). 2) High-level design — desenarea schemei straturilor: UI Layer → ViewModel → Repository → Network / Cache / DB. 3) Deep dive — detalierea componentelor cheie, de exemplu mecanismul de paginare (Paging 3 pentru Android, Offset-based vs Cursor-based pentru iOS). 4) Trade-offs — discutarea compromisurilor: cache vs prospețimea datelor, offline-first vs online-only.
Temele cheie ale System Design pentru mobil: stocarea în cache (LRU Cache, Disk Cache cu limită), lucrul cu imagini (Coil, Glide, SDWebImage — încărcare, cache, placeholder, progres), optimizarea traficului (protobuf în loc de JSON, compresie, Differ/GraphQL), lucrul offline (Room + Sync Adapter, Core Data + iCloud, WorkManager pentru sincronizare în fundal). Offline-first — una dintre cele mai frecvente teme pentru pozițiile Senior.
Pentru iOS se adaugă întrebări despre App Thinning, Slicing, On-Demand Resources și optimizarea build-ului. Pentru Android — despre R8/ProGuard, App Bundles (AAB vs APK), Dynamic Delivery și Minification. Întrebarea arhitecturală „Cum se implementează un cache de imagini cu limită de memorie?” verifică înțelegerea LRU Cache (LinkedHashMap cu access order), Disk LRU Cache (DiskLruCache a lui Jake Wharton) și stratul de cache de memorie Coil/Glide.
Pregătirea pentru interviu necesită o abordare sistematică cu 4-8 săptămâni înainte de interviul planificat. Strategia de bază: 2 săptămâni pentru recapitularea teoriei (limbaj, platformă, algoritmi), 2-4 săptămâni pentru rezolvarea sarcinilor algoritmice (100-300 de sarcini pe LeetCode), 1-2 săptămâni pentru interviuri simulate (Pramp, interview.io, cu prieteni). Pentru pozițiile Senior se adaugă pregătirea System Design (2-3 săptămâni). Planul oferă 70-80% promovare cu succes la nivelul țintă.
Pentru dezvoltatorii mobili, pregătirea specifică include: citirea Android Developers Guide / iOS Developer Library, analiza codului sursă al bibliotecilor populare (Retrofit, OkHttp, Coil, Koin, Alamofire, Kingfisher), scrierea unui proiect personal cu Clean Architecture și CI/CD (GitHub Actions, Fastlane). Scrieți o aplicație exemplu pe GitHub cu arhitectură modulară, DI, teste (Unit + UI + Snapshot) — aceasta va demonstra o înțelegere profundă și va fi un argument la interviu.
| Săptămâna | Ce să faceți | Rezultat |
|---|---|---|
| 1-2 | Recapitularea teoriei: limbaj (Kotlin/Swift), platformă (Android/iOS), algoritmi (big O, structuri de bază) | Conspect pe teme cheie |
| 3-4 | LeetCode: 100-150 de sarcini, teme: Arrays, Hash Maps, Trees, DFS/BFS, DP | Rezolvarea sigură a sarcinilor Medium |
| 5-6 | System Design: citirea „Designing Data-Intensive Applications”, practica a 5-7 design-uri | Șablon de răspuns gata pentru System Design |
| 7-8 | Interviuri simulate (5-10 interviuri), recapitularea întrebărilor de platformă, întrebări comportamentale | Pregătire completă pentru interviul real |
Greșeala 1: rezolvarea tăcută. Candidatul scrie codul în tăcere, fără a comenta firul gândirii. Intervievatorul nu poate evalua procesul de rezolvare. Corect: rostiți fiecare pas cu voce tare — „Văd că sarcina se reduce la căutarea într-un graf. Propun să folosesc BFS pentru că trebuie să găsim cel mai scurt drum”. O astfel de comunicare îi oferă intervievatorului posibilitatea de a direcționa candidatul în caz de eroare, ceea ce este evaluat pozitiv.
Greșeala 2: scrierea imediată a codului. Începerea codării fără clarificarea cerințelor și discutarea abordărilor — una dintre principalele cauze de eșec. Înainte de a scrie codul, trebuie: clarificate datele de intrare/ieșire, discutate cazurile limită, comparate 2-3 abordări cu evaluarea Big O și abia după acordul cu intervievatorul scrisă soluția optimă. Modelul corect: Clarify → High-level approach → Big O → Write code → Test with examples → Discuss trade-offs.
Greșeala 3: necunoașterea platformei. Candidatul rezolvă excelent algoritmii, dar nu poate explica diferența dintre Activity și Fragment sau dintre weak/unowned în Swift. Pentru posturile mobile, cunoștințele de platformă sunt evaluate la fel ca algoritmii. Studiați: diferențele versiunilor SDK (compileSdk vs minSdk vs targetSdk), regulile ProGuard/R8 pentru bibliotecile populare, Swift Concurrency (async/await, actors) și MainActor. Fiecare al treilea candidat la poziția iOS eșuează la întrebările despre ARC.
Întrebări frecvente
Numărul standard de runde este 3-5: screening HR (30 de minute), algoritmi (60 de minute), arhitectură/design de sistem (60 de minute), interviu comportamental (45 de minute), runda finală cu liderul echipei (60 de minute). În startup-uri pot fi 2-3 runde, în companii mari (Google, Meta) — până la 6 runde. Durata totală a ciclului de interviuri — de la 2 la 6 săptămâni, în funcție de companie.
Top 5 teme pentru interviul algoritmic: programare dinamică (18% sarcini), DFS/BFS pe grafuri (14%), Two Pointers (12%), Sliding Window (10%), Binary Search (8%). Pentru a promova interviul în FAANG se recomandă rezolvarea a 250-400 de sarcini pe LeetCode. Nivelul Medium — minimul obligatoriu. Pentru pozițiile Senior se adaugă sarcini pe arbori și cozi de prioritate.
Planul pentru o lună: săptămâna 1 — recapitularea limbajului și platformei (limbaj Kotlin/Swift, biblioteci de bază, cicluri de viață). Săptămâna 2 — LeetCode Medium (100 de sarcini, teme: Arrays, Hash Maps, Trees). Săptămâna 3 — System Design pentru mobil (cache, paginare, offline-first). Săptămâna 4 — interviuri simulate (minimum 3 pe Pramp sau cu un coleg). Sfatul cheie: susțineți interviurile simulate în condiții apropiate de real — termen limită, intervievator necunoscut, tablă online.
Junior: 1-2 runde, algoritmi de bază (reverse string, fizzbuzz, basic tree traversal), întrebări despre limbaj și fundamentele platformei. Middle: 2-3 runde, algoritmi Medium, întrebări de arhitectură (MVP/MVVM), lucrul cu rețeaua și cache-ul. Senior: 4-5 runde, algoritmi Hard, System Design, arhitectura întregii aplicații, CI/CD, code review, întrebări comportamentale despre leadership și mentorat. Se așteaptă ca Seniorul însuși să pună întrebări și să conducă discuția.
Exemple de întrebări: „Povestește despre un conflict în echipă și cum l-ai rezolvat”, „Care funcție a fost cea mai dificilă și de ce”, „De ce vrei să lucrezi tocmai la noi”, „Ce ai făcut pentru a îmbunătăți procesele în echipă”. Folosiți metoda STAR (Situation, Task, Action, Result) pentru un răspuns structurat. Pregătiți 3-4 povești din experiență din timp — acestea acoperă 80% dintre întrebările comportamentale.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și