Maison >interface Web >js tutoriel >5 Exercices d'interview JavaScript typiques

5 Exercices d'interview JavaScript typiques

Joseph Gordon-Levitt
Joseph Gordon-Levittoriginal
2025-02-21 09:23:10266parcourir

5 Typical JavaScript Interview Exercises

Points de base

  • Les questions d'interview JavaScript communes tournent généralement autour de la compréhension des concepts clés, tels que la portée, la création de méthodes natives, la promotion, this Mots-clés et les fonctions call() et apply().
  • En JavaScript, il est crucial de comprendre le contexte d'une fonction et comment l'appeler. Le mot-clé this se réfère au contexte, qui varie selon que la fonction est appelée comme faisant partie d'un objet ou comme fonction autonome.
  • L'élévation de JavaScript fait référence au processus dans lequel les variables et les fonctions sont déplacées en haut de leur portée de confinement. Cependant, bien que la fonction conserve sa valeur initiale, la variable ne le fait pas et est initialement définie sur undefined.

Les développeurs JavaScript sont très populaires dans le domaine informatique. Si ce rôle reflète le mieux vos connaissances, vous avez de nombreuses possibilités de changer votre entreprise d'activité et d'augmenter votre salaire. Mais avant d'être embauché par l'entreprise, vous devez démontrer vos compétences pour passer le processus d'entrevue. Dans cet article, je vous montrerai cinq compétences en JavaScript de candidat commun et leurs solutions connexes dans les entretiens d'embauche frontale. Ce sera amusant!

Question 1: Scope

Considérez le code suivant:

<code class="language-javascript">(function() {
   var a = b = 5;
})();

console.log(b);</code>

Qu'est-ce que la console imprimera?

Réponse

Le code ci-dessus imprime 5. L'astuce de ce problème est que dans l'expression de fonction d'exécution immédiate (iife), il y a deux instructions d'attribution, mais la variable a est déclarée avec le mot clé var. Cela signifie que a est une variable locale de la fonction. Au lieu de cela, b est affecté à la portée globale. Une autre astuce avec ce problème est qu'elle n'utilise pas de modèle strict ('use strict';) à l'intérieur de la fonction. Si le mode strict est activé, le code lancera une erreur "Uncaught ReferenceError: b is not defined". N'oubliez pas que le schéma strict vous oblige à vous référer explicitement aux lunettes mondiales si c'est le comportement attendu. Par conséquent, vous devriez écrire ceci:

<code class="language-javascript">(function() {
   'use strict';
   var a = window.b = 5;
})();

console.log(b);</code>

Question 2: Créez une méthode "native"

Définissez une fonction String sur l'objet repeatify. Cette fonction accepte un entier, spécifiant le nombre de fois où la chaîne doit être répétée. Cette fonction renvoie une chaîne qui est répétée pour un nombre spécifié de fois. Par exemple:

<code class="language-javascript">console.log('hello'.repeatify(3));</code>

doit être imprimé. hellohellohello

Réponse

Une implémentation possible est la suivante:

<code class="language-javascript">String.prototype.repeatify = String.prototype.repeatify || function(times) {
   var str = '';

   for (var i = 0; i < times; i++) {
       str += this;
   }

   return str;
};</code>
Cette question teste la compréhension des développeurs de l'héritage JavaScript et des propriétés

. Il vérifie également que les développeurs peuvent étendre la fonctionnalité des types de données natifs (bien que cela ne devrait pas être fait). Un autre point important ici est de prouver que vous comprenez comment éviter les fonctions d'écrasement qui peuvent avoir été définies. Cela se fait en testant si la fonction n'existe pas avant de définir votre propre fonction: prototype

<code class="language-javascript">String.prototype.repeatify = String.prototype.repeatify || function(times) {/* code here */};</code>
Cette technique est particulièrement utile lorsque vous êtes invité à simuler une fonction JavaScript.

Question 3: Améliorer

Quel est le résultat de l'exécution de ce code? Pourquoi?

<code class="language-javascript">(function() {
   var a = b = 5;
})();

console.log(b);</code>

Réponse

Le résultat de ce code est undefined et 2. La raison en est que la variable et la fonction sont promues (déplacées en haut de la fonction), mais la variable ne conserve aucune valeur attribuée. Ainsi, lors de l'impression de la variable a, il existe dans la fonction (il est déclaré), mais il est toujours undefined. En d'autres termes, le code ci-dessus est équivalent au code suivant:

<code class="language-javascript">(function() {
   'use strict';
   var a = window.b = 5;
})();

console.log(b);</code>

Question 4: this Comment cela fonctionne-t-il en javascript

Quel est le résultat du code suivant? Expliquez votre réponse.

<code class="language-javascript">console.log('hello'.repeatify(3));</code>

Réponse

Code imprime Aurelio De Rosa et John Doe. La raison en est que le contexte de la fonction (à quoi le mot clé this se réfère-t-il) en javascript dépend de la façon dont la fonction est appelée, et non de la façon dont elle est définie. Dans le premier console.log() appel, getFullname() est appelé en fonction de l'objet obj.prop. Par conséquent, le contexte fait référence à ce dernier et la fonction renvoie la propriété fullname de l'objet. Au contraire, lorsque getFullname() est affecté à la variable test, le contexte fait référence à l'objet global (window). Cela se produit parce que test est implicitement défini comme une propriété de l'objet global. Par conséquent, la fonction renvoie la valeur de l'attribut nommé window, qui dans ce cas est la valeur définie par le code sur la première ligne de l'extrait de code. fullname

