Questions de l'entretien d'embauche Vue 2023

1. CSS

1. Parlez du modèle de boîte CSS

En html, tous les éléments peuvent être vus comme une boîte

Composition de la boîte : contenu du contenu, remplissage de la marge intérieure, bordure de la bordure, marge de la marge extérieure

Type de modèle de boîte :

modèle de boîte standard

marge + bordure + rembourrage + contenu

c'est-à-dire le modèle de boîte

marge + contenu (remplissage + bordure)

Le mode du modèle de boîte de contrôle : box-sizing : content-box (valeur par défaut, modèle de boîte standard), border-box (c'est-à-dire modèle de boîte)

2. Priorité des sélecteurs CSS

Fonctionnalités CSS : héritage, cascade, priorité

priorité:

! important, style en ligne, sélecteur d'identifiant, classe/pseudo-classe/attribut, étiquette, sélecteur global

3. Comment masquer des éléments

affichage : aucun ; ne prend pas de place

opacité : 0 ; occupe de l'espace

visibilité : masqué ; occuper de l'espace

position : absolue ;

coupe par chemin de détourage

4. La différence entre px et rem

px : unité de longueur absolue

rem : unité de longueur relative, par rapport à la valeur font-size du nœud racine de html, 1rem=10px ; font-size : 62,5 % (16px* 62,5 %=10)

5. Quelle est la différence entre redessiner et réarranger ?

Refonte (reflow) : Le moteur de mise en page calculera la position et la taille du modèle de boîte sur la page en fonction du style.

Redessiner : après avoir calculé la position, la taille et les autres attributs du modèle de boîte, le navigateur dessinera en fonction des caractéristiques de chaque modèle de boîte.

Le mécanisme de rendu du navigateur : Après avoir modifié la taille et la position du dom, le navigateur doit recalculer les propriétés géométriques de ces éléments, c'est ce qu'on appelle le réarrangement.

Modifier le style dom, color, bgcolor, lorsque le navigateur n'a pas besoin de calculer l'attribut set, il dessine directement le nouveau style de l'élément, qui s'appelle redessiner

6. Centrer un élément horizontalement et verticalement

positionnement+marge

positionnement + transformation

mise en page flexible

disposition de la grille

disposition du tableau

7. Quels attributs de css peuvent être hérités et lesquels ne peuvent pas

Police d'attribut de police

Hauteur de ligne de la propriété de texte

visibilité des éléments

Propriété de mise en page du tableau border-spacing

attribut de liste style de liste

page d'attributs de style de page

8. Préprocesseur

Le langage de prétraitement ajoute des fonctions telles que des variables, des fonctions et des mixins

moins impertinent

Deux, javascript

1. La composition de js

ECMAScript : noyau js, grammaire de base du langage de description, var, for, etc.

Document Object Model (DOM) : Planifiez une page html comme un document composé d'éléments

Modèle d'objet de navigateur (BOM) : accédez aux fenêtres du navigateur et manipulez-les

2.js objets intégrés

chaîne booléen nombre tableau objet fonction math date regexp

3. Quelles sont les méthodes de manipulation des tableaux

push() pop() sort() splice() unshift() shift() reverse() map()

4. Détection des types de données

typeof() juge le type de données de base

instanceof() juge le type de données de référence

constructeur Types de données de base et types de données de référence, déclarer des constructeurs et pointer vers un tableau

object.prototype.tostring.call() prend en charge tous les types

5. Fermetures, caractéristiques

Fermeture : fonction fonction imbriquée, la fonction interne est renvoyée et enregistrée par la fonction externe

Fonctionnalités : Réutilisation des variables, cette variable ne polluera pas le global, et les variables ne seront pas recyclées par le mécanisme de ramasse-miettes.

Inconvénients : consommation de mémoire, dégradation des performances des pages et fuites de mémoire dans les navigateurs par exemple

Scénarios d'utilisation : anti-shake, throttling, éviter la pollution globale des données

6. Fuites de mémoire frontale

js alloue une adresse mémoire, mais ne parvient pas à la libérer pendant une longue période, ce qui entraîne un plantage.

Facteurs : affectation sans déclaration, temporisateur non effacé, fermeture, élément de référence non clair

7. Délégation événementielle

Principe : mécanisme de propagation des événements, les événements des éléments enfants sont liés aux éléments parents

Empêcher le bouillonnement d'événements event.stopPropagation()

8. La différence entre les types de données de base et les types de données de référence

Types de données de base : chaîne, nombre, booléen, indéfini et nul sont stockés dans la mémoire de la pile et stockent des valeurs spécifiques

Types de données de référence : objet, fonction, tableau sont stockés dans la mémoire de tas et l'adresse est stockée

9. Chaîne prototype

Un prototype est un objet qui partage des méthodes et des propriétés pour les instances du constructeur, et toutes les instances font référence au même objet prototype

Lorsqu'un objet d'instance appelle des propriétés et des méthodes, il recherche à partir de l'instance elle-même, du prototype du constructeur et du prototype du prototype à tour de rôle.

10. Que fait exactement le nouvel opérateur ?

Créez d'abord un objet vide

Liez l'objet vide et le constructeur via la chaîne de prototypes

Liez le this du constructeur à l'objet vide

Selon le type renvoyé par le constructeur, s'il s'agit d'un type valeur, renvoie l'objet, s'il s'agit d'un type référence, renvoie le type référence.

11. Comment js implémente l'héritage

Héritage de la chaîne prototype

emprunter l'héritage du constructeur

héritage compositionnel

héritage de classe de la classe es6

12. Cela pointe vers le problème en js

Ceci dans l'objet global pointe vers la fenêtre

Dans les fonctions ordinaires, cela pointe vers la fenêtre globale

cela pointe toujours vers l'objet qui l'a appelé en dernier (fonction non fléchée)

Le nouveau mot-clé change la direction de cette

appliquer, appeler, lier peut changer la direction de ceci (fonction non fléchée)

La fonction this dans la flèche pointe vers this de sa classe parent

ceci dans la fonction anonyme pointe vers la fenêtre

13. Quelle est la différence entre asynchrone et différé dans le script

Sans asynchrone et différé, le navigateur chargera et exécutera immédiatement le script spécifié

Avec async, de manière asynchrone, le processus de chargement et de rendu des éléments sera effectué en parallèle avec le chargement et l'exécution des scripts

Avec defer, le processus de chargement et de rendu des éléments sera effectué en parallèle avec le chargement des scripts, et tous les éléments seront exécutés après l'analyse

14.setTimeout temps d'exécution minimum

setTimeout:4ms

setInterval:10ms

15. La différence entre ES5 et ES6ECMAScript

ES5 :

ES6 :

16. Nouvelles fonctionnalités de ES6

Ajout de la portée au niveau du bloc (let, const)

Ajouter du sucre syntaxique pour définir les classes (classe)

Type de données de base de symbole ajouté

Ajout d'une affectation de déstructuration

Nouvelle valeur par défaut du paramètre de fonction

Ajout d'une nouvelle API pour les tableaux

Nouvel opérateur de propagation pour les objets et les tableaux

promesse

Plus de modularité (import, export)

Ajout de structures de données d'ensemble et de carte

Ajouter un générateur

Fonctions fléchées ajoutées

17. La différence entre appeler, appliquer et lier

Les deux changent le point this et l'appel de la fonction

Les fonctions d'appel et d'application sont similaires, mais la méthode de transmission des paramètres est différente

Le paramètre d'appel est une liste de paramètres

Le paramètre apply est un tableau

bind ne sera pas exécuté immédiatement après le passage des paramètres, et renverra une fonction qui change le point de ceci, et ne peut pas être utilisé comme constructeur.Cette fonction peut passer des paramètres à bind()()

Les performances de la méthode d'appel sont beaucoup plus faciles à utiliser

18. Quelle est la différence entre une fonction fléchée et une fonction normale ?

Ne peut pas être utilisé comme constructeur, ne peut pas utiliser new

pas d'arguments

Vous ne pouvez pas utiliser call, apply ou bind pour changer la direction de ce

pas de prototype

this pointe vers le this de la première fonction dans la couche externe

19. La différence entre let const var

let const : il n'y a pas de promotion de variable, elle doit être définie avant de pouvoir être utilisée, il y a un problème de zone morte temporaire, il y a un contenu de portée au niveau du bloc et elle ne peut pas être déclarée à plusieurs reprises dans la même portée

var : le levage variable existe

20. Comment mettre en œuvre une copie en profondeur

Copiez complètement un nouvel objet et ouvrez un nouvel espace dans la mémoire de tas

Principalement pour les données de type référence

L'opérateur de propagation {...obj} ne peut atteindre que le premier niveau

json.parse(json.stringify()), ne copiera pas les fonctions internes

Utiliser une fonction récursive pour obtenir

21. Qu'est-ce qu'ajax

Techniques de développement Web pour créer des applications Web interactives

Échangez des données avec le serveur et mettez à jour des parties du contenu sans recharger toute la page

Envoyez une requête asynchrone au serveur via l'objet xmlhttprequest, et après avoir obtenu les données du serveur, exploitez la page en manipulant le dom via js

Créer un objet xmlhttprequest

Établir une connexion avec le serveur via la méthode open() dans l'objet xmh

Construisez les données requises pour la requête et envoyez-les au serveur via send() de xmh

Écoutez l'état de la communication entre le serveur et vous via l'événement onreadystate change de xmh

Accepter et traiter le résultat des données de la réponse du serveur

Mettre à jour les données traitées sur la page html

22. La différence entre obtenir et publier

Le paramètre get sera placé sur l'url, qui est moins sécurisée, et le message est placé dans le corps

get refresh server ou return n'a aucun effet, le message sera resoumis

obtenir les demandes seront mises en cache, la publication ne le sera pas

Les demandes d'obtention seront enregistrées dans l'historique du navigateur, la publication ne le sera pas

get ne peut être encodé que dans une URL, la publication en prend en charge plusieurs

23. Le principe interne et les avantages et inconvénients de la promesse

L'objet Promise encapsule une opération asynchrone et peut également obtenir un résultat de réussite ou d'échec

L'objet Promise résout principalement le problème de l'enfer des rappels. Dans le passé, s'il y avait de nombreuses tâches asynchrones et qu'il y avait des dépendances mutuelles entre elles, elles ne pouvaient être traitées qu'avec des fonctions de rappel. Cela conduirait facilement à l'enfer des rappels, et la lisibilité et la maintenabilité du code était médiocre.

Il y a trois états : état initial en attente, état de réussite rempli, état d'échec rejeté

Principe : construire une instance de promesse. L'instance doit transmettre des paramètres. Ce paramètre a deux paramètres formels, qui sont tous deux des types de fonction, l'un est résoudre et l'autre est rejeter

Il existe également une méthode then sur la promesse, qui est utilisée pour spécifier l'opération définie lorsque l'état change. resolve est d'exécuter la première fonction et rejet est d'exécuter la seconde fonction.

24. La différence entre promesse et attente asynchrone

Les deux gèrent les requêtes asynchrones

la promesse est es6, l'attente asynchrone est es7

L'attente asynchrone est implémentée sur la base de la promesse et n'est pas bloquante

Avantages et inconvénients:

Promise est l'objet de retour, puis les méthodes catch et catch doivent être utilisées pour gérer et intercepter les exceptions, et la méthode d'écriture est chaînée, ce qui est facile à provoquer un chevauchement de code et une mauvaise maintenabilité

L'attente asynchrone est utilisée pour intercepter les exceptions via try catch

L'attente asynchrone peut rendre le code synchrone, tant qu'il rencontre l'attente, il renverra le résultat immédiatement, puis effectuera les opérations suivantes

promise.then() montrera que la requête n'a pas été renvoyée et les opérations suivantes sont effectuées

25. Méthode de stockage du navigateur

Méthode de stockage local standard des cookies, bonne compatibilité, petite capacité de stockage, besoin d'être emballé

localstorage utilise des paires clé-valeur de manière standard, facile à utiliser, stockage permanent, bonne compatibilité, le type de valeur enregistrée est limité et ne peut pas être lu en mode privé

sessionstorage sera nettoyé lorsque la page sera fermée, méthode de stockage au niveau de la session

stockage de paires clé-valeur indexedDB, stockage pratique

26. Où le jeton existe-t-il ?

token : jeton d'authentification

S'il existe dans localdtorage, il doit être passé en arrière-plan en tant que champ chaque fois que l'interface est demandée, ce qui est facile à attaquer par xss

Il existe dans le cookie et sera envoyé automatiquement, mais il ne peut pas être interdomaine 27. Processus de rendu de page

résolution DNS

établir une connexion tcp

envoyer une requête http

Le serveur traite la requête

rendre la page

Le navigateur obtiendra les ressources html et css et analysera le html dans un arbre dom

Ensuite, analysez css en cssom

Fusionner dom et cssom dans l'arborescence de rendu

Rendre chaque nœud de l'arborescence de rendu sur la page

déconnecter la connexion tcp

  1. JWT

le jeton Web json est utilisé comme jeton dans les applications Web sous la forme de json, et les informations peuvent être sorties en toute sécurité sous forme de données json entre les parties

Transfert d'informations, autorisation

  1. L'environnement sous-jacent de npm

Node package manager est un outil de gestion et de distribution de packages pour node

Composants NPM : site Web, registre, outils de ligne de commande

  1. Politique de mise en cache du navigateur

Cache fort (cache local), cache de négociation (cache faible)

Cache fort : n'envoyez pas de requêtes, utilisez directement le contenu du cache, le navigateur stocke js, css, image, etc. dans la mémoire, et le prochain accès utilisateur est directement extrait de la mémoire pour améliorer les performances

Cache faible : vous devez envoyer une requête en arrière-plan, en jugeant d'utiliser ou non le cache de négociation, si le contenu n'a pas changé, renvoyez 304, et le navigateur utilisera le contenu du cache

  1. Qu'est-ce que la politique de même origine

Le cœur du navigateur, sans la politique de même origine, sera soumis à des attaques de réseau

Se réfère principalement au protocole + nom de domaine + numéro de port sont cohérents, si l'un d'eux est différent, ce n'est pas la même source, et un domaine croisé se produira

img, link et script permettent le chargement de ressources entre domaines

Les requêtes inter-domaines peuvent être envoyées, et le backend renverra les résultats normalement, mais les résultats sont interceptés par le navigateur

Résolution inter-domaines : jsonp, cors, websocket, reverse proxy

  1. Qu'est-ce que l'anti-shake et l'étranglement ?

Les deux sont des solutions d'optimisation pour faire face aux événements fréquents sur la page

Anti-shake : évite le déclenchement répété d'événements et n'exécute que la dernière fois dans un certain laps de temps

Throttling : Exécuter une seule fois dans une certaine période de temps

3.HTML/CSS

1. Quelles sont les nouvelles fonctionnalités de html5 et css3

H5 : Balises sémantiques, nouvelles balises audio et vidéo, nouveau canevas, nouveau stockage de données, nouveaux contrôles de formulaire, nouvelle API de glisser-déposer

css3 : nouveaux attributs, pseudo-classes, sélecteurs de pseudo-éléments, nouvelles requêtes multimédias, ombres de texte, bordures, dimensionnement de la boîte du modèle de boîte, dégradés, transitions, animations personnalisées, propriétés d'arrière-plan, 2d et 3d

4. vue

1. La différence entre v-if et v-show

Vous pouvez contrôler le masquage et l'affichage des éléments

v-show est de contrôler la valeur de l'affichage pour afficher et masquer

v-if est la destruction et la création d'éléments dom

2. Comment comprendre mvvm

L'abréviation de model-view-viewmodel est une idée de conception,

model est le modèle de données, utilisé pour définir la modification et le fonctionnement des données

la vue est la vue

viewmodel est le pont reliant la vue et le modèle

Lorsque les données changent, le modèle de vue met automatiquement à jour la vue en surveillant le changement de données. Lorsque l'utilisateur utilise la vue, le modèle de vue peut surveiller le changement de vue et notifier les données du changement.

Le modèle de vue relie la vue et le modèle via une liaison bidirectionnelle, et la synchronisation entre eux est automatique

3. Cycle de vie des composants

créer

beforeCreate : ni la propriété ni la méthode ne peuvent être utilisées

created : une fois l'instance créée, les données peuvent être utilisées et modifiées, mais la page n'est pas rendue

monter

beforemount : le dom virtuel est créé et sera bientôt rendu

monté : monte le modèle compilé sur la page

renouveler

beforeUpdate : utilisé avant la mise à jour du composant, les données sont nouvelles, les données de la page sont anciennes et le composant est sur le point d'être mis à jour

mis à jour : les rendus, les données et les pages sont nouveaux

détruire

beforeDestory : efface les minuteurs et autres opérations

détruit : le composant est détruit

Deux de plus lors de l'utilisation de keep-alive

activé : lorsque le composant est activé

désactivé : lorsque le composant est détruit

4. Quelle est la différence entre créer et monter pour demander des données

créé : appelé avant le rendu, initialisez d'abord les données

monté : appelé après le rendu, les données de la demande peuvent apparaître sur l'écran de démarrage, les données créées ne le seront pas

La donnée demandée a un impact sur dom, l'utilisation créée, n'a rien à voir avec dom, elle peut être placée dans monté

5. Communication des composants Vue

Passage du parent à l'enfant : props, $ref - l'objet d'informations de référence sera enregistré sur l'objet $refs du composant parent

Passer de l'enfant au parent : ¥emit---Le composant enfant lie les événements personnalisés et le composant enfant se lie à recevoir

Biographie de Brother : Le bus d'événements mondial $bus utilise et émet pour la transmission de données

6.keep-alive

Il s'agit d'un composant intégré de Vue. Lors de l'encapsulation des composants, les instances de composants inactifs seront mises en cache

Empêcher le re-rendu, réduire le temps de chargement et la consommation de performances

7. Comment empaqueter axios

Télécharger axios----créer une instance----encapsuler l'intercepteur de requête et de réponse----encapsuler l'interface--utiliser

8. passage du paramètre de routage de vue

params传参:this.$router.push({name:'',params:{}})

this.$route.params.id

Paramètres de passage de propriété d'itinéraire

this.$router.push({name:'/${item.id}'})

Configuration du routage {chemin :'/index :id'}

paramètre de requête

this.$router.push({name:'index',query:{}})

9. Quelle est la différence entre le routage en mode hachage et l'historique

Il y a # sur l'adresse de hachage, mais il n'y a pas d'historique

Lorsque vous appuyez sur Entrée pour actualiser la barre d'adresse, le hachage charge la page correspondante et l'historique signale 404

Hash prend en charge les navigateurs de basse version grâce à la nouvelle API de H5

le hachage ne recharge pas la page

history a des enregistrements historiques, vous pouvez modifier les enregistrements historiques via pushState et replaceState(0), et n'envoyez pas la demande immédiatement

l'historique nécessite une configuration en arrière-plan

10. Interception de route

router.before ach((to,from,next)=>{})

11. Routage dynamique de la vue

Définissez l'attribut méta dans la configuration de routage, développez les champs liés à l'autorisation et jugez l'identifiant d'autorisation dans la protection de navigation de routage pour réaliser une augmentation dynamique et un routage de saut

12. Comment résoudre l'itinéraire de chargement secondaire après l'actualisation

window.location.reload()

matcher

coût routeur=createRouter()

fonction d'exportation resetRouter(){

const nouveauRouter=créerRouter()

router.matcher=nouveauRouter.matcher

}

