LES QUESTIONS LES PLUS COURANTES EN ENTRETIEN TECHNIQUE (DEVELOPPEUR)

❓ Qu’est ce qu’un constructeur et à quoi cela sert ?

✔ Un constructeur est, en programmation orientée objet, une fonction particulière appelée lors de l’instanciation. Elle permet d’allouer la mémoire nécessaire à l’objet et d’initialiser ses attributs. La méthode constructeur est défini dans une classe et ne retourne aucune valeur. C’est le mot clé New qui permet d’instancier un objet à partir d’une classe en appelant cette méthode constructeur.

 

❓ Qu’est ce que le TDD ?

✔ Le Test Driven Development (Développement Dirigé par les Tests), est une technique de développement qui impose l’écriture de tests avant même l’écriture de la première ligne de code.

 

❓ Expliquez la différence entre les classes et les ID?

✔ L’attribut id est l’identifiant unique utilisé pour spécifier l’élément. Il est utilisé par CSS et JavaScript pour effectuer une certaine tâche pour un élément unique. En CSS, l’attribut id est écrit en utilisant le symbole # suivi de l’id.

✔ L’attribut class est utilisé pour spécifier un ou plusieurs noms de classe pour un élément HTML. L’attribut class peut être utilisé sur n’importe quel élément HTML. Le nom de classe peut être utilisé par CSS et JavaScript pour effectuer certaines tâches pour les éléments avec le nom de classe spécifié. Le nom de classe dans CSS est précédé par le symbole « . ». On utilise au maximum les classes afin de pouvoir réutiliser son CSS. On privilégiera par contre l’id lorsque l’on doit pouvoir cibler un élément en particulier.

 

❓ Quels sont les 3 grands principes de la POO ?

✔ L’encapsulation : cette technique permet de réunir des variables et des fonctions au sein d’une même entité nommée classe. Les variables sont appelées les données membres, les fonctions sont appelées les méthodes. L’accès aux données et méthodes peut être aussi réglementé.

✔ L’héritage : cette technique permet de définir une hiérarchie de classe. Chaque classe fille hérite des méthodes et des données de ses “mères”. En pratique, la classe de base est une classe générique, ainsi plus on descend dans la hiérarchie, plus on spécialise cette classe.

✔ Le polymorphisme : ce nom vient du grec et signifie “qui peut prendre plusieurs formes”. Cette caractéristique offre la possibilité de définir plusieurs fonctions de même nom mais possédant des paramètres différents. La bonne fonction est choisie en fonction de ses paramètres lors de l’appel.

 

❓ Citez moi les 3 types de design pattern et un design pattern de chaque type

✔ Creational pattern (modèle de création)

✔ Behavioral pattern (modèle de comportement)

✔ Structural pattern (modèle de structure)

👌 Pattern factory : Créer un objet dont le type dépend du contexte

👌 Pattern Itérateur : est un patron de conception comportemental qui permet de parcourir les éléments d’une collection sans révéler sa représentation interne (liste, pile, arbre, etc.).

👌 Pattern Adaptateur est un patron de conception structurel qui permet de faire collaborer des objets ayant des interfaces normalement incompatibles. Vous voulez en savoir plus sur les design pattern ? Voici le site qui vous réconciliera avec ! => https://buff.ly/3gy3Tv9

 

❓ Qu’est ce que le garbage collector en .NET?

✔ Le « garbage collector » du .NET gère l’allocation et la libération de mémoire pour votre application. Il stocke les « assembly » .net partagés entre plusieurs applications.

Il y a trois générations:

✔ La génération 0 identifie un objet nouvellement créé qui n’a jamais été marqué pour la collecte.

✔ La génération 1 identifie un objet qui a survécu à un GC (marqué pour la collecte mais non supprimé parce qu’il y avait suffisamment d’espace de tas)

✔ La génération 2 identifie un objet ayant survécu à plus d’un balayage du GC.

 

❓ Expliquer les différences entre interface et classe abstraite

Une interface est un contrat : la personne qui écrit l’interface dit: ” hé, j’accepte les choses comme ça “, et la personne qui utilise l’interface dit ” OK, la classe que j’écris est comme ça “. Une interface est un shell vide . Il n’y a que les signatures des méthodes, ce qui implique que les méthodes n’ont pas de corps. L’interface ne peut rien faire. C’est juste un motif.

