Mis à jour le

Phone
Intermediaire 10 questions • Swift

Questions d'entretien Swift/iOS

Preparez votre entretien Swift/iOS avec des questions sur SwiftUI, la gestion de mémoire et les design patterns.

Questions d'entretien Swift/iOS

1. Expliquez la différence entre struct et class en Swift.

Les struct sont des types valeur (copies à l'assignation, stockées sur la pile). Les class sont des types référence (partagent la même instance via pointeur, stockées sur le tas). En Swift, les structs supportent les méthodes, les protocoles, les extensions et les propriétés calculées. Apple recommande les struct par défaut pour leurs avantages : immutabilité, thread safety, performances. Utilisez les classes quand vous avez besoin d'héritage, de référence partagee ou de deinit.

2. Qu'est-ce que l'ARC et comment prévenir les cycles de retention ?

ARC (Automatic Référence Counting) gere automatiquement la mémoire en comptant les références vers chaque objet. Quand le compteur tombe a zéro, l'objet est desalloue. Un cycle de retention se produit quand deux objets se referencent mutuellement (A -> B -> A), empechant la desallocation. Solutions : weak (référence faible, devient nil quand l'objet est desalloue) pour les relations optionnelles, unowned (référence non-proprietaire, crash si accède après desallocation) pour les relations garanties.

3. Expliquez les optionnels en Swift et les patterns d'unwrapping.

Les optionnels (Type?) representent une valeur qui peut être absente (nil). Patterns d'unwrapping : if let (optional binding conditionnel), guard let (sortie anticipee si nil), nil coalescing (??, valeur par défaut), optional chaining (?., accès securise en chaîne), force unwrapping (!, crash si nil — à éviter). Depuis Swift 5.7, la syntaxe simplifiée "if let variable" (sans le = variable) est recommandee.

4. Comment fonctionne SwiftUI et quelles sont ses différences avec UIKit ?

SwiftUI est le framework déclaratif d'Apple pour construire des interfaces. Vous décrivez ce que l'interface doit afficher, pas comment la construire. Le framework gere les mises à jour automatiquement via le binding de données. UIKit est le framework impératif traditionnel (storyboards, XIBs, code). Différences : SwiftUI est multiplateforme (iOS, macOS, watchOS, tvOS), plus concis, avec un live preview. UIKit est plus mature, avec plus de contrôle sur les détails. En 2026, SwiftUI est recommandé pour les nouveaux projets.

5. Expliquez les property wrappers @State, @Binding, @ObservedObject, @StateObject et @EnvironmentObject.

@State : source de verite locale à une vue (types valeur). @Binding : référence bidirectionnelle vers un @State parent (pas de propriété, juste un lien). @StateObject : cree et possède un ObservableObject (cree une seule fois). @ObservedObject : observe un ObservableObject possède ailleurs (peut être recree). @EnvironmentObject : ObservableObject injecte dans l'environnement, accessible partout dans la hiérarchie. Règle : @StateObject pour créer, @ObservedObject pour recevoir.

6. Comment gérer la concurrence en Swift avec async/await ?

Swift 5.5 introduit la concurrence structurée avec async/await. Declarez une fonction asynchrone avec async, appelez-la avec await. Task lance une opération asynchrone. TaskGroup execute plusieurs tâches en parallèle. Les actors protegent l'état mutable des accès concurrents (isolation). @MainActor garantit l'exécution sur le thread principal (pour les mises à jour UI). Cette approche est plus sure et lisible que les callbacks et GCD.

7. Qu'est-ce que le pattern MVVM en iOS ?

MVVM (Model-View-ViewModel) separe l'application en trois couches : Model (données et logique métier), View (interface utilisateur, SwiftUI Views), ViewModel (transforme les données du Model pour la View, gere la logique de présentation). Le ViewModel est un ObservableObject dont les propriétés @Published sont observees par la View. Avantages : testabilite (le ViewModel est testable sans UI), séparation des responsabilités, et compatibilité naturelle avec SwiftUI.

8. Comment persister les données en iOS ?

Options : UserDefaults (préférences simples, petites quantites), Keychain (données sensibles, mots de passe, tokens), Core Data (base de données ORM d'Apple, relations, requêtes complexes), SwiftData (successeur de Core Data, plus simple, base sur les macros Swift), SQLite (accès SQL direct), fichiers (JSON, Plist). Pour la synchronisation cloud : CloudKit (gratuit avec iCloud) ou Firebase. Choisissez selon la complexité et la sensibilite des données.

9. Comment distribuer une application iOS sur l'App Store ?

Processus : inscrivez-vous au Apple Developer Program (99 USD/an). Configurez les certificats (signing certificates), provisioning profiles et App ID dans le portail développeur. Archivez l'application dans Xcode (Product > Archive). Soumettez via App Store Connect : remplissez les métadonnées (description, screenshots, catégorie), configurez le prix, soumettez pour review (1-3 jours). Respectez les App Store Review Guidelines pour éviter le rejet.

10. Comment tester une application iOS ?

XCTest : framework de test natif pour les tests unitaires et d'intégration. XCUITest : tests d'interface utilisateur automatises. Snapshot testing : comparaison visuelle des vues (biblioteque pointfreeco/swift-snapshot-testing). Instruments : profiling des performances, mémoire, réseau, énergie. En SwiftUI, testez les ViewModels en isolation (logique métier) et utilisez les previews pour le test visuel rapide. Intégrez les tests dans votre CI/CD (Xcode Cloud, Fastlane).

Besoin d'aide pour préparer vos entretiens ?

Decrivez votre profil pour des conseils de preparation personnalises.

Recevoir des conseils

Questions fréquentes

SwiftUI est-il pret pour la production ?
Oui, SwiftUI est mature depuis iOS 15+ et est le framework recommande par Apple. Les nouvelles fonctionnalites Apple sont d'abord disponibles en SwiftUI. Pour les applications ciblant iOS 16+, SwiftUI est le choix par defaut. UIKit reste necessaire pour certains cas specifiques.
Faut-il un Mac pour developper en iOS ?
Oui, Xcode (l'IDE d'Apple pour le developpement iOS) ne fonctionne que sur macOS. C'est une contrainte incontournable. Un MacBook ou un Mac Mini est le minimum requis. Il existe des solutions cloud (MacStadium, AWS EC2 Mac) mais un Mac local est recommande.

Pages liées

Chaque semaine, le meilleur de la tech française

Tendances, salaires, outils et opportunités — directement dans votre boîte mail.

Gratuit. Desabonnement en un clic. Pas de spam.