Rozmowa techniczna w rozwoju aplikacji mobilnych: istota prowadzenia, etapy i przygotowanie

Autor: IT Sectr Opublikowano: 2026-08-05 Czas czytania: 9 min

Rozmowa techniczna (interview techniczne) — proces oceny umiejętności programisty poprzez serię rozmów i zadań praktycznych. W rozwoju aplikacji mobilnych obejmuje sprawdzenie znajomości platformy (Android SDK, UIKit, SwiftUI), algorytmów i struktur danych, wzorców architektonicznych (MVVM, Clean Architecture, MVI) oraz projektowania systemowego aplikacji mobilnych. Duże firmy przeprowadzają od 3 do 5 rund, średni czas rekrutacji to 4-6 tygodni. Według danych LinkedIn Talent Report 2025, zapotrzebowanie na inżynierów iOS i Android wzrosło o 34% w ciągu dwóch lat.

Najważniejsze

  • Rozmowa techniczna — wieloetapowa ocena programisty obejmująca screening, algorytmy, architekturę i rozmowę behawioralną
  • Etapy — screening HR (30 min), interview algorytmiczne (60 min), sekcja architektoniczna (60 min), finałowa rozmowa z liderem zespołu
  • Algorytmy — tablice, grafy, programowanie dynamiczne i drzewa — podstawa zadań na rozmowach w FAANG
  • Przygotowanie — LeetCode (300+ zadań), projektowanie systemowe dla aplikacji mobilnych i powtórka teorii platformy
  • Soft Skills — komunikacja, argumentacja rozwiązań i praca z informacją zwrotną wpływają na ostateczną decyzję

Czym jest rozmowa techniczna w IT?

Rozmowa techniczna (interview techniczne) — ustrukturyzowany proces oceny kompetencji zawodowych programisty, obejmujący sprawdzenie hard skills (wiedza techniczna) i soft skills (komunikacja, praca w zespole). Standardowy cykl rozmowy kwalifikacyjnej programisty mobilnego trwa 3-5 rund o łącznym czasie 4-6 godzin. Odsetek pomyślnych przejść od liczby wstępnych odpowiedzi wynosi 2-5% w dużych firmach technologicznych.

Proces rekrutacji w rozwoju aplikacji mobilnych różni się od tworzenia stron internetowych: dodawane są pytania dotyczące specyfiki platformy — cykl życia Activity/Fragment, ARC i zarządzanie pamięcią w Swift, modele wielowątkowości (Main Thread, Dispatch Queue, Coroutines), praca z żądaniami sieciowymi i buforowaniem danych. Android developer musi znać Jetpack Compose, Room, WorkManager, Dagger/Hilt. iOS developer — SwiftUI, Core Data, Combine, URLSession. Różnica w wymaganiach rośnie z doświadczeniem: dla stanowisk Senior dodawane jest projektowanie systemowe i architektura całej aplikacji.

Struktura rozmowy zależy od poziomu. Dla pozycji Junior wystarcza podstawowa znajomość języka i platformy (1-2 rundy). Middle developer przechodzi 2-3 rundy z blokiem algorytmów. Senior interview obejmuje 4-5 rund: algorytmy, architekturę aplikacji mobilnej, projektowanie systemowe, rozmowę behawioralną i finałową rozmowę z VPE (Vice President of Engineering) lub CTO.

Etapy rozmowy technicznej

Screening HR — pierwszy etap trwający 20-30 minut. Rekruter sprawdza zgodność doświadczenia z wymaganiami oferty pracy, omawia warunki pracy, oczekiwania płacowe i motywację kandydata. Na tym etapie ważne jest jasne sformułowanie swojego doświadczenia: projekty, stos technologiczny, osiągnięcia w metrykach (skrócenie czasu ładowania, zmniejszenie crash rate, przyspieszenie kompilacji). Screening HR nie sprawdza wiedzy technicznej, ale odsiewa do 40% kandydatów z powodu niespełnienia formalnych wymagań.