Les classes abstraites ressemblent beaucoup aux interfaces, mais elles ont quelque chose de plus: vous pouvez définir un comportement pour elles. Il s’agit plutôt d’une personne qui dit: “ces classes devraient ressembler à ça, et elles ont ceci en commun, alors remplissez les blancs!”.

POUR ALLER PLUS LOIN : => Une interface peut hériter un nombre illimité d’interfaces à la fois => Une classe abstraite ne peut hériter qu’une classe ou une classe abstraite à la fois. => Les interfaces ne peuvent être héritées que par des interfaces. Les classes doivent les implémentées au lieu d’être héritées. => Une classe abstraite peut hériter une autre classe concrète ou abstraite

 

❓ Que veut dire l’acronyme SOLID et expliquez chaque principe

✔ S => Single Responsability Que ce soit une classe ou une méthode, il est important que celle-ci ne puisse faire qu’une et une seule chose : la responsabilité unique.

✔ O => Open / Closed Une classe doit être ouverte à l’extension et fermée à la modification.

✔ L => Liskov Substitution Pour illustrer cette phrase, vous entendrez régulièrement l’exemple suivant : “Un carré est un rectangle” (qui est bien vrai mathématique). Si l’on suit rigoureusement le principe d’héritage dans la programmation objet qui se base sur la formule : “est un”, vous allez avoir envie de faire une classe Carré qui hérite de la classe Rectangle. Erreur ! il ne faut surtout pas car vous allez vous heurter à des problèmes de conception. Un carré ne se comporte pas comme un rectangle d’un point de vue objet pur.

✔ I => Interface segregation Plus une interface est simpliste, “atomique”, plus il est facile de distinguer les contrats et leurs utilités.

✔ D => Dependency injection Il faut injecter les dépendances nécessaires à une classe. Autrement dit, on donne à une classe ce dont elle a besoin pour fonctionner

 

❓ Quelle est la différence entre == et === ?

✔ La réponse est que == effectue toutes les conversions de type nécessaires avant de faire la comparaison alors que === ne le fait pas.

 

❓ Expliquez ce qu’est un callback (fonction de retour) et fournissez un exemple simple

✔ Un callback est une fonction passée en argument dans une autre fonction et est appelée lorsque la fonction (celle dans laquelle le callback est passé) est terminée.

 

❓ À quoi servent les promesses ?

✔ Les promesses sont utilisées pour la programmation asynchrone. Elles permettent d’écrire des programmes Javascript de manière non bloquante.

 

❓ Que sont Get et Post ?

✔ GET affiche les données soumises dans l’URL, alors que dans la méthode POST, les informations ne sont pas affichées car elles sont encodées dans la requête.

✔ GET peut gérer un maximum de 2048 caractères, POST n’a pas de telles restrictions.

✔ GET n’autorise que les données ASCII, POST n’a aucune restriction, les données binaires sont également autorisées.

✔ Normalement, GET est utilisé pour récupérer des données tandis que POST pour insérer et mettre à jour des données.

 

❓ À quoi servent les mots-clés “async / await” ?

✔ Utiliser le mot clef async devant une fonction va faire que la fonction en question va toujours retourner une promesse. Dans le cas où la fonction retourne explicitement une valeur qui n’est pas une promesse, alors cette valeur sera automatiquement enveloppée dans une promesse. Le mot clef await est uniquement valide au sein de fonctions asynchrones définies avec async. Ce mot clef permet d’interrompre l’exécution d’une fonction asynchrone tant qu’une promesse n’est pas résolue ou rejetée. La fonction asynchrone reprend ensuite puis renvoie la valeur de résolution.

 

❓ Quelle est la différence entre const, let et var ?

✔ Const représente une constante.

✔ Var représente une variable à portée globale

✔ Let représente une variable à portée locale (ES6)

 

❓ Qu’est-ce que Ajax?

✔ AJAX (Asynchronous JavaScript And XML) permet aux applications de transporter des données vers/depuis un serveur de manière asynchrone sans rafraîchir la page. Cela signifie qu’il est susceptible de mettre à jour des parties d’une page Web, sans recharger la page entière.

❓ Qu’est-ce que JSX?

✔ JSX signifie JavaScript XML. Il s’agit d’un type de fichier utilisé par React qui utilise l’expressivité de JavaScript avec HTML. Ce fichier rend les applications robustes et augmente ses performances.

 

