Maison interface Web js tutoriel J'ai entendu dire que tu voulais passer un entretien pour le front-end ?

J'ai entendu dire que tu voulais passer un entretien pour le front-end ?

Mar 01, 2017 pm 02:48 PM
前端 面试

Golden Three Silver Four Season, le front-end a été un domaine brûlant ces dernières années, et l'atmosphère est particulièrement forte, mon ami Xiaowei a interviewé comme un fou récemment et a rencontré de nombreux intervieweurs intéressants et des questions d'interview intéressantes. Aide-moi. Permettez-moi de paraphraser ce garçon fauteur de troubles.

Ce qui suit est l’histoire d’un de mes amis, ce n’est vraiment pas moi.

for (var i = 0; i < 5; i++) {
  console.log(i);
}
Copier après la connexion

"Xiaowei, dis-moi ce que ces lignes de code vont produire ?"

Lorsque l'intervieweur a tapé ces lignes de code dans Sublime, j'étais un peu confus. Palourde? N'est-ce pas la boucle la plus simple ? Y a-t-il un piège ? J'y ai pensé. Cela semble être très similaire à la question de clôture que j'ai vue. L'intervieweur n'a-t-il pas fini de l'écrire ? C'est toxique.

"Il devrait sortir directement 0 à 4...", dis-je faiblement.

"Oui, ne soyez pas nerveux, il n'y a pas de piège dans cette question, je l'écris juste avec désinvolture."

(Excusez-moi ? Intervieweur, êtes-vous là pour être drôle ? Je j'ai peur à mort ! )

"Alors qu'est-ce que tu regardes la sortie de ces lignes de code ?"

for (var i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(i);
  }, 1000 * i);}
Copier après la connexion

Euh, qu'est-ce que c'est, pourquoi ce n'est pas la fermeture J'ai mémorisé tellement de fois ? Question, laisse-moi y réfléchir. setTimeout retardera l'exécution, donc lorsque console.log est exécuté, i est en fait devenu 5. Oui, c'est tout. Comment peut-il être si difficile pour moi de faire quelque chose d'aussi simple ?

« Il devrait commencer à produire un 5, puis à produire un 5 toutes les secondes, un total de 5 5 s. »

« Oui, comment devrait-il être modifié pour produire 0 à 4 » ?

Enfin c'est quelque chose que je connais, il suffit d'ajouter une fermeture et c'est résolu, c'est stable !

for (var i = 0; i < 5; i++) {
  (function(i) {
    setTimeout(function() {
      console.log(i);
    }, i * 1000);
  })(i);
}
Copier après la connexion

« Très bien, pouvez-vous me dire ce qui se passera si je supprime ce i ? »

for (var i = 0; i < 5; i++) {
  (function() {
    setTimeout(function() {
      console.log(i);
    }, i * 1000);
  })(i);
}
Copier après la connexion

« Dans ce cas, i n'est pas réellement maintenu en interne. il affichera en fait 5. "

"Très bien, laissez-moi le changer pour vous et voir quel sera le résultat ?"

for (var i = 0; i < 5; i++) {
  setTimeout((function(i) {
    console.log(i);
  })(i), i * 1000);
}
Copier après la connexion

Hmm ? Qu'est-ce qui se passe, laisse-moi y réfléchir. Ici, une fonction d'exécution immédiate est transmise à setTimeout. Eh bien, setTimeout peut accepter des fonctions ou des chaînes comme paramètres, alors quelle est la fonction d'exécution immédiate ici ? Elle doit être indéfinie, ce qui équivaut à :

setTimeout(undefined, ...);
Copier après la connexion

et la fonction d'exécution immédiate s'exécutera immédiatement, alors elle devrait être émis immédiatement.

"Il devrait afficher 0 à 4 immédiatement."

"Oh, pas mal, la dernière question, tu connais Promesse ?"

"C'est bon... "

"OK, alors essayez cette question"

setTimeout(function() {
  console.log(1)
}, 0);
new Promise(function executor(resolve) {
  console.log(2);
  for( var i=0 ; i<10000 ; i++ ) {
    i == 9999 && resolve();
  }
  console.log(3);
}).then(function() {
  console.log(4);
});
console.log(5);
Copier après la connexion

WTF ! ! ! ! Je veux me taire !

Cette question devrait examiner le mécanisme d'exécution de mon JavaScript. Laissez-moi mettre de l'ordre dans ma réflexion.

Première rencontre avec setTimeout, donc une minuterie sera définie en premier, et une fois la minuterie terminée, la fonction sera transmise et placée dans la file d'attente des tâches, donc 1 ne sera certainement pas sorti au début.

Ensuite, il y a une promesse, la fonction à l'intérieur est exécutée directement, elle devrait donc afficher 2 3 directement.

Ensuite, le then de Promise doit être placé à la fin de la tick actuelle, mais toujours dans la tick actuelle.

Par conséquent, 5 doit être affiché en premier, puis 4 .

Enfin, le tick suivant est 1 .

«2 3 5 4 1»

«D'accord, attendons la prochaine série d'entretiens.»

Tellement facile ! Maman n'a plus à se soucier de mes entretiens.

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Un article pour parler du contrôle de la mémoire dans Node Un article pour parler du contrôle de la mémoire dans Node Apr 26, 2023 pm 05:37 PM

Le service Node construit sur une base non bloquante et piloté par les événements présente l'avantage d'une faible consommation de mémoire et est très adapté à la gestion de requêtes réseau massives. Dans le contexte de demandes massives, les questions liées au « contrôle de la mémoire » doivent être prises en compte. 1. Le mécanisme de récupération de place du V8 et les limitations de mémoire Js sont contrôlés par la machine de récupération de place

