Fermer

janvier 24, 2021

Voici 15 des questions d'entrevue Node.js les plus posées13 minutes de lecture



Vous avez une interview de programmation à venir? Il est aussi important de s'y préparer que de développer vos connaissances en codage pour l'atteindre. Cela vous donnera la confiance nécessaire pour gérer l'interview et vous débarrasser de la nervosité. Cela est particulièrement vrai si vous êtes confronté à une interview de programmation pour la première fois de votre vie.

Pour aider les développeurs de Node.js à se préparer pour une interview, j'ai dressé une liste de 15 Node.js fréquemment demandés. et questions d'entrevue liées au développement Web. Ces questions et leurs réponses vous inciteront également à revoir tous les domaines que vous estimez devoir améliorer avant la grande interview.

Dans cet article, nous nous concentrons sur les questions liées uniquement à Node.js; cependant, gardez à l'esprit que les questions liées à Javascript sont très courantes dans les interviews Node.js.Vous devez donc vous préparer à certaines d'entre elles également. Il n'y a pas si longtemps, nous avons écrit un article sur questions d'entretien JavaScript courantes pour couvrir les bases.

Pour le moment, voyons les questions relatives aux nœuds que vous êtes susceptible de répondre dans votre prochaine interview.

En quoi Node.js est-il différent de Javascript?

Quand utiliser Node.js?

Node.js est asynchrone, événementiel, non bloquant et monothread. Cela fait de Node le candidat idéal pour développer les types d'applications suivants:

  • Applications en temps réel comme le chat et les services fournissant des mises à jour en direct.
  • Applications de streaming qui fournissent des vidéos ou d'autres contenus multimédias à un large public.
  • E / S applications intensives, comme les plates-formes collaboratives.
  • Backends Web qui suivent l'architecture des microservices.

Cependant, les qualités uniques de Node.js le rendent loin d'être idéal pour d'autres types d'applications: celles qui exécutent des tâches gourmandes en ressources processeur, comme les les calculs mathématiques seront limités par l'exécution monothread de Node.

Si vous voulez en savoir plus à ce sujet, consultez notre article sur l'architecture de Node.js et quand utiliser Node.js dans les projets . [19659015] Que fait EventEmitter?

Chaque objet de Node.js capable d'émettre des événements est membre de la classe EventEmitter . Le module http en est un exemple.

Toutes les classes EventEmitter peuvent utiliser les classes eventEmitter.on () [19659018] fonction pour attacher des écouteurs d'événements à l'événement. Ensuite, dès qu'un tel événement est capturé, ses auditeurs sont appelés un par un de manière synchrone.

Qu'est-ce que la boucle d'événements de Node?

Étant donné que Node.js est monothread, il doit être non bloquant pour éviter que le thread ne passe trop de temps sur une tâche qui prend un certain temps. La boucle d'événements est responsable de l'activation de ce comportement non bloquant. Son travail est de planifier les tâches en attente en utilisant le thread d'application.

Nous savons que Node utilise des rappels pour gérer la réponse retournée par une fonction asynchrone lorsque sa tâche est terminée. Semblable à l'événement qui a créé la tâche, l'achèvement de la tâche émet également un événement. Node.js ajoute ces événements qui nécessitent une gestion à une file d'attente d'événements.

La boucle d'événements effectue une itération sur les événements de la file d'attente d'événements et planifie quand exécuter les fonctions de rappel associées.

Que sont les flux de nœuds?

Les flux sont pipelines qui lisent ou écrivent des données à partir d'une source et les transfèrent vers une destination de flux continu. Il existe quatre types de flux:

  • Lisible
  • Inscriptible
  • Duplex (à la fois lisible et inscriptible)
  • Transform (Un type de flux duplex. Sa sortie est calculée à l'aide de l'entrée)

Chaque flux est également un EventEmitter . Cela signifie qu'un objet de flux peut émettre des événements lorsqu'il n'y a pas de données sur le flux, lorsque des données sont disponibles sur le flux ou lorsque les données du flux sont vidées du programme.

Quelle est la différence entre les fonctions readFile et createReadStream?

