Interviul tehnic în dezvoltarea mobilă: esența desfășurării, etape și pregătire

Autor: IT Sectr Publicat: 2026-08-05 Timp de citire: 9 min

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 — evaluarea pe mai multe etape a dezvoltatorului, incluzând screening, algoritmi, arhitectură și interviu comportamental
  • Etape — screening HR (30 min), interviu algoritmic (60 min), secțiunea de arhitectură (60 min), interviul final cu liderul echipei
  • Algoritmi — array-uri, grafuri, programare dinamică și arbori — baza sarcinilor la interviul FAANG
  • Pregătire — LeetCode (300+ sarcini), design de sistem pentru aplicații mobile și recapitularea teoriei platformei
  • Soft Skills — comunicarea, argumentarea soluțiilor și lucrul cu feedback-ul influențează decizia finală

Ce este interviul tehnic în IT?

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.

Etapele interviului tehnic

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ă.

Interviul arhitectural

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.

Algoritmi și structuri de date la interviu

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.

Sarcină exemplu: Two Sum

kotlin
// 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ări de dezvoltare mobilă

Î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).

Întrebare exemplu: ciclul de viață

Î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ăAndroidiOS
Ciclul de viațăActivity: onCreate → onStart → onResume → onPause → onStop → onDestroyUIViewController: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
Salvarea stăriiSavedStateHandle, onSaveInstanceState, rememberSaveableCodable + UserDefaults, Core Data, @SceneStorage
Multi-threadingCoroutines (Dispatchers.Main, IO, Default)GCD (DispatchQueue.main, .global, .background)
Construire UIJetpack Compose (Modifier, @Composable)SwiftUI (View, @ViewBuilder, Modifier)
NavigațieJetpack Navigation Component, Cicerone, DecomposeNavigationStack, Coordinator, Router (RIBs)

Design de sistem al aplicației mobile

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.

Strategia de pregătire pentru interviu

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ânaCe să facețiRezultat
1-2Recapitularea teoriei: limbaj (Kotlin/Swift), platformă (Android/iOS), algoritmi (big O, structuri de bază)Conspect pe teme cheie
3-4LeetCode: 100-150 de sarcini, teme: Arrays, Hash Maps, Trees, DFS/BFS, DPRezolvarea sigură a sarcinilor Medium
5-6System Design: citirea „Designing Data-Intensive Applications”, practica a 5-7 design-uriȘablon de răspuns gata pentru System Design
7-8Interviuri simulate (5-10 interviuri), recapitularea întrebărilor de platformă, întrebări comportamentalePregătire completă pentru interviul real

Greșeli tipice ale candidaților

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

Câte runde sunt în interviul tehnic?

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.

Ce algoritmi trebuie să știți pentru interviu?

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.

Cum să vă pregătiți pentru interviu într-o lună?

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.

Care este diferența dintre interviul Junior și Senior?

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.

Ce se întreabă la interviul comportamental?

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

  • Interviul tehnic — evaluare pe mai multe etape cu 3-5 runde: screening HR, algoritmi, arhitectură, interviu comportamental și runda finală cu liderul
  • Algoritmi — etapa cheie: 250-400 de sarcini pe LeetCode (DP, Graphs, Arrays, Two Pointers) pentru o promovare sigură
  • Cunoștințe de platformă — Android (Activity Lifecycle, Jetpack Compose, Coroutines, DI) și iOS (ARC, SwiftUI, Combine, GCD) sunt evaluate la fel ca algoritmii
  • System Design — obligatoriu pentru Senior: cache, offline-first, paginare, optimizarea traficului și lucrul cu imagini
  • Pregătire — 4-8 săptămâni: teorie (2 săpt), algoritmi (2-4 săpt), System Design (1-2 săpt), interviuri simulate (1 săpt)
  • Comunicare — rostiți soluția cu voce tare, puneți întrebări clarificatoare, discutați trade-off-urile și nu începeți să scrieți codul imediat

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.

Discutați proiectul

Citiți și