Kotlin
The official language for Android app development — modern, concise, and fully interoperable with Java, it replaced Java as Google's preferred Android language in 2019.
Kotlin is Google's officially endorsed language for Android development, now used by the majority of Android apps on the Play Store. It is fully interoperable with Java, allowing gradual migration of existing Java codebases, and introduces modern language features — null safety, extension functions, coroutines for async code, and data classes — that make Android development significantly more productive. Beyond Android, Kotlin is also used server-side (Kotlin/JVM with Spring Boot or Ktor) and is growing in multiplatform development (Kotlin Multiplatform Mobile). Android developer roles almost universally require Kotlin.
Typical time to job-readiness: ~4 months.
Learning Kotlin
Beginner
Learn Kotlin syntax through Kotlin Koans (JetBrains' free interactive course) and build a basic Android app with Jetpack Compose — Google's modern declarative UI framework that replaced XML layouts. Understand Activities, ViewModels, and the Android lifecycle.
Intermediate
Kotlin coroutines for async operations, Retrofit for networking, Room for local database persistence, and Navigation Component for multi-screen apps. Learn Hilt for dependency injection — it's the standard in modern Android development.
Advanced
Kotlin Flow and StateFlow for reactive UI, Compose performance optimization, modular app architecture (multi-module Gradle projects), and CI/CD with GitHub Actions for Android. Android interviews include a take-home app challenge plus architecture and performance discussion.
Key concepts
- Null safety built into the type system — String vs String? are different types; ? and !! are explicit
- Coroutines: Kotlin's approach to async programming; suspend functions run on coroutine scope
- Jetpack Compose: declarative UI built from composable functions; replaces XML layouts
- Data classes: auto-generated equals(), hashCode(), copy() for model objects
- Extension functions: add methods to existing classes without inheritance
- Android lifecycle: Activity and Fragment lifecycles determine when UI components are created, shown, and destroyed
Common interview topics
- How does Kotlin's null safety system prevent NullPointerExceptions
- Explain coroutines in Kotlin — how are they different from threads
- What is Jetpack Compose and how does it differ from the View/XML approach
- How does the Android Activity lifecycle work
- Walk me through how you'd architect an Android app using MVVM