La fonction readFile lit tout le contenu du fichier de manière asynchrone et le stocke dans la mémoire avant de le transmettre à l'utilisateur. [19659002] createReadStream utilise un flux lisible qui lirait le fichier bloc par bloc sans stocker l'intégralité de celui-ci dans la mémoire.

createReadStream optimise le fichier opération de lecture par rapport à readFile en utilisant moins de mémoire et en la rendant plus rapide. Si le fichier est de taille considérable, l'utilisateur n'a pas à attendre longtemps avant que tout son contenu soit disponible, car de petits morceaux sont envoyés à l'utilisateur au fur et à mesure de leur lecture.

Comment gérez-vous les exceptions non interceptées dans Node.js?

Nous pouvons intercepter les exceptions non interceptées lancées dans l'application à son niveau de processus. Nous attachons un auditeur à l'objet global process global object pour capturer de tels événements.

Node peut-il tirer pleinement parti d'un système multiprocesseur?

Les applications de nœud sont toujours mono-thread. Ainsi, naturellement, l’application n’utilise qu’un seul processeur, même lorsqu’elle s’exécute sur des systèmes multiprocesseurs.

Mais l’un des modules principaux de Node, Cluster, permet aux applications Node de tirer parti de plusieurs cœurs. Cela nous permet de créer plusieurs processus de travail qui peuvent s'exécuter sur plusieurs cœurs en parallèle et de partager un seul port pour écouter les événements.

Ici, chaque processus utilise IPC pour communiquer avec le thread principal et passer le handle du serveur à d'autres comme nécessaire. Le processus principal peut soit écouter le port lui-même et transmettre chaque nouvelle connexion aux processus enfants dans un ordre circulaire, soit affecter le port aux processus enfants afin que les processus enfants écoutent les demandes.

Quel est le modèle de conception de réacteur utilisé dans Node.js?

Le modèle de réacteur est utilisé pour maintenir les opérations d'E / S non bloquantes dans Node.js. Il attache une fonction de rappel (un gestionnaire) à chaque opération d'E / S. Le gestionnaire est ensuite soumis à un démultiplexeur au moment de la création de la demande.

Le démultiplexeur collecte toutes les demandes d'E / S effectuées dans l'application et les met en file d'attente en tant qu'événements dans une file d'attente. C'est ce que nous appelons la file d'attente d'événements. Après avoir mis l'événement en file d'attente, le démultiplexeur retourne le contrôle du thread d'application.

Pendant ce temps, la boucle d'événements parcourt chaque événement de la file d'attente d'événements et appelle le rappel associé pour gérer la réponse à l'événement.

C'est le réacteur. pattern utilisé par Node.js.

Quels sont les avantages d'un backend web monothread à un backend multithread?

En d'autres termes: bien que Node soit monothread, la plupart des langages de programmation sont utilisés pour le backend le développement fournit plusieurs threads pour gérer les opérations d'application. En quoi le fait de n'avoir qu'un seul thread est-il avantageux pour le développement backend?

  • Il est plus facile pour les développeurs d'implémenter des applications. Nos applications n'ont aucun risque de se heurter soudainement à des conditions de concurrence inattendues en production.
  • Les applications monothread sont facilement évolutives.
  • Elles peuvent répondre à un grand nombre de requêtes utilisateur reçues à un moment sans trop de retard. En comparaison, un backend multi-thread doit attendre qu'un thread du pool de threads soit libre pour répondre à la demande de l'utilisateur lorsque le trafic est élevé. Avec la nature non bloquante de Node, il n'y a aucun risque qu'une requête utilisateur reste trop longtemps sur le thread unique (cela n'est vrai que lorsque les opérations ne sont pas gourmandes en CPU).

Qu'est-ce que REPL dans Node?

REPL signifie Read-Eval-Print-Loop. C'est un environnement virtuel dans lequel vous pouvez exécuter facilement un langage de programmation. Node est livré avec un REPL intégré pour exécuter du code JavaScript. C'est similaire aux consoles que nous utilisons dans les navigateurs pour exécuter du code JavaScript.

Pour démarrer le Node REPL, il vous suffit d'exécuter la commande, node, sur la ligne de commande. Ensuite, une fois que vous avez écrit une ligne de code JavaScript, vous pouvez ensuite voir sa sortie.

Le rappel passé à la fonction setImmediate est exécuté dans l'itération suivante de la boucle d'événements sur la file d'attente d'événements.

D'un autre côté , le rappel passé au process.nextTick est exécuté avant la prochaine itération de la boucle d'événements et après la fin de l'opération en cours d'exécution dans le programme. Au démarrage de l'application, son rappel est appelé avant que la boucle d'événements ne commence à parcourir la file d'attente des événements.

Par conséquent, le rappel process.nextTick est toujours appelé avant le setImmediate ] Rappel.