13. vuex rafraîchir la page de perte de données

Vuex va réacquérir les données

Enregistrer les données dans le cookie de cache du navigateur, le stockage local, la session

Lorsque la page est actualisée, redemandez des données et mettez à jour dynamiquement les données dans vuex

14. La différence entre calcul et montre

calculated : attributs calculés, prise en charge de la mise en cache, puisque la valeur de l'attribut change, l'attribut calculé sera recalculé, sinon le cache est utilisé, l'asynchrone n'est pas pris en charge, le premier chargement sera surveillé et il doit y avoir un retour dans la fonction

watch : surveiller les attributs, surveiller les changements de données dans les données, ne prend pas en charge la mise en cache, prend en charge l'asynchrone, ne surveille pas le premier chargement et n'a pas besoin d'avoir un retour

15.scénarios d'utilisation et attributs de vuex

état : variable de stockage

getters : propriétés calculées de l'état

mutations : la méthode de soumission des données mises à jour, la synchronisation

actions : opérations asynchrones

modules : modulaire vuex

Informations personnelles de l'utilisateur, panier d'achat, etc.

16. Le principe de la liaison bidirectionnelle vue

Grâce au détournement de données combiné au modèle éditeur-abonné, Liyong object.defineProperty() détourne le setter et le getter de chaque propriété, publie un message à l'abonné lorsque les données changent et déclenche le rappel de surveillance correspondant pour rendre la vue