PHP et Vue : une combinaison parfaite d'outils de développement front-end PHP et Vue : une combinaison parfaite d'outils de développement front-end Mar 16, 2024 pm 12:09 PM

PHP et Vue : une combinaison parfaite d'outils de développement front-end À l'ère actuelle de développement rapide d'Internet, le développement front-end est devenu de plus en plus important. Alors que les utilisateurs ont des exigences de plus en plus élevées en matière d’expérience des sites Web et des applications, les développeurs front-end doivent utiliser des outils plus efficaces et plus flexibles pour créer des interfaces réactives et interactives. En tant que deux technologies importantes dans le domaine du développement front-end, PHP et Vue.js peuvent être considérés comme une arme parfaite lorsqu'ils sont associés. Cet article explorera la combinaison de PHP et Vue, ainsi que des exemples de code détaillés pour aider les lecteurs à mieux comprendre et appliquer ces deux éléments.

Comment utiliser le langage Go pour le développement front-end ? Comment utiliser le langage Go pour le développement front-end ? Jun 10, 2023 pm 05:00 PM

Avec le développement de la technologie Internet, le développement front-end est devenu de plus en plus important. La popularité des appareils mobiles, en particulier, nécessite une technologie de développement frontal efficace, stable, sûre et facile à entretenir. En tant que langage de programmation en développement rapide, le langage Go est utilisé par de plus en plus de développeurs. Alors, est-il possible d’utiliser le langage Go pour le développement front-end ? Ensuite, cet article expliquera en détail comment utiliser le langage Go pour le développement front-end. Voyons d’abord pourquoi le langage Go est utilisé pour le développement front-end. Beaucoup de gens pensent que le langage Go est un

Questions fréquemment posées par les enquêteurs front-end Questions fréquemment posées par les enquêteurs front-end Mar 19, 2024 pm 02:24 PM

Lors des entretiens de développement front-end, les questions courantes couvrent un large éventail de sujets, notamment les bases HTML/CSS, les bases JavaScript, les frameworks et les bibliothèques, l'expérience du projet, les algorithmes et les structures de données, l'optimisation des performances, les requêtes inter-domaines, l'ingénierie front-end, les modèles de conception et les nouvelles technologies et tendances. Les questions de l'intervieweur sont conçues pour évaluer les compétences techniques du candidat, son expérience en matière de projet et sa compréhension des tendances du secteur. Par conséquent, les candidats doivent être parfaitement préparés dans ces domaines pour démontrer leurs capacités et leur expertise.

Django est-il front-end ou back-end ? Vérifiez-le! Django est-il front-end ou back-end ? Vérifiez-le! Jan 19, 2024 am 08:37 AM

Django est un framework d'application Web écrit en Python qui met l'accent sur un développement rapide et des méthodes propres. Bien que Django soit un framework Web, pour répondre à la question de savoir si Django est un front-end ou un back-end, vous devez avoir une compréhension approfondie des concepts de front-end et de back-end. Le front-end fait référence à l'interface avec laquelle les utilisateurs interagissent directement, et le back-end fait référence aux programmes côté serveur. Ils interagissent avec les données via le protocole HTTP. Lorsque le front-end et le back-end sont séparés, les programmes front-end et back-end peuvent être développés indépendamment pour mettre en œuvre respectivement la logique métier et les effets interactifs, ainsi que l'échange de données.

Golang peut-il être utilisé comme frontal ? Golang peut-il être utilisé comme frontal ? Jun 06, 2023 am 09:19 AM

Golang peut être utilisé comme frontal. Golang est un langage de programmation très polyvalent qui peut être utilisé pour développer différents types d'applications, y compris des applications frontales. En utilisant Golang pour écrire le front-end, vous pouvez vous débarrasser d'un front-end. série de problèmes causés par des langages tels que JavaScript. Par exemple, des problèmes tels qu'une mauvaise sécurité des types, de faibles performances et un code difficile à maintenir.

Partage d'expérience en développement C# : compétences en développement collaboratif front-end et back-end Partage d'expérience en développement C# : compétences en développement collaboratif front-end et back-end Nov 23, 2023 am 10:13 AM

En tant que développeur C#, notre travail de développement comprend généralement le développement front-end et back-end. À mesure que la technologie se développe et que la complexité des projets augmente, le développement collaboratif du front-end et du back-end est devenu de plus en plus important et complexe. Cet article partagera quelques techniques de développement collaboratif front-end et back-end pour aider les développeurs C# à effectuer leur travail de développement plus efficacement. Après avoir déterminé les spécifications de l’interface, le développement collaboratif du front-end et du back-end est indissociable de l’interaction des interfaces API. Pour assurer le bon déroulement du développement collaboratif front-end et back-end, le plus important est de définir de bonnes spécifications d’interface. La spécification de l'interface implique le nom de l'interface

Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Mar 28, 2024 pm 01:06 PM

En tant que langage de programmation rapide et efficace, le langage Go est très populaire dans le domaine du développement back-end. Cependant, peu de gens associent le langage Go au développement front-end. En fait, l’utilisation du langage Go pour le développement front-end peut non seulement améliorer l’efficacité, mais également ouvrir de nouveaux horizons aux développeurs. Cet article explorera la possibilité d'utiliser le langage Go pour le développement front-end et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce domaine. Dans le développement front-end traditionnel, JavaScript, HTML et CSS sont souvent utilisés pour créer des interfaces utilisateur.

See all articles