Que sont les stubs?

Les stubs sont utilisés lors du test des applications. Ils simulent le comportement d'un composant ou d'un module donné afin que vous puissiez vous concentrer uniquement sur la partie du code que vous souhaitez tester. En utilisant des stubs à la place de composants non pertinents pour le test, vous n'aurez pas à vous soucier des composants externes qui affectent les résultats.

Par exemple, si le composant que vous testez a une opération de lecture de fichier avant la pièce que vous prévoyez de tester , vous pouvez utiliser un stub pour simuler ce comportement et renvoyer un contenu fictif sans réellement lire le fichier.

Dans Node, nous utilisons des bibliothèques comme Sinon à cette fin.

Pourquoi est-il recommandé de séparer 'app' et «serveur» dans Express?

En séparant l'application et le serveur dans Express, nous pouvons séparer l'implémentation de l'API de la configuration liée au réseau. Cela nous permet de réaliser des tests API sans effectuer d'appels réseau. Cela garantit également une exécution plus rapide des tests et de meilleures métriques de couverture de code.

Pour réaliser cette séparation, vous devez déclarer l'API et le serveur dans des fichiers séparés. Ici nous utilisons deux fichiers: app.js et server.js .

Que sont le fil et le npm? Pourquoi voudriez-vous utiliser yarn over npm?

npm est le gestionnaire de paquets par défaut distribué avec Node.js. Il possède une grande bibliothèque de packages publics et privés stockés dans une base de données appelée «registre emp» à laquelle les utilisateurs peuvent accéder via le client de ligne de commande de npm. Avec l’aide de npm, les utilisateurs peuvent facilement gérer les dépendances utilisées dans un projet.

yarn est également un gestionnaire de packages qui a été publié en réponse à certaines des lacunes de npm. Cependant, yarn s'appuie sur le registre npm pour fournir aux utilisateurs l'accès aux packages. Étant donné que la structure sous-jacente de yarn est basée sur npm lui-même, la structure de votre projet et votre flux de travail n'ont pas à subir de changements majeurs si vous migrez vers yarn depuis npm.

Comme je l'ai déjà mentionné, yarn offre de meilleures fonctionnalités que npm dans certains cas. . Contrairement à npm, il met en cache chaque package que vous téléchargez, vous n'avez donc pas à le télécharger à nouveau chaque fois que vous en avez besoin.

Il offre également une meilleure sécurité en vérifiant l'intégrité des packages à l'aide de sommes de contrôle. Cela garantit qu'un paquet qui fonctionnait sur un certain système fonctionnera exactement de la même manière dans n'importe quel autre système.

Conclusion

Dans cet article, nous avons passé en revue 15 des questions d'entretien Node.js les plus fréquemment posées pour vous aider à vous préparer mieux pour votre prochaine entrevue. Savoir quel type de questions vous êtes susceptible de vous poser et connaître leurs réponses vous donnera la confiance nécessaire pour répondre aux questions d'entrevue sans vous sentir nerveux.

Cet article a été initialement publié sur [19659095] Live Code Stream de Juan Cruz Martinez (Twitter: @bajcmartinez ), fondateur et éditeur de Live Code Stream, entrepreneur, développeur, auteur, conférencier et auteur de

Live Code Stream est également disponible sous forme de bulletin hebdomadaire gratuit. Inscrivez-vous pour recevoir des mises à jour sur tout ce qui concerne la programmation, l'intelligence artificielle et l'informatique en général.




Source link

0 Partages