Question 5: et call() apply() Correction du bug dans le numéro précédent afin que le dernier soit imprimé

.

console.log() Aurelio De Rosa Réponse

Ce problème peut être résolu à l'aide de la fonction ou

pour forcer le contexte de la fonction. Si vous ne les comprenez pas et leurs différences, je vous suggère de lire l'article "La différence entre

et call()". Dans le code suivant, j'utiliserai apply(), mais dans ce cas, function.call produirai le même résultat: function.apply call() apply()

Conclusion
<code class="language-javascript">String.prototype.repeatify = String.prototype.repeatify || function(times) {
   var str = '';

   for (var i = 0; i < times; i++) {
       str += this;
   }

   return str;
};</code>

Dans cet article, nous discutons de cinq questions courantes utilisées pour tester les développeurs JavaScript lors des entretiens. Les questions réelles peuvent varier d'une interview à l'autre, mais les concepts et les sujets abordés sont souvent très similaires. J'espère que vous vous amusez et testez vos connaissances. Si on vous pose d'autres questions intéressantes lors de l'entretien, n'hésitez pas à partager avec nous. Cela aidera de nombreux développeurs.

FAQS (FAQ)

Quelles erreurs courantes devraient être évitées dans les interviews en codage JavaScript?

L'une des erreurs les plus courantes n'est pas de bien comprendre le problème avant de commencer à coder. Prenez le temps de comprendre le problème et, si nécessaire, demandez des éclaircissements. Une autre erreur est que le cas Edge n'est pas pris en compte. Considérez toujours les cas de bord potentiels et comment votre code les gérera. Évitez également les valeurs codées dures. Votre solution doit fonctionner pour toutes les entrées, pas seulement pour les exemples fournis. Enfin, n'oubliez pas de communiquer votre processus de réflexion. L'intervieweur est intéressé par votre solution à votre problème, pas seulement à la solution finale.

Comment se préparer à l'interview de codage JavaScript?

Tout d'abord, vous devez bien comprendre les connaissances de base de JavaScript. Cela comprend la compréhension de concepts tels que les fermetures, les promesses, les fonctionnalités async/await et ES6. Pratiquez des problèmes de codage sur des plates-formes telles que Leetcode, HackerRank et Codewars. Lisez également les questions communes de l'interview JavaScript et essayez de les résoudre vous-même. Enfin, comprenez le principe de travail sous-jacent de JavaScript. Cela comprend la compréhension des fonctionnalités non bloquantes des boucles d'événements, des piles d'appels et JavaScript.

Quelles sont les fermetures en JavaScript et pourquoi sont-elles importantes?

Les fermetures

dans JavaScript sont des fonctions qui ont accès à la portée du parent, même si la fonction parent a été fermée. Ils sont importants car ils permettent la confidentialité des données et sont utilisés dans les modèles de fonctions d'usine et de module. Comprendre les fermetures est cruciale car elles sont la partie fondamentale de JavaScript.

Pouvez-vous expliquer le concept de "this" en javascript?

"this" Dans JavaScript est un mot-clé spécial, qui fait référence au contexte de l'appel d'une fonction. Sa valeur dépend de la façon dont la fonction est appelée. Il peut se référer à un objet global, un objet actuellement traité par une fonction, un objet créé par un constructeur ou un objet spécifié lors de l'utilisation des méthodes call, apply ou bind.

Comment JavaScript gère-t-il les opérations asynchrones?

JavaScript utilise des rappels, des promesses et async/await pour gérer les opérations asynchrones. Un rappel est une fonction qui est transmise comme un argument à d'autres fonctions et est appelée une fois certaines opérations terminées. La promesse est un objet qui indique que l'opération asynchrone est enfin terminée ou échouée. async/await est le sucre de syntaxe pour la promesse, ce qui fait que le code asynchrone a l'air et se comporte comme du code synchrone.

Qu'est-ce qu'un prototype en JavaScript?

Le prototype de JavaScript est un mécanisme pour que les objets JavaScript héritent les uns des autres. JavaScript est souvent appelé un langage basé sur un prototype, et la compréhension des prototypes est la clé pour comprendre JavaScript.

pouvez-vous expliquer la différence entre "==" et "===" dans JavaScript?

"==" est un opérateur d'égalité lâche qui convertit les opérandes au même type avant de faire des comparaisons. "===" est un opérateur d'égalité strict, qui n'effectue pas de conversion de type, il compare les opérandes tels quels.

Qu'est-ce qu'une boucle d'événement en javascript?

Event Loop est un mécanisme de JavaScript qui vérifie constamment si la pile d'appels est vide. Si oui, il prend la première tâche de la file d'attente de tâche et la pousse à la pile d'appels. Il permet à JavaScript de devenir non bloquant et gère les opérations asynchrones.

Qu'est-ce que JavaScript promesse?

Promise dans JavaScript est un objet qui indique que l'opération asynchrone est finalement terminée ou échouée. Ils peuvent être dans l'un des trois États: attendre, terminer ou rejeter. La promesse est utilisée pour gérer les opérations asynchrones d'une manière plus flexible que les rappels.

Quels sont les modèles de conception JavaScript communs?

Certains modèles de conception JavaScript communs incluent le mode module, le mode prototype, le mode observateur et le mode singleton. Comprendre ces modèles peut vous aider à écrire un code plus efficace, plus facile à entretenir et plus extensible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn