Quelles questions sont posées par le développeur iOS junior lors des premières interviews

Qu'est-ce que les employeurs veulent entendre? Qu'avez-vous besoin de savoir? Ils écrivent beaucoup sur Internet, mais en réalité le facteur humain joue un rôle et vous êtes pris par des questions simples pour lesquelles vous n'étiez pas prêt.


Bonjour, Habr. Au cours des 7 derniers mois, j'ai ignoré les entretiens, quelque part dans la vingtaine. Ils étaient tous en position de développeur iOS junior. En conséquence, après de nombreux tourments et pull-ups de diverses nuances de développement mobile, ils m'ont fait une offre à l'entreprise, dont j'étais extrêmement heureux.

En tant que personne sans expérience précoce en développement, économiste de formation, je voudrais partager et clarifier un peu avec la personne qui vient de décider d'emprunter cette voie, ce à quoi il devrait s'attendre lors des entretiens et quelles questions il doit absolument soulever ou apprendre.

Je vais écrire ici uniquement pour les postes de développeur Junior Swift iOS. Les autres entretiens sur ces postes n'ont pas abouti.

Je vais énumérer les choses qui, avec une probabilité de 99%, vous seront posées, puis j'ajouterai quelques mots sur chaque élément.

Commençons donc.

Ce qu'ils vont certainement vous demander (eh bien, si vous oubliez soudain de demander, ils attendront évidemment de vous que vous le sachiez):

  • Cycle de vie de ViewController
  • OOP
  • La différence entre classe et structure
  • Protocoles
  • Façons de transférer des données entre les contrôleurs
  • Storyboard ou xib
  • Disposition automatique
  • Sauvegarde des données (CoreData, Realm, UserDefault, etc.)
  • Demandes et travail avec les données reçues du serveur (URLSession, Alamofire, Codable)
  • Fermetures
  • Optionnels
  • Extensions
  • Génériques
  • ARC
  • Multithreading (superficiellement, personne n'aura besoin de connaissances approfondies à partir de juin)
  • faible, sans propriétaire, privé, privé
  • La différence entre le cadre et les limites
  • Cocoapods (SwiftPacketManager, carthage)
  • Git

Nous discuterons brièvement de quelques points.

  • Cycle de vie de ViewController

Ici, tout est simple. Ils veulent entendre parler de vous:

viewDidLoad()
viewWillAppear(_ animated: Bool)
viewDidAppear(_ animated: Bool)
viewWillDisappear(_ animated: Bool)
viewDidDisappear(_ animated: Bool)

Il existe bien sûr encore des méthodes, mais celles-ci seront en principe suffisantes.

  • OOP

Vous pouvez facilement google ce moment et lire ce qui est là.

  • Classe vs Struct

Ici, en fait, tout semblait simple, mais il faut vraiment savoir en quoi ils diffèrent. Vous devez comprendre au moins dans un exemple de base ce que print () produira et pourquoi.

let customClass = EasyQuestion()
let a = customClass
let b = a
b.someProperty = 4
print(a.someProperty)

Vous devez savoir quelle impression vous donnera dans ces deux cas.

Ce sera également un plus si vous ajoutez de qui ViewControllers peut être hérité et de qui non. (PS de Struct'a - non)

  • Protocoles

Lisez ce que c'est et à quoi ils servent (même si je pense que vous en avez déjà entendu parler).
Ils peuvent également poser des questions sur l'extension du protocole. Vous devez comprendre exactement qui sont les délégués et comment fonctionne cette connexion.

  • Façons de transférer des données entre les contrôleurs

Il vous suffira d'en nommer un couple. Déléguez les méthodes, les fermetures, via init si nous créons un ViewController via xib, etc.

  • Storyboard ou xib

Ici, il vous sera probablement demandé si vous avez déjà créé un ViewController via xib. Ils ne vous demanderont ni détails ni détails. Vous juin, vous ne savez toujours pas grand-chose. La principale chose à comprendre est de savoir si vous pouvez l'écrire. Eh bien, il sera nécessaire de répondre à la raison pour laquelle vous créez via xib ou vice versa.

  • Disposition automatique

Ici, vous pouvez peindre longtemps sur ce sujet. Je vous conseille de google ce que c'est. Comprenez l'essence générale, ce sera suffisant.

  • Sauvegarde des données (CoreData, Realm, UserDefault, etc.)

Cette question vous hantera longtemps. La chose la plus importante est de savoir quand utiliser UserDefault, ce qu'il faut enregistrer dans KeyChain, ce qu'est Realm. Enregistrez les données plusieurs fois dans vos projets domestiques dans CoreData afin d'avoir une idée générale de quel type d'animal il s'agit et comment l'apprivoiser.

  • Demandes et travail avec les données reçues du serveur (URLSession, Alamofire, Codable)

Ici, vous devez savoir ce qu'est POST, GET. Ce sera demandé.

Vous devez être en mesure de gérer les erreurs sur demande. L'option idéale est si vous avez reçu le mandat de la maison avant l'entretien. Là, vous pouvez démontrer la pleine puissance de votre esprit.

Alamofire est également courant sur les projets, vous devriez donc pouvoir l'utiliser.
Vous devriez pouvoir analyser les données que le serveur vous renvoie à l'aide de Codable ou de certaines bibliothèques dans l'esprit de SwiftyJSON ou d'ObjectMapper.

  • Fermetures (fermetures)

C'est un point très important. Il peut arriver que vous l'utilisiez vraiment souvent, mais que vous n'ayez pas fouillé dans le fond de ce problème. Si vous savez comment les écrire et comment les utiliser, tant mieux! Mais comment montrer à l'employeur que vous le savez si vous ne pouvez pas expliquer en termes simples ce que c'est. Je vous conseille de bien faire tourner SwiftBook sur ce problème.

  • Optionnels

Cela devrait être l'un des éléments les plus faciles pour vous. Vous devez connaître ce "chat Schrödinger" et quelles sont les méthodes de déploiement. Assurez-vous de leur dire que vous n'êtes pas un partisan de Force Unwrap et méprisez profondément les gens qui sont si «merdiques» dans le projet.

  • Extensions

Il est peu probable que cela ressemble à un problème distinct. Il est très probable que ce sera en conjonction avec d'autres problèmes (par exemple, une question sur les protocoles). Écrivez quelques fois Extension'y. Je vous assure, il n'y a rien de compliqué là-bas. Vous allez certainement régler ce problème.

Mais par exemple, j'ai eu des cas où ils ont demandé pourquoi de grands esprits l'avaient proposé.
Vous pouvez vous marquer quelque part une telle réponse - "Pour étendre la classe à laquelle nous n'avons pas accès." Par exemple, eplovskie native, dans laquelle nous ne pouvons pas entrer, mais nous voulons l'étendre un peu pour notre commodité.

  • Génériques

À quoi servent-ils? Qu'Est-ce que c'est? Lorsque vous lisez sur les génériques dans SwiftBook, il peut vous sembler que c'est quelque chose de super compliqué pour votre esprit simple, mais en fait tout est beaucoup plus simple là-bas. L'essentiel est simplement de comprendre l'essence de ce pour quoi il est écrit. Et vous pouvez toujours espionner comment le créer. Vous ne serez pas obligé de l'écrire lors d'une interview. Ils veulent juste entendre votre compréhension de cette question.

  • ARC (superficiellement, personne n'aura besoin de connaissances approfondies à partir de juin)

Ici, ils veulent avoir de vos nouvelles une idée générale du comptage de liens. Comment cela augmente et que se passera-t-il si le «compteur» est à 0. Ils ne vous demanderont pas de plonger sous le capot, mais s'ils le font, alors il est peu probable qu'ils comprennent que le mois de juin est assis devant eux.

Ici, ils veulent comprendre que vous pouvez correctement trouver des bogues dans le code lorsque votre ViewController, par exemple, ne «désinitialise» pas (est tué, disparaît, quitte) «accidentellement».

  • Multithreading

Comment transférer du fil principal à l'arrière-plan. Il existe de nombreuses nuances. Vous ne comprendrez pas tout d'un coup, l'essentiel est de gérer GCD et Dispatch Queues. Voici un excellent article sur ce sujet.

  • faible, sans propriétaire, privé, privé

Quels sont-ils faibles? Quelle est la différence entre faible et sans propriétaire.

Qu'est-ce qui est privé et privé? Ceci est une question simple. Vous pouvez lire sur Internet, il n'y a rien de compliqué, mais vous devez tout de même savoir.

Peut également inclure la question des paresseux ici. Ici, tout est aussi simple. Lis le!

  • La différence entre le cadre et les limites

Cette question peut, en principe, débuter un entretien. Mais j'ajoute que cette question n'était étonnamment pas aussi courante que les autres. Mais bruissant sur Internet, j'ai remarqué que c'est une question assez courante, alors ne tentez pas votre chance, apprenez! Pensez que l'on vous demandera à coup sûr. Il n'y a rien de compliqué ici, il vous suffit de comprendre l'essence (oui, oui, comme pour toutes les autres questions).

  • Cocoapods (SwiftPacketManager, carthage)

Vous devriez certainement pouvoir insérer des bibliothèques dans votre projet. Le plus populaire est CocoaPods. Le savoir, en principe, suffira. Mais si vous souhaitez étendre la gamme, vous pouvez également voir SwiftPacketManager, carthage.

  • Git

Eh bien, ici, je ne sais même pas ce qui peut être ajouté. Utilisez le git, faites des commits (le plus sera le mieux).

Vous devez pouvoir créer de nouvelles branches, fusionner (fusionner) avec d'autres branches et résoudre (résoudre) les conflits de fusion.

En principe, j'ai énuméré les questions les plus populaires que j'ai rencontrées. Bien sûr, personne n'a annulé le facteur humain et ils peuvent vous attraper sur toute autre question, mais si vous connaissez bien ces questions, vous êtes déjà prêt à 90%. Je suis moi-même encore un juin et je comprends que mon avis est loin d'être expert, mais j'ai juste décidé de partager avec d'autres ce que je sais dans l'espoir qu'il sera très utile à quelqu'un et aidera à franchir le stade d'un entretien technique.

Apprenez, développez et aidez les autres!

All Articles