17. diff et dom virtuel

Virtual dom, décrivant la relation entre les éléments et créant un objet js

S'il y a des données de réponse dans le composant, lorsque les données changent, la fonction de rendu générera un nouveau dom virtuel, le nouveau dom virtuel sera comparé à l'ancien dom virtuel, trouvera le contenu du dom virtuel qui doit être modifié, puis aller à la modification réelle correspondante dans dom

diff est utilisé pour la comparaison de dom virtuel, renvoie un objet patch pour stocker la différence entre deux nœuds, et enfin met à jour le dom réel avec les informations d'enregistrement dans le patch

18. La différence entre vue et jquery

Le principe est différent : vue est une liaison de données, et jq obtient d'abord dom pour le traitement

Le focus est différent : vue est piloté par les données, jq se concentre sur les pages

Le fonctionnement est différent

19. Traitement réactif de vuex

Lorsque l'événement est déclenché, la méthode dans l'action sera accessible via la répartition, et la validation dans les actions déclenchera la méthode dans les mutations pour modifier la valeur dans l'état et mettre à jour les données dans la vue via le getter

20. Comment encapsuler les composants

Créer un composant à l'aide de Vue.extend()

Enregistrer les composants à l'aide de la méthode Vue.components()

21. filtre de vue

Expressions d'interpolation, v-bind peut utiliser des filtres