Po screeningu następuje interview algorytmiczne — kluczowy etap dla większości firm. Czas trwania — 45-90 minut. Kandydat otrzymuje 1-2 zadania z algorytmów i struktur danych. Rozwiązanie pisze się na tablicy online (Codility, HackerRank, CoderPad) lub na papierze. Oceniana jest nie tylko poprawność, ale także szybkość myślenia, umiejętność zadawania pytań wyjaśniających i optymalizowania rozwiązań. Według danych interviewing.io (2025), 73% kandydatów odpada właśnie na etapie algorytmicznym.

Interview architektoniczne

Runda architektoniczna sprawdza umiejętność projektowania aplikacji mobilnych. Kandydat ma za zadanie zaprojektować aplikację (listę TODO, komunikator, agregator wiadomości, serwis streamingowy). Oceniany jest wybór wzorca architektonicznego (MVP, MVVM, MVI, VIPER), organizacja warstw (Presentation, Domain, Data), praca z DI (Dagger, Hilt, Swinject) i nawigacja. Dla Androida — znajomość Jetpack Navigation, dla iOS — wzorzec Coordinator i SwiftUI NavigationStack.

Na rozmowie behawioralnej oceniane są soft skills: umiejętność pracy w zespole, rozwiązywania konfliktów, argumentowania decyzji. Stosuje się metodę STAR (Situation, Task, Action, Result) — kandydat opisuje konkretną sytuację z doświadczenia. Przykładowe pytanie: „Opowiedz o najtrudniejszym bugu, który znalazłeś i naprawiłeś”. Runda finałowa z liderem zespołu lub VPE sprawdza myślenie strategiczne i dopasowanie kulturowe do firmy.

Algorytmy i struktury danych na rozmowie

Zadania algorytmiczne — obowiązkowy komponent rozmów w dużych firmach technologicznych (Google, Meta, Yandex, Tinkoff, Avito). Głównym celem jest ocena ability to solve (zdolność rozwiązywania problemów), a nie znajomości języka. Kandydat może użyć dowolnego języka programowania — preferowany jest Kotlin dla Androida i Swift dla iOS. Typowe tematy: tablice, tablice haszujące, grafy, programowanie dynamiczne, drzewa (Binary Tree, Trie, Segment Tree).

Według danych LeetCode (2025), do pewnego przejścia rozmowy algorytmicznej należy rozwiązać 250-400 zadań. Kluczowe tematy według częstotliwości występowania: Two Pointers (12%), Sliding Window (10%), DFS/BFS na grafach (14%), Binary Search (8%), Dynamic Programming (18%), Hash Map / Set (15%). Notacja Big O — obowiązkowy element: kandydat musi wyjaśnić złożoność czasową i pamięciową swojego rozwiązania oraz zaproponować optymalizację.

Przykładowe zadanie: Two Sum

kotlin
// LeetCode 1: Two Sum — klasyczny problem z HashMap
fun twoSum(nums: IntArray, target: Int): IntArray {
    // Przechowaj complement = target - nums[i] i jego indeks
    val map = mutableMapOf<Int, Int>()

    for (i in nums.indices) {
        val complement = target - nums[i]

        // Jeśli complement znaleziony — para znaleziona
        if (complement in map) {
            return intArrayOf(map[complement]!!, i)
        }
        map[nums[i]] = i
    }
    throw IllegalArgumentException("No two sum solution")
}

// Czas: O(n), Pamięć: O(n)

Zadanie Two Sum — najpopularniejsze zadanie na rozmowach (według LeetCode, ponad 20 mln przesłań). Rozwiązanie w O(n) wykorzystuje HashMap: dla każdego elementu sprawdzamy, czy różnica target - nums[i] już wystąpiła. Jeśli tak — zwracamy indeksy. Jeśli nie — zapisujemy bieżący element w HashMap. Rozwiązanie naiwne w O(n²) z dwiema zagnieżdżonymi pętlami jest uznawane za nieprzechodzące dla pozycji Senior.

