Phone
Intermediaire 10 questions Kotlin

Questions d'entretien Kotlin/Android

Preparez votre entretien Kotlin/Android avec des questions sur Jetpack Compose, les coroutines et l'architecture.

Questions d'entretien Kotlin/Android

1. Quels sont les avantages de Kotlin par rapport a Java pour Android ?

Kotlin offre : null safety (types nullable explicites avec ?), data classes (equals, hashCode, copy generes), extensions functions (ajouter des methodes aux classes existantes), coroutines (programmation asynchrone simplifiee), scope functions (let, apply, run, with, also), smart casts (cast automatique apres verification de type), syntaxe plus concise (moins de boilerplate), et interoperabilite totale avec Java. Google recommande Kotlin comme langage principal pour Android depuis 2019.

2. Expliquez les coroutines Kotlin et leur utilite sur Android.

Les coroutines sont des threads legers pour la programmation asynchrone. Elles permettent d'ecrire du code asynchrone de maniere sequentielle avec suspend functions. Sur Android, elles evitent de bloquer le thread principal (UI thread) lors des operations longues (reseau, base de donnees). Concepts cles : CoroutineScope (gere le cycle de vie), Dispatchers (Main pour l'UI, IO pour les I/O, Default pour le CPU), launch (lance sans resultat), async/await (lance avec resultat). ViewModelScope et lifecycleScope annulent automatiquement les coroutines.

3. Qu'est-ce que Jetpack Compose et comment se compare-t-il aux Views XML ?

Jetpack Compose est le toolkit UI declaratif de Google pour Android. Au lieu de definir l'interface en XML et de la manipuler imperativement, vous decrivez l'UI dans des fonctions @Composable en Kotlin. Compose gere automatiquement les mises a jour via la recomposition (quand l'etat change, seules les parties affectees sont recalculees). Avantages : moins de code, apercu en temps reel, API Kotlin idiomatique. Les Views XML restent supportees et interoperables avec Compose.

4. Expliquez la gestion de l'etat dans Jetpack Compose.

L'etat dans Compose suit le principe de state hoisting : remonter l'etat au composant parent et passer des callbacks vers les enfants. Types : remember (survit aux recompositions mais pas aux changements de configuration), rememberSaveable (survit aux changements de configuration), collectAsState (observe un Flow/StateFlow), mutableStateOf (etat observable par Compose). Pour l'etat complexe, utilisez un ViewModel avec StateFlow ou State.

5. Comment fonctionne la navigation dans une application Android ?

La bibliotheque Navigation Compose gere la navigation entre les ecrans. Definissez un NavHost avec un NavController et des routes (strings ou objets type-safe depuis Navigation 2.8). Chaque ecran est un composable dans le NavHost. La navigation gere automatiquement le back stack, les arguments de route, les deep links et les animations de transition. Pour les applications complexes, utilisez des nested navigation graphs pour organiser les flux par fonctionnalite.

6. Qu'est-ce que l'architecture MVVM recommandee par Google ?

Google recommande l'architecture MVVM avec Clean Architecture : UI Layer (composables + ViewModel), Domain Layer (use cases optionnels), Data Layer (repositories + data sources). Le ViewModel expose un StateFlow ou State a l'UI. Le Repository abstrait les sources de donnees (API, base locale). Les Use Cases encapsulent la logique metier. Le flux de donnees est unidirectionnel : l'UI envoie des events au ViewModel qui met a jour le state.

7. Comment persister les donnees localement sur Android ?

Room : ORM SQLite avec verification des requetes a la compilation. Definissez des entites (@Entity), des DAO (@Dao avec des requetes SQL) et une database. DataStore : remplacement de SharedPreferences pour les preferences (Preferences DataStore) ou les donnees typees (Proto DataStore). SharedPreferences (legacy) : paires cle-valeur simples. Encrypted SharedPreferences : pour les donnees sensibles non-critiques. SQLite direct : rarement necessaire avec Room.

8. Expliquez le cycle de vie d'une Activity et d'un Fragment.

Activity : onCreate (creation) -> onStart (visible) -> onResume (interactive) -> onPause (partiellement masquee) -> onStop (invisible) -> onDestroy (detruite). Fragment : memes callbacks plus onCreateView, onViewCreated, onDestroyView. Les changements de configuration (rotation) detruisent et recreent l'Activity. Le ViewModel survit a ces changements. Avec Compose, le cycle de vie est simplifie : les composables suivent le cycle de vie de leur ComponentActivity.

9. Comment gerer les appels reseau sur Android ?

Retrofit est le standard pour les appels HTTP. Definissez une interface avec des annotations (@GET, @POST, @Path, @Body). Retrofit serialise/deserialise avec Moshi ou Kotlinx Serialization. Utilisez les coroutines (fonctions suspend) pour les appels asynchrones. Implementez un Repository qui combine les donnees distantes et locales (cache Room). Gerez les erreurs avec des sealed classes (Result ou un type custom Success/Error/Loading).

10. Comment tester une application Android ?

Tests unitaires (JVM) : testez les ViewModels, Repositories et Use Cases avec JUnit et Mockk. Tests d'instrumentation (appareil/emulateur) : testez l'UI avec Compose Testing (createComposeRule, onNodeWithText, performClick). Tests d'integration : testez Room avec une base en memoire. Tests end-to-end : Espresso ou Compose Testing pour les flux complets. Utilisez Turbine pour tester les Flows et Hilt pour l'injection de dependances dans les tests.

Besoin d'aide pour preparer vos entretiens ?

Decrivez votre profil pour des conseils de preparation personnalises.

Recevoir des conseils

Questions frequentes

Jetpack Compose est-il pret pour la production ?
Oui, Compose est stable depuis 2021 et est le toolkit UI recommande par Google. De nombreuses applications majeures (Twitter, Airbnb, Play Store) l'utilisent. Pour les nouveaux projets Android, Compose est le choix par defaut.
Faut-il encore apprendre Java pour Android ?
Kotlin est suffisant pour les nouveaux projets. Cependant, connaitre Java est utile pour maintenir du code legacy (de nombreuses applications existantes sont en Java) et pour comprendre les bibliotheques Android qui ont une API Java. L'interoperabilite Kotlin/Java est transparente.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.