Interview - 10 questions sur Swift. 3e partie

Programme professionnel "iOS Developer" - 5 mois de bonnes pratiques pour développer des applications mobiles à l'aide de Swift 5. Les meilleurs diplômés sont attendus lors des entretiens avec 12 sociétés partenaires d'OTUS, nous publions donc une traduction du dernier article de la série "iOS Interview Questions (Swift)", où nous examinerons plus des dizaines de questions, dont les réponses vous aideront à trouver un emploi.


image


1. Que sont les défauts et où peuvent-ils être utilisés?


  • Les fermetures sont des fragments de code autonomes qui peuvent être passés à une fonction comme argument ou utilisés dans un programme.
  • Les fermetures dans Swift sont comme des blocs en C et Objective-C et comme des lambdas dans d'autres langages de programmation.
  • C'est presque la même chose que les fonctions, mais les fermetures n'ont pas besoin d'être nommées.
  • Il n'est pas nécessaire de déclarer le type de chaque paramètre, mais si vous le faites, vous n'avez pas besoin de spécifier le type de la valeur de retour.

Suivez le lien pour voir toutes les options de syntaxe de fermeture.


2. Que sont les fermetures qui s'échappent / ne s'échappent pas?


@nonescaping (standard) fermetures:


  • Lorsque la fermeture est passée dans les arguments de la fonction et et est utilisée avant l'exécution du corps de la fonction et le retour du contrôle.
  • Lorsque la fonction se termine , la fermeture passée sort du domaine et n'existe plus en mémoire.

@ fermetures (fugitives) fermetures:


  • Lorsque la fermeture est passée dans les arguments de la fonction et utilisée après l'exécution du corps de la fonction et le retour du contrôle.
  • Une fois la fonction terminée , la fermeture transmise continue à exister dans la portée et reste en mémoire jusqu'à ce que la fermeture soit terminée. le lien

3. Indiquez quels types de collections sont disponibles dans Swift?


image


  • Tableaux - sont utilisés pour stocker plusieurs valeurs du même type dans un formulaire ordonné.
  • Set (Set) - utilisé pour stocker différentes valeurs du même type sous une forme non ordonnée.
  • Dictionnaires - Utilisés pour stocker des paires clé-valeur sous une forme non ordonnée.

4. Comment la classe de base est-elle définie dans Swift?


Dans Swift, les classes qui n'héritent pas de la classe de base et les classes que vous définissez sans spécifier de superclasse deviennent automatiquement des classes de base.


5. Que sont les désinitialisateurs et comment sont-ils écrits dans Swift?


Le désinitialiseur est déclaré immédiatement avant de libérer la mémoire occupée par l'instance de classe. Le deinitializer est écrit avec le mot clé deinit . Il est utilisé si vous devez effectuer une action ou un nettoyage avant de libérer la mémoire occupée par l'objet.


Par exemple , si vous créez une classe personnalisée pour ouvrir un fichier et y écrire des données, vous devrez fermer le fichier avant de libérer la mémoire occupée par l'instance de classe.


Le deinitializer est écrit sans parenthèses et n'accepte aucun paramètre.


deinit { //   } 

6. Quand les doubles points d'interrogation «??» sont-ils utilisés?


Cet opérateur est appelé l'opérateur de jointure nil . Il est utilisé pour définir la valeur par défaut si l'option est nulle.


 let a: String? = nil let b = "nil coalescing operator" let result = a ?? b print(result) //:"nil coalescing operator" 

  • un ?? b décompresse facultatif a s'il contient une valeur, ou renvoie la valeur par défaut b si a est nul.
  • L'expression a a toujours un type facultatif. L'expression b doit correspondre au type stocké dans a.

6. Quelle est la différence entre "?" Et '!'?


Le symbole "?"


  1. Lorsque vous travaillez avec des options, vous pouvez mettre "?" devant les jeux de commandes tels que les méthodes, les propriétés et les indices.
  2. Si la valeur est avant "?" est égal à zéro, alors tout ce qui vient après "?" ignoré et la valeur de l'expression entière devient nulle.
  3. Sinon, l'option est décompressée, et tout ce qui vient après le "?" agit sur la valeur déballée.
  4. Dans les deux cas, la valeur de l'expression entière est facultative.

Le symbole "!"


  1. Après avoir vérifié que l'option contient une valeur, vous pouvez accéder à sa valeur de base en ajoutant un point d'exclamation (!) À la fin du nom optionnel.
  2. Le point d'exclamation dit en fait: «Je sais que cette option est vraiment importante; veuillez l'utiliser. "
  3. Utilisez-le uniquement si vous êtes absolument sûr que l'option implicitement décompressée est importante la première fois que vous y accédez.

7. Qu'est-ce qu'un alias de type dans Swift?


Une déclaration d'alias de type introduit un alias nommé d'un type existant dans le programme. Les déclarations d'alias de type sont déclarées à l'aide du mot clé typealias.


typealias name = type existant


 typealias StudentName = String let name:StudentName = "Jack" 

Vous pouvez utiliser des typealias pour la plupart des types dans Swift, par exemple:


  • Types intégrés (par exemple String, Int)
  • Types personnalisés (par exemple, classes, structures, énumérations)
  • Types complexes (par exemple fermetures)

8. Quelle est la différence entre les fonctions et les méthodes dans Swift?


Une méthode est une fonction associée à une classe, une structure ou une énumération. Cela s'applique aux méthodes d'instance et aux méthodes de type.


Fonction - déclarée dans la portée globale et n'appartient à aucun type.


Les fonctions peuvent être définies en dehors des classes ou à l'intérieur des classes / structures / énumérations, tandis que les méthodes doivent être définies à l'intérieur et faire partie des classes / structures / énumérations.


9. Quelle est la syntaxe des paramètres externes?


Un paramètre externe nous permet de donner des noms aux paramètres de fonction pour rendre leur objectif plus compréhensible.


puissance func (base a: Int, exposant b: Int) -> Int


* Parfois, il est utile de nommer chaque paramètre lors de l'appel d'une fonction pour indiquer le but de chaque argument transmis à la fonction.


Si vous souhaitez que les utilisateurs de votre fonction fournissent des noms de paramètres lors de son appel, définissez un nom de paramètre externe pour chaque paramètre en plus du nom de paramètre local. *


10. Est-il possible de redéfinir les structures et les énumérations dans Swift?


Vous ne pouvez pas sous-classer une structure ou une énumération, ni les remplacer. Parce que la structure est un type de valeur et que le compilateur a besoin de connaître sa taille exacte au moment de la compilation, ce qui le rend impossible.


Pour trouver les parties précédentes, suivez les liens Partie 1 , Partie 2 , Tout sur les fermetures , Tout sur les propriétés


C'est tout! Nous sommes sûrs que les traductions seront utiles non seulement aux étudiants du cours iOS Developer , mais aussi à de nombreux utilisateurs Habr. Nous vous souhaitons beaucoup de succès professionnel et nous nous réjouissons des prochains groupes de nos programmes en ligne protégés par le droit d'auteur!

Source: https://habr.com/ru/post/fr453644/


All Articles