Powrót do strony głównej

System Design wywiad dla Android/iOS

Przewodnik po przejściu wywiadu System Design dla deweloperów mobilnych. Opisano 4 etapy: zbieranie wymagań, high-level design, detalizacja (Retrofit, Room, Hilt), podsumowanie. Nacisk na Clean Architecture i specyfikę mobile.

Jak zhakować System Design dla mobilnych devów
Advertisement 728x90

Strategia sukcesu na rozmowie System Design dla mobilnych deweloperów

Rozmowy System Design sprawdzają umiejętność projektowania skalowalnych aplikacji mobilnych z uwzględnieniem specyfiki platform Android/iOS. Kandydat otrzymuje zadanie zaprojektowania architektury serwisu — np. komunikatora, YouTube czy Twittera — i demonstruje proces myślenia przez 45–60 minut. Nacisk kładziony jest na metodologię: doprecyzowanie wymagań, architektura wysokiego poziomu, szczegółowe omówienie komponentów i podsumowanie. W przypadku stanowisk mobilnych nacisk na lokalne buforowanie, optymalizację UI, zużycie baterii, bez głębokiego wnikania w shardowanie baz danych.

Etap 1: Zbieranie wymagań (5 minut)

Zacznij od doprecyzowania zadania poprzez celowane pytania. Zapisz odpowiedzi na tablicy (Miro, Draw.io, Excalidraw), by je utrwalić. Uzyskaj potwierdzenie rekrutera przed przejściem dalej.

Kluczowe pytania dla aplikacji mobilnej:

Google AdInline article slot
  • Wymagania funkcjonalne: scenariusze użytkownika, główne funkcje (użytkownicy, użycie, priorytetowe możliwości).
  • Zakres: tylko klient czy API/serwer?
  • Obsługiwane urządzenia: smartfony, tablety, Wear OS?
  • Minimalna wersja API (wpływa na funkcje, np. Scoped Storage w Androidzie).
  • Wymagania niefunkcjonalne: bufor offline, powiadomienia push, autoryzacja.

Omów przypadki brzegowe: słaby internet, niski poziom baterii, duże ilości danych. To pokazuje praktyczne podejście dewelopera middle/senior.

Etap 2: Architektura wysokiego poziomu (10 minut)

Narysuj blokowy schemat kluczowych komponentów. Dla Androida oprzyj się na Clean Architecture: podział na warstwy Presentation, Domain, Data.

Przykład podstawowego schematu:

Google AdInline article slot
  • Presentation: ViewModel, Fragment/Activity, RecyclerView.
  • Domain: UseCase, Repository.
  • Data: ApiDataSource (Retrofit/OkHttp), LocalDataSource (Room/SQLite).
  • DI: Hilt/Dagger.

Rozszerz zgodnie z wymaganiami: dodaj ImageLoader (Coil/Glide), PushService (Firebase), Coordinator do nawigacji.

Komentuj wybory na głos: „LocalDataSource stosujemy dla podejścia offline-first, by zminimalizować zapytania sieciowe i zużycie danych". Przejdź przez przepływy użytkownika, potwierdź schemat z rekruterem.

Etap 3: Szczegółowe omówienie komponentów (20 minut)

Przejdź przez każdy blok: opisz implementację, alternatywy, kompromisy. Priorytetyzuj komponenty kluczowe, pomijaj drugorzędne bez pytań rekrutera.

Google AdInline article slot

ApiDataSource: Retrofit + OkHttp dla REST. Alternatywa — GraphQL z Apollo.

Zalety REST:

  • Standard CRUD, bezstanowy.
  • Prosta implementacja.

Wady dla mobile:

  • Osobne połączenia na zapytanie (gorsze dla częstych aktualizacji).
  • Nadmiar serializacji (JSON), Base64 dla danych binarnych.

Wybór Retrofit pasuje do aplikacji bez real-time (pogoda, media społecznościowe bez czatu).

LocalDataSource: Room dla SQLite. Zapewnia offline, bufor z unieważnianiem (np. TTL lub oparte na zdarzeniach).

Repository: Pojedyncze źródło prawdy, koordynuje Api/Local. Przykład: najpierw odczyt lokalny, synchronizacja w tle z API.

UseCase: Logika biznesowa (sortowanie, filtry). Izoluje Domain od Data.

Presentation: ViewModel do zarządzania stanem (StateFlow/LiveData), RecyclerView z DiffUtil dla płynnych aktualizacji.

DI: Hilt dla modularnej iniekcji, minimalizuje boilerplate.

Omów optymalizacje: Coroutines/Flow dla asynchroniczności, Paging 3 dla nieskończonych list, WorkManager dla synchronizacji w tle.

Etap 4: Podsumowanie i Q&A (10 minut)

Podsumuj: powtórz architekturę, podkreśl kompromisy, zaproponuj metryki (opóźnienie <200 ms, zużycie baterii <5%/godz.). Odpowiedz na pytania rekrutera. Zadaj swoje: o aktualnej architekturze firmy, narzędziach.

Co jest najważniejsze

  • Proces ważniejszy niż idealny schemat: demonstruj rozumowanie, pytania, przypadki brzegowe.
  • Specyfika mobile: nacisk na offline, baterię, wydajność UI (60 fps), nie skalę backendu.
  • Clean Architecture: warstwy, jednokierunkowy przepływ danych, testowalny kod.
  • Kompromisy: uzasadniaj wybory (Retrofit vs GraphQL ze względu na objętość danych).
  • Czas: 5-10-20-10 min, komunikuj się jak równy z równym.

— Editorial Team

Advertisement 728x90

Czytaj dalej