Junior-Android-Entwickler: Interviewfragen und Antworten

Milad Bonakdar
Autor
Bereiten Sie sich mit Fragen zu Kotlin, Lifecycle, Jetpack Compose, Room, Networking und Coroutines auf ein Junior-Android-Interview vor.
Einführung
In einem Interview für Junior-Android-Entwickler wird meist geprüft, ob Sie Kotlin-Grundlagen, Android-Lifecycles, Compose-State, lokale Speicherung, Netzwerkaufrufe und Coroutines verständlich erklären können. Gute Antworten bleiben praktisch: UI-State richtig platzieren, den Main Thread nicht blockieren, Daten sauber persistieren und Fehler nachvollziehbar behandeln.
Nutzen Sie diesen Leitfaden, um kurze Antworten zu üben, und verbinden Sie jedes Thema mit einem kleinen Projekt aus Ihrem Lebenslauf oder Portfolio. Eine Aufgaben-App, Wetter-App oder API-basierte Ansicht macht Ihre Antworten konkreter als auswendig gelernte Definitionen.
Kotlin-Grundlagen (6 Fragen)
1. Was ist der Unterschied zwischen val und var in Kotlin?
Antwort:
val: Deklariert eine unveränderliche (schreibgeschützte) Variable. Einmal zugewiesen, kann ihr Wert nicht mehr geändert werden.var: Deklariert eine veränderliche Variable. Ihr Wert kann nach der Initialisierung geändert werden.- Best Practice: Verwenden Sie aus Sicherheitsgründen standardmäßig
val. Verwenden Sievarnur, wenn Sie den Wert neu zuweisen müssen.
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
2. Erklären Sie Nullable-Typen und den Safe-Call-Operator in Kotlin.
Antwort: Das Typsystem von Kotlin unterscheidet zwischen Nullable- und Non-Nullable-Typen, um NullPointerExceptionen zu verhindern.
- Nullable-Typ: Fügen Sie
?nach dem Typ hinzu:String? - Safe Call (
?.): Ruft eine Methode nur auf, wenn das Objekt nicht null ist - Elvis-Operator (
?:): Stellt einen Standardwert bereit, wenn null - Not-null Assertion (
!!): Wirft eine Ausnahme, wenn null (sparsam verwenden)
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
3. Was ist der Unterschied zwischen einer class und einer data class in Kotlin?
Antwort:
- Normale Klasse: Standardklassendefinition
- Data Class: Generiert automatisch nützliche Methoden zum Speichern von Daten
equals()undhashCode()toString()copy()-FunktioncomponentN()-Funktionen zur Destrukturierung
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
4. Was sind Lambda-Ausdrücke und Higher-Order-Funktionen in Kotlin?
Antwort:
- Lambda: Anonyme Funktion, die als Wert übergeben werden kann
- Higher-Order-Funktion: Funktion, die Funktionen als Parameter akzeptiert oder eine Funktion zurückgibt
Seltenheit: Sehr häufig Schwierigkeitsgrad: Mittel
5. Erklären Sie Extension Functions in Kotlin.
Antwort: Mit Extension Functions können Sie vorhandenen Klassen neue Funktionen hinzufügen, ohne deren Quellcode zu ändern.
Seltenheit: Häufig Schwierigkeitsgrad: Leicht
6. Was ist der Unterschied zwischen == und === in Kotlin?
Antwort:
==: Strukturelle Gleichheit (vergleicht Werte mitequals())===: Referenzielle Gleichheit (vergleicht Speicherreferenzen)
Seltenheit: Häufig Schwierigkeitsgrad: Leicht
Android-Komponenten (5 Fragen)
7. Was ist eine Activity und erklären Sie ihren Lebenszyklus.
Antwort: Eine Activity stellt einen einzelnen Bildschirm mit einer Benutzeroberfläche dar. Sie hat einen klar definierten Lebenszyklus:
onCreate(): Activity wird erstellt. Initialisieren Sie die UI, legen Sie die Content View fest.onStart(): Activity wird sichtbar.onResume(): Activity ist im Vordergrund und interaktiv.onPause(): Activity verliert den Fokus (eine andere Activity kommt in den Vordergrund).onStop(): Activity ist nicht mehr sichtbar.onDestroy(): Activity wird zerstört.
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
8. Was ist der Unterschied zwischen einer Activity und einem Fragment?
Antwort:
- Activity: Stellt einen Vollbildschirm dar. Einstiegspunkt für die Benutzerinteraktion. Hat einen eigenen Lebenszyklus.
- Fragment: Wiederverwendbarer Teil der UI innerhalb einer Activity. Mehrere Fragmente können in einer Activity vorhanden sein. Hat einen eigenen Lebenszyklus, der an die Host-Activity gebunden ist.
- Vorteile von Fragmenten:
- Wiederverwendbarkeit über Activities hinweg
- Modulare UI-Komponenten
- Unterstützung für Tablets (Multi-Pane-Layouts)
- Integration der Navigationskomponente
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
9. Was ist ein Intent und welche Typen gibt es?
Antwort: Intent ist ein Messaging-Objekt, das verwendet wird, um eine Aktion von einer anderen App-Komponente anzufordern.
- Expliziter Intent: Gibt die exakte Komponente an, die gestartet werden soll (nach Klassenname)
- Impliziter Intent: Deklariert eine allgemeine Aktion, und das System findet die entsprechende Komponente
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
10. Was ist ein Service in Android?
Antwort: Ein Service ist eine Komponente, die im Hintergrund ausgeführt wird, um langwierige Operationen ohne Benutzeroberfläche durchzuführen.
- Typen:
- Foreground Service: Führt spürbare Operationen aus (Musikplayer). Zeigt eine Benachrichtigung an.
- Background Service: Führt Operationen aus, die vom Benutzer nicht direkt bemerkt werden.
- Bound Service: Ermöglicht Komponenten, sich daran zu binden und zu interagieren.
Seltenheit: Häufig Schwierigkeitsgrad: Mittel
11. Was ist ein BroadcastReceiver?
Antwort: BroadcastReceiver ist eine Komponente, die auf systemweite Broadcast-Ankündigungen reagiert.
- Anwendungsfälle: Niedriger Batteriestand, Änderungen der Netzwerkkonnektivität, SMS empfangen, Bootvorgang abgeschlossen
- Registrierung:
- Statisch: In AndroidManifest.xml (in neueren Android-Versionen eingeschränkt)
- Dynamisch: Im Code (bevorzugt)
Seltenheit: Häufig Schwierigkeitsgrad: Leicht
UI-Entwicklung (4 Fragen)
12. Was ist der Unterschied zwischen LinearLayout, RelativeLayout und ConstraintLayout?
Antwort:
- LinearLayout: Ordnet Kinder in einer einzelnen Zeile oder Spalte an. Einfach, kann aber zu verschachtelten Layouts führen.
- RelativeLayout: Positioniert Kinder relativ zueinander oder zum Elternteil. Flexibler, aber komplexer.
- ConstraintLayout: Modernes, flexibles Layout. Flache View-Hierarchie. Empfohlen für komplexe UIs.
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
13. Was ist RecyclerView und wie funktioniert es?
Antwort: RecyclerView ist ein effizientes Widget zum Anzeigen großer Listen durch Recycling von Views.
- Komponenten:
- Adapter: Bindet Daten an Views
- ViewHolder: Enthält Referenzen zu Views (vermeidet
findViewById-Aufrufe) - LayoutManager: Positioniert Elemente (Linear, Grid, Staggered)
Seltenheit: Sehr häufig Schwierigkeitsgrad: Mittel
14. Was ist Jetpack Compose?
Antwort: Jetpack Compose ist Androids modernes deklaratives UI-Toolkit.
- Deklarativ: Beschreiben Sie, wie die UI aussehen soll, nicht wie sie erstellt werden soll
- Vorteile: Weniger Code, intuitiv, leistungsstark, beschleunigt die Entwicklung
- Composable Functions: Bausteine der Compose-UI
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
15. Was ist der Unterschied zwischen match_parent und wrap_content?
Antwort: Dies sind Layoutparameter, die View-Dimensionen definieren:
match_parent: View wird erweitert, um die Größe des Elternteils auszufüllenwrap_content: View passt sich an ihren Inhalt an- Feste Größe: Spezifischer dp-Wert (z. B.
100dp)
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
Daten & Netzwerke (5 Fragen)
16. Wie stellen Sie eine Netzwerkanfrage in Android?
Antwort:
Verwenden Sie Bibliotheken wie Retrofit oder OkHttp für die Vernetzung. Vermeiden Sie die direkte Verwendung von HttpURLConnection.
Seltenheit: Sehr häufig Schwierigkeitsgrad: Mittel
17. Was ist Room und wie verwenden Sie es?
Antwort: Room ist eine Abstraktionsschicht über SQLite für einen einfacheren Datenbankzugriff.
- Komponenten:
- Entity: Stellt eine Tabelle dar
- DAO (Data Access Object): Definiert Datenbankoperationen
- Database: Datenbankhalter
Seltenheit: Sehr häufig Schwierigkeitsgrad: Mittel
18. Was ist SharedPreferences?
Antwort: SharedPreferences speichert kleine Mengen primitiver Daten als Schlüssel-Wert-Paare.
- Anwendungsfälle: Benutzereinstellungen, Präferenzen, einfache Flags
- Nicht für: Große Daten, komplexe Objekte (verwenden Sie stattdessen Room)
Seltenheit: Sehr häufig Schwierigkeitsgrad: Leicht
19. Was ist der Unterschied zwischen apply() und commit() in SharedPreferences?
Antwort: Beide speichern Änderungen in SharedPreferences, unterscheiden sich jedoch im Verhalten:
apply(): Asynchron. Gibt sofort zurück. Änderungen werden im Hintergrund auf die Festplatte geschrieben. Kein Rückgabewert.commit(): Synchron. Blockiert, bis Änderungen geschrieben wurden. Gibt Boolean zurück (Erfolg/Fehler).- Best Practice: Verwenden Sie
apply(), es sei denn, Sie benötigen den Rückgabewert.
Seltenheit: Häufig Schwierigkeitsgrad: Leicht
20. Was sind Coroutinen in Kotlin?
Antwort: Coroutinen bieten eine Möglichkeit, asynchronen Code sequenziell zu schreiben, wodurch er leichter zu lesen und zu verwalten ist.
- Vorteile: Leichtgewichtig, strukturierte Nebenläufigkeit, Ausnahmebehandlung
- Schlüsselkonzepte:
suspend: Funktion, die angehalten und fortgesetzt werden kannlaunch: Startet eine Coroutine (Fire and Forget)async: Startet eine Coroutine und gibt ein Ergebnis zurück- Dispatchers: Steuern, auf welchem Thread die Coroutine ausgeführt wird
Seltenheit: Sehr häufig Schwierigkeitsgrad: Mittel