Global : Vue.filter

Local : même niveau que les méthodes, filtre

22. Forcer le rafraîchissement en vue

localtion.reliad()

ceci.$router.go(0)

fournir et injecter

23. vue2 et vue3

Le principe de la liaison de données bidirectionnelle est différent : vue2 utilise defindpropty() et vue3 utilise un proxy.

Fragmentation prise en charge

différentes API

Différentes méthodes de définition des variables de données, vue3---setup

le cycle de vie est différent

différentes valeurs

Les instructions et les créneaux sont différents

main.js est différent

24. Optimisation des performances de Vue

Ne mettez pas toutes les données dans les données

v-for lie les événements à chaque élément avec un proxy d'événement

composant de cache persistant

Différencier au maximum les composants pour améliorer la réutilisabilité

la clé doit être unique

Utilisation raisonnable du chargement paresseux de route

Utilisez autant que possible l'optimisation anti-shake et throttling pour le stockage persistant des données

Chargement à la demande, chargement paresseux de contenu, chargement paresseux d'images

Écran squelette

Optimisation SEO : pré-rendu, rendu côté serveur ssr

Introduire des modules tiers sous la forme de cdn, d'empaquetage multi-thread et d'extraction de fichiers publics

Cache client, cache serveur, compression Gzip du serveur

25. Optimisation du premier écran

Chargement paresseux avec itinéraires

Les composants sous la ligne de flottaison utilisent async

Chargement paresseux de composants sans importance sur le premier écran

Les ressources dynamiques sont placées sur CDN

Réduisez la taille des fichiers de ressources tels que js et css sur le premier écran

Utiliser le rendu côté serveur

Réduire le nombre et le niveau de dom

Utiliser la requête de sprite

faire du menteur

Activer Gzip

Chargement différé des images

26.vue3 est meilleur que vue2

optimisation de l'algorithme diff

boost statique

cache de l'écouteur d'événements

27. Pourquoi vue utilise-t-il un proxy

proxy peut proxy l'objet entier

La méthode de surveillance de l'objet proxy est plus riche

L'objet proxy générera un nouvel objet et ne modifiera pas l'objet lui-même

Non compatible avec le navigateur ie

28. Comment optimiser le référencement

srr - rendu côté serveur

seo - optimiser le moteur de recherche

srr, prerender prerender-spa-plugin

おすすめ

転載: blog.csdn.net/weixin_49662044/article/details/129030748