Wie man ein Kotlin-Vorstellungsgespräch meistert: Top-Fragen und Antworten

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

So bereitest du dich auf ein Kotlin-Vorstellungsgespräch vor: Die wichtigsten Fragen mit Beispielen



Kotlin hat sich fest als moderne Sprache für die Android-Entwicklung und das Backend auf der JVM etabliert. Wenn du dich auf ein technisches Interview vorbereitest, ist es wichtig, nicht nur die Syntax zu kennen, sondern auch die Philosophie der Sprache zu verstehen: Sicherheit, Prägnanz und Kompatibilität mit Java. In diesem Artikel analysieren wir die wichtigsten Fragen, die in Kotlin-Vorstellungsgesprächen am häufigsten gestellt werden, mit echten Codebeispielen.



1. Null Safety: Wie Kotlin das Null-Problem löst



Einer der Hauptvorteile von Kotlin ist der eingebaute Schutz vor NullPointerException. Im Vorstellungsgespräch wirst du auf jeden Fall nach nullable- und non-null-Typen gefragt.



Frage: Was ist der Unterschied zwischen String? und String? Wie arbeitet man sicher mit nullable?



Antwort: Der Typ String garantiert, dass die Variable niemals null sein wird. String? erlaubt null. Für den sicheren Zugriff werden die Operatoren ?., ?: (Elvis) und !! (nur wenn du dir zu 100% sicher bist) verwendet.



fun main() {    val name: String? = null        // Sicherer Aufruf    println(name?.length) // null        // Standardwert    val length = name?.length ?: 0    println(length) // 0        // Erzwungene Extraktion (NPE-Risiko)    // println(name!!.length) // Fehler!}


Zusatzfrage: Was sind lateinit und lazy?

  • lateinit — für Variablen, die später initialisiert werden (nur var).
  • lazy — für delegierte Initialisierung (nur val).


class User {    lateinit var email: String        val config by lazy { loadConfig() }        fun init() {        email = "test@example.com"    }}


2. Koroutinen: Asynchronität ohne Schmerz



Koroutinen (coroutines) sind ein Must-have für modernes Kotlin. Interviewer prüfen das Verständnis von suspend, launch, async und Dispatchern.



Frage: Was ist der Unterschied zwischen launch und async?



Antwort: launch startet eine Koroutine und gibt ein Job zurück (ohne Ergebnis). async gibt ein Deferred zurück, aus dem das Ergebnis über await() abgerufen werden kann.



suspend fun fetchData(): String {    delay(1000)    return "Daten geladen"}

fun main() = runBlocking { // launch: ohne Ergebnis val job = launch { println("Aufgabe 1 erledigt") } // async: mit Ergebnis val deferred = async { fetchData() } println(deferred.await()) // "Daten geladen" job.join()}


Frage: Welche Dispatcher (Dispatchers) kennst du?

  • Dispatchers.Main — für die UI (Android).
  • Dispatchers.IO — für Ein-/Ausgabe, Netzwerk.
  • Dispatchers.Default — für CPU-intensive Aufgaben.
  • Dispatchers.Unconfined — nicht an einen bestimmten Thread gebunden (selten verwendet).


3. Extension functions und Sealed class: Möglichkeiten erweitern



Kotlin ermöglicht es, bestehenden Klassen neue Funktionen hinzuzufügen, ohne Vererbung. Dies wird oft im Kontext der Architektur abgefragt.



Frage: Was sind extension functions? Gib ein Beispiel.



Antwort: Dies sind Funktionen, die außerhalb der Klasse deklariert werden, aber wie ihre Methoden aufgerufen werden. Sie ändern die Klasse nicht, sondern fügen lediglich syntaktischen Zucker hinzu.



// Extension function für Stringfun String.isEmail(): Boolean {    return this.contains("@") && this.contains(".")}

fun main() { val email = "user@example.com" println(email.

Blogs

Buchempfehlungen