❓ Qu’est-ce que la méthode render() dans React? Et expliquer son but?

✔ Chaque composant React doit obligatoirement avoir la méthode render(). Il renvoie un seul élément React qui est la représentation du composant DOM natif. Si plusieurs éléments HTML doivent être rendus, ils doivent être regroupés dans une balise englobante . Cette fonction doit être gardée pure, c’est-à-dire qu’elle doit retourner le même résultat chaque fois qu’il est invoqué.

❓ Expliquer «DOM réel» et «DOM virtuel»

✔ DOM abrégé en tant que modèle objet de document. Les DOMs sont utilisés pour comprendre certains textes spécifiques. Par exemple, lorsqu’il s’agit de développement Web et d’applications, DOM est utilisé pour représenter les textes HTML. ReactJS utilise ce qu’on appelle un DOM virtuel. Il s’agit d’une copie simplifiée des textes HTML de React. De plus, c’est une représentation du vrai DOM. Réagir en fournissant et en utilisant un «DOM virtuel» est souvent l’un des principaux avantages mentionnés lorsqu’on parle de cette bibliothèque JavaScript.

 

❓ Quelles sont les étapes de la durée de vie d’un composant ?

✔ Un tel cycle de vie comporte trois étapes: l’initialisation, les mises à jour des états et la destruction. L’encapsulation masque les détails d’implémentation d’une classe à d’autres objets. L’héritage est un moyen de former de nouvelles classes en utilisant des classes déjà définies. Le polymorphisme est le processus d’utilisation d’un opérateur ou d’une fonction de différentes manières pour différentes entrées de données. L’abstraction simplifie la réalité complexe en modélisant des classes appropriées au problème.

❓ Qu’est-ce que npm?

✔  npm signifie Node.js Package Manager. Il se compose d’une interface de ligne de commande que nous pouvons utiliser pour accéder à un registre en ligne de packages publics et privés.

 

❓ Que fait «npm install»?

✔ Il installe les dépendances trouvées dans le fichier package.json .

 

❓ À quoi sert Express.js?

✔ Express.js facilite la définition des routes pour notre application Web, ce qui en fait un choix évident pour la création API REST . Il est assez flexible et facile à utiliser, et son architecture middleware permet de garder un système simple et évolutif.

❓ Quels sont les composants importants de .Net?

✔  Les composants de .Net sont le Common Language Runtime, la bibliothèque de classes .Net, le domaine d’application, le Common Type System, le framework .Net, le profilage, etc. Cependant, les deux composants importants sont Bibliothèque de classes et Common Language Runtime.

❓ Qu’est-ce que JIT?

✔ JIT signifie Juste à temps . JIT est un compilateur qui convertit le langage intermédiaire en code natif. Le code est converti en langue native lors de l’exécution. Le code natif n’est rien d’autre que des spécifications matérielles qui peuvent être lues par le CPU. Le code natif peut être stocké afin qu’il soit accessible pour les appels suivants.

❓ Qu’est-ce que MVC?

✔ MVC signifie Model View Controller. C’est un modèle architectural pour la construction des applications .Net. Des modèles – Les objets de modèle stockent et récupèrent les données de la base de données pour une application. Ce sont généralement les parties logiques d’une application qui est implémentée par le domaine de données de l’application. Vue – Ce sont les composants qui affichent la vue de l’application sous forme d’interface utilisateur. La vue obtient les informations des objets du modèle pour leur affichage. Ils ont des composants tels que des boutons, des boîtes de dépôt, des listes déroulantes, etc. Contrôleurs – Ils gèrent les interactions des utilisateurs. Ils sont chargés de répondre aux entrées de l’utilisateur, de travailler avec les objets du modèle et de choisir une vue à rendre à l’utilisateur.

❓ Définissez l’encapsulation.

✔ L’encapsulation est une fonction qui inclut diverses méthodes et données dans un projet. Ceci est fait pour que l’objet du programme puisse exécuter ses fonctions de manière fluide et sans erreur.

 

 

J’espère que cette petite liste de questions types vous sera utile pour vos futurs entretiens. Mon pole formation proposera d’ici quelques semaines une formation gratuite pour construire son CV quand on est développeur et devenir incollable en entretien technique ! On vous en dira bientôt plus !

admin
septembre 22, 2021