Phone
Intermediaire 10 questions Swift

Questions d'entretien Swift/iOS

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

Questions d'entretien Swift/iOS

1. Expliquez la difference entre struct et class en Swift.

Les struct sont des types valeur (copies a l'assignation, stockees sur la pile). Les class sont des types reference (partagent la meme instance via pointeur, stockees sur le tas). En Swift, les structs supportent les methodes, les protocoles, les extensions et les proprietes calculees. Apple recommande les struct par defaut pour leurs avantages : immutabilite, thread safety, performances. Utilisez les classes quand vous avez besoin d'heritage, de reference partagee ou de deinit.

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

ARC (Automatic Reference Counting) gere automatiquement la memoire en comptant les references vers chaque objet. Quand le compteur tombe a zero, l'objet est desalloue. Un cycle de retention se produit quand deux objets se referencent mutuellement (A -> B -> A), empechant la desallocation. Solutions : weak (reference faible, devient nil quand l'objet est desalloue) pour les relations optionnelles, unowned (reference non-proprietaire, crash si accede apres desallocation) pour les relations garanties.

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

Les optionnels (Type?) representent une valeur qui peut etre absente (nil). Patterns d'unwrapping : if let (optional binding conditionnel), guard let (sortie anticipee si nil), nil coalescing (??, valeur par defaut), optional chaining (?., acces securise en chaine), force unwrapping (!, crash si nil — a eviter). Depuis Swift 5.7, la syntaxe simplifiee "if let variable" (sans le = variable) est recommandee.

4. Comment fonctionne SwiftUI et quelles sont ses differences avec UIKit ?

SwiftUI est le framework declaratif d'Apple pour construire des interfaces. Vous decrivez ce que l'interface doit afficher, pas comment la construire. Le framework gere les mises a jour automatiquement via le binding de donnees. UIKit est le framework imperatif traditionnel (storyboards, XIBs, code). Differences : SwiftUI est multiplateforme (iOS, macOS, watchOS, tvOS), plus concis, avec un live preview. UIKit est plus mature, avec plus de controle sur les details. En 2026, SwiftUI est recommande pour les nouveaux projets.

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

@State : source de verite locale a une vue (types valeur). @Binding : reference bidirectionnelle vers un @State parent (pas de propriete, juste un lien). @StateObject : cree et possede un ObservableObject (cree une seule fois). @ObservedObject : observe un ObservableObject possede ailleurs (peut etre recree). @EnvironmentObject : ObservableObject injecte dans l'environnement, accessible partout dans la hierarchie. Regle : @StateObject pour creer, @ObservedObject pour recevoir.

6. Comment gerer la concurrence en Swift avec async/await ?

Swift 5.5 introduit la concurrence structuree avec async/await. Declarez une fonction asynchrone avec async, appelez-la avec await. Task lance une operation asynchrone. TaskGroup execute plusieurs taches en parallele. Les actors protegent l'etat mutable des acces concurrents (isolation). @MainActor garantit l'execution sur le thread principal (pour les mises a 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 (donnees et logique metier), View (interface utilisateur, SwiftUI Views), ViewModel (transforme les donnees du Model pour la View, gere la logique de presentation). Le ViewModel est un ObservableObject dont les proprietes @Published sont observees par la View. Avantages : testabilite (le ViewModel est testable sans UI), separation des responsabilites, et compatibilite naturelle avec SwiftUI.

8. Comment persister les donnees en iOS ?

Options : UserDefaults (preferences simples, petites quantites), Keychain (donnees sensibles, mots de passe, tokens), Core Data (base de donnees ORM d'Apple, relations, requetes complexes), SwiftData (successeur de Core Data, plus simple, base sur les macros Swift), SQLite (acces SQL direct), fichiers (JSON, Plist). Pour la synchronisation cloud : CloudKit (gratuit avec iCloud) ou Firebase. Choisissez selon la complexite et la sensibilite des donnees.

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 developpeur. Archivez l'application dans Xcode (Product > Archive). Soumettez via App Store Connect : remplissez les metadonnees (description, screenshots, categorie), configurez le prix, soumettez pour review (1-3 jours). Respectez les App Store Review Guidelines pour eviter le rejet.

10. Comment tester une application iOS ?

XCTest : framework de test natif pour les tests unitaires et d'integration. XCUITest : tests d'interface utilisateur automatises. Snapshot testing : comparaison visuelle des vues (biblioteque pointfreeco/swift-snapshot-testing). Instruments : profiling des performances, memoire, reseau, energie. En SwiftUI, testez les ViewModels en isolation (logique metier) et utilisez les previews pour le test visuel rapide. Integrez les tests dans votre CI/CD (Xcode Cloud, Fastlane).

Besoin d'aide pour preparer vos entretiens ?

Decrivez votre profil pour des conseils de preparation personnalises.

Recevoir des conseils

Questions frequentes

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 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.