Pytania z rozwoju aplikacji mobilnych

Pytania platformowe na rozmowie programisty mobilnego dzielą się na trzy bloki: podstawowa wiedza o platformie, praca z UI i wielowątkowością, żądania sieciowe i przechowywanie danych. Dla Androida obowiązkowe: cykl życia Activity i Fragment, różnice Fragment v1 vs Fragment v2, ActivityResult API (zamiennik onActivityResult), ViewModel + StateFlow, Compose lifecycle. Dla iOS: cykl życia UIViewController, ARC (Automatic Reference Counting), DispatchQueue i OperationQueue, SwiftUI lifecycle (View — @State — @Binding — @ObservedObject).

Przykładowe pytanie: cykl życia

Typowe pytanie: „Jakie callbacki cyklu życia Activity są wywoływane przy obrocie ekranu?”. Prawidłowa odpowiedź: onPause → onStop → onDestroy → onCreate → onStart → onResume. Dodatkowe pytanie: „Jak zachować stan przy obrocie?” — przez SavedStateHandle w ViewModel, onSaveInstanceState Bundle lub rememberSaveable w Jetpack Compose. Dla iOS: „Co dzieje się z UIViewController przy przejściu do tła?” — viewWillDisappear → viewDidDisappear → didEnterBackground (AppDelegate).

KomponentAndroidiOS
Cykl życiaActivity: onCreate → onStart → onResume → onPause → onStop → onDestroyUIViewController: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
Zapisywanie stanuSavedStateHandle, onSaveInstanceState, rememberSaveableCodable + UserDefaults, Core Data, @SceneStorage
WielowątkowośćCoroutines (Dispatchers.Main, IO, Default)GCD (DispatchQueue.main, .global, .background)
Budowa UIJetpack Compose (Modifier, @Composable)SwiftUI (View, @ViewBuilder, Modifier)
NawigacjaJetpack Navigation Component, Cicerone, DecomposeNavigationStack, Coordinator, Router (RIBs)

Projektowanie systemowe aplikacji mobilnej

System Design Interview dla programisty mobilnego sprawdza umiejętność zaprojektowania architektury aplikacji klienckiej i jej interakcji z serwerem. Standardowe zadania: zaprojektować kanał wiadomości (jak Instagram/TikTok), czat (jak Telegram), odtwarzacz wideo (jak YouTube), pamięć podręczną pierwszego poziomu (L1 — in-memory, L2 — dysk). Czas trwania — 60 minut. Oceniana jest strukturalność myślenia, a nie liczba szczegółów.

Szablon odpowiedzi na System Design: 1) Clarify requirements — doprecyzować wymagania funkcjonalne (kanał, polubienia, komentarze, ładowanie zdjęć) i niefunkcjonalne (offline, szybkość ładowania, zużycie baterii). 2) High-level design — narysować schemat warstw: UI Layer → ViewModel → Repository → Network / Cache / DB. 3) Deep dive — uszczegółowić kluczowe komponenty, np. mechanizm paginacji (Paging 3 dla Androida, Offset-based vs Cursor-based dla iOS). 4) Trade-offs — omówić kompromisy: pamięć podręczna vs świeżość danych, offline-first vs online-only.

Kluczowe tematy System Design dla aplikacji mobilnych: buforowanie (LRU Cache, Disk Cache z limitem), praca z obrazami (Coil, Glide, SDWebImage — ładowanie, pamięć podręczna, placeholder, postęp), optymalizacja ruchu (protobuf zamiast JSON, kompresja, Differ/GraphQL), praca offline (Room + Sync Adapter, Core Data + iCloud, WorkManager do synchronizacji w tle). Offline-first — jeden z najczęstszych tematów na stanowiska Senior.

Dla iOS dodawane są pytania o App Thinning, Slicing, On-Demand Resources i optymalizację buildu. Dla Androida — o R8/ProGuard, App Bundles (AAB vs APK), Dynamic Delivery i Minification. Pytanie architektoniczne „Jak zaimplementować pamięć podręczną obrazów z ograniczeniem pamięci?” sprawdza zrozumienie LRU Cache (LinkedHashMap z access order), Disk LRU Cache (DiskLruCache Jake'a Whartona) i Coil/Glide memory cache layer.

Strategia przygotowania do rozmowy

Przygotowanie do rozmowy wymaga systematycznego podejścia na 4-8 tygodni przed planowanym interview. Podstawowa strategia: 2 tygodnie na powtórkę teorii (język, platforma, algorytmy), 2-4 tygodnie na rozwiązywanie zadań algorytmicznych (100-300 zadań na LeetCode), 1-2 tygodnie na mock interview (Pramp, interview.io, ze znajomymi). Dla pozycji Senior dodawane jest przygotowanie System Design (2-3 tygodnie). Plan daje 70-80% pomyślnego przejścia na docelowy poziom.

Dla programistów mobilnych specyficzne przygotowanie obejmuje: czytanie Android Developers Guide / iOS Developer Library, analizę kodu źródłowego popularnych bibliotek (Retrofit, OkHttp, Coil, Koin, Alamofire, Kingfisher), napisanie pet-projektu z Clean Architecture i CI/CD (GitHub Actions, Fastlane). Napiszcie aplikację przykładową na GitHubie z architekturą modułową, DI, testami (Unit + UI + Snapshot) — to pokaże głębokie zrozumienie i stanie się argumentem na rozmowie.

TydzieńCo robićRezultat
1-2Powtórka teorii: język (Kotlin/Swift), platforma (Android/iOS), algorytmy (big O, podstawowe struktury)Notatki z kluczowych tematów
3-4LeetCode: 100-150 zadań, tematy: Arrays, Hash Maps, Trees, DFS/BFS, DPPewne rozwiązywanie zadań Medium
5-6System Design: czytanie „Designing Data-Intensive Applications”, praktyka 5-7 projektówGotowy szablon odpowiedzi na System Design
7-8Mock interview (5-10 rozmów), powtórka pytań platformowych, pytania behawioralnePełna gotowość do prawdziwej rozmowy

Typowe błędy kandydatów

Błąd 1: ciche rozwiązywanie. Kandydat pisze kod w milczeniu, nie komentując toku myślenia. Prowadzący rozmowę nie może ocenić procesu rozwiązywania. Prawidłowo: omawiać każdy krok na głos — „Widzę, że zadanie sprowadza się do przeszukiwania grafu. Proponuję użyć BFS, ponieważ trzeba znaleźć najkrótszą ścieżkę”. Taka komunikacja daje prowadzącemu możliwość ukierunkowania kandydata w razie błędu, co jest oceniane pozytywnie.

Błąd 2: od razu pisanie kodu. Rozpoczynanie kodowania bez doprecyzowania wymagań i omówienia podejść — jeden z głównych powodów niepowodzenia. Przed napisaniem kodu należy: doprecyzować dane wejściowe/wyjściowe, omówić przypadki brzegowe, porównać 2-3 podejścia z oceną Big O i dopiero po uzgodnieniu z prowadzącym pisać optymalne rozwiązanie. Prawidłowy wzorzec: Clarify → High-level approach → Big O → Write code → Test with examples → Discuss trade-offs.

Błąd 3: nieznajomość platformy. Kandydat świetnie rozwiązuje algorytmy, ale nie potrafi wyjaśnić różnicy między Activity i Fragment lub między weak/unowned w Swift. W przypadku ofert mobilnych wiedza platformowa jest oceniana na równi z algorytmami. Przestudiujcie: różnice wersji SDK (compileSdk vs minSdk vs targetSdk), reguły ProGuard/R8 dla popularnych bibliotek, Swift Concurrency (async/await, actors) i MainActor. Co trzeci kandydat na stanowisko iOS odpada na pytaniach o ARC.

Często zadawane pytania

Ile rund jest w rozmowie technicznej?

Standardowa liczba rund to 3-5: screening HR (30 minut), algorytmy (60 minut), architektura/projektowanie systemowe (60 minut), rozmowa behawioralna (45 minut), runda finałowa z liderem zespołu (60 minut). W startupach może być 2-3 rundy, w dużych firmach (Google, Meta) — do 6 rund. Całkowity czas trwania cyklu rozmów — od 2 do 6 tygodni w zależności od firmy.

Jakie algorytmy trzeba znać na rozmowę?

Top 5 tematów na rozmowę algorytmiczną: programowanie dynamiczne (18% zadań), DFS/BFS na grafach (14%), Two Pointers (12%), Sliding Window (10%), Binary Search (8%). Do przejścia rozmowy w FAANG zaleca się rozwiązanie 250-400 zadań na LeetCode. Poziom Medium — obowiązkowe minimum. Dla pozycji Senior dodawane są zadania na drzewach i kolejkach priorytetowych.

Jak przygotować się do rozmowy w miesiąc?

Plan na miesiąc: tydzień 1 — powtórka języka i platformy (język Kotlin/Swift, podstawowe biblioteki, cykle życia). Tydzień 2 — LeetCode Medium (100 zadań, tematy: Arrays, Hash Maps, Trees). Tydzień 3 — System Design dla aplikacji mobilnych (pamięć podręczna, paginacja, offline-first). Tydzień 4 — mock interview (minimum 3 na Pramp lub z kolegą). Kluczowa rada: przechodźcie mock interview w warunkach zbliżonych do rzeczywistych — deadline, nieznany prowadzący, tablica online.

Czym różni się rozmowa na Juniora od Seniora?

Junior: 1-2 rundy, podstawowe algorytmy (reverse string, fizzbuzz, basic tree traversal), pytania o język i podstawy platformy. Middle: 2-3 rundy, algorytmy Medium, pytania o architekturę (MVP/MVVM), praca z siecią i pamięcią podręczną. Senior: 4-5 rund, algorytmy Hard, System Design, architektura całej aplikacji, CI/CD, code review, pytania behawioralne o przywództwo i mentoring. Oczekuje się, że Senior sam zadaje pytania i prowadzi dyskusję.

O co pytają na rozmowie behawioralnej?

Przykładowe pytania: „Opowiedz o konflikcie w zespole i jak go rozwiązałeś”, „Która funkcja była najtrudniejsza i dlaczego”, „Dlaczego chcesz pracować właśnie u nas”, „Co robiłeś, aby ulepszyć procesy w zespole”. Użyjcie metody STAR (Situation, Task, Action, Result) dla ustrukturyzowanej odpowiedzi. Przygotujcie 3-4 historie z doświadczenia z wyprzedzeniem — to pokrywa 80% pytań behawioralnych.

Podsumowanie

  • Rozmowa techniczna — wieloetapowa ocena z 3-5 rundami: screening HR, algorytmy, architektura, rozmowa behawioralna i runda finałowa z liderem
  • Algorytmy — kluczowy etap: 250-400 zadań na LeetCode (DP, Graphs, Arrays, Two Pointers) do pewnego przejścia
  • Wiedza platformowa — Android (Activity Lifecycle, Jetpack Compose, Coroutines, DI) i iOS (ARC, SwiftUI, Combine, GCD) są oceniane na równi z algorytmami
  • System Design — obowiązkowy dla Senior: pamięć podręczna, offline-first, paginacja, optymalizacja ruchu i praca z obrazami
  • Przygotowanie — 4-8 tygodni: teoria (2 tyg), algorytmy (2-4 tyg), System Design (1-2 tyg), mock interview (1 tyg)
  • Komunikacja — omawiajcie rozwiązanie na głos, zadawajcie pytania wyjaśniające, dyskutujcie trade-offs i nie zaczynajcie kodować od razu

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również