Compartilhamento de tecnologia

Perguntas da entrevista inicial de alta frequência (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Perguntas frequentes em entrevistas front-end JS cobrem muitos aspectos, incluindo sintaxe básica, estruturas de dados e algoritmos, operações DOM, programação assíncrona, modularização, uso de estrutura/biblioteca, etc. A seguir estão algumas perguntas comuns de entrevistas JS de front-end de alta frequência e sua breve análise:

1. Gramática básica

  • Tipos de dados e diferenças de armazenamento :Quais tipos de dados existem em JavaScript? Qual é a diferença em como eles são armazenados na memória? (Como a diferença entre tipos de dados primitivos e tipos de dados de referência)
  • declaração de variávelvarletconst Qual é a diferença? Qual é o seu escopo e ciclo de vida?
  • Operadori++e++iQual é a diferença?breakecontinueComo é diferente quando usado em um loop?

2. Estruturas de dados e algoritmos

  • Operações de matriz : Quais são os métodos comumente usados ​​para matrizes? (comopushpopshiftunshiftspliceslicejoinsortespere)
  • Cópia profunda e cópia superficial :O que são cópia profunda e cópia superficial? Como implementá-los? (Se estiver usandoJSON.parse(JSON.stringify(obj)), operador de spread, recursão e outros métodos)
  • Algoritmo de classificação: Compreender e implementar um algoritmo de classificação (como classificação por bolha, classificação rápida, etc.)

3. Operações DOM

  • Operações DOM comuns: Como realizar operações como selecionar, adicionar, excluir, modificar e verificar elementos DOM?
  • innerHTML e innerText: Quais são as diferenças e cenários aplicáveis ​​entre os dois?
  • Manipulação de eventos :Qual é o modelo de evento em JavaScript? Como implementar proxy de evento?

4. Programação assíncrona

  • Promessa :O que é promessa? Quais são seus três estados?Como usarPromise.allePromise.race
  • Assíncrono/Aguardando : Como usar async/await para lidar com operações assíncronas? Como isso está relacionado ao Promise?
  • Funções de retorno de chamada e loops de eventos: Entender o mecanismo de loop de eventos JavaScript e como funcionam as funções de retorno de chamada?

5. Modularidade

  • ES6 modular: Entenda a sintaxe modular no ES6 (import/export) e quais são suas vantagens?
  • CommonJS e AMD/CMD: Entenda e compare as diferenças e cenários aplicáveis ​​das especificações dos módulos CommonJS, AMD e CMD.

6. Uso de framework/biblioteca

  • React/Vue/Angular: Compreenda e compare as características, vantagens e cenários aplicáveis ​​dessas estruturas/bibliotecas front-end.
  • vida útil: Qual é o ciclo de vida dos componentes em frameworks como React e Vue?
  • Gerenciamento de status: Como usar ferramentas de gerenciamento de estado como Redux ou Vuex no React?

7. Outros problemas de alta frequência

  • Protótipos e cadeias de protótipos: Compreenda os mecanismos de protótipo e cadeia de protótipo em JavaScript e suas funções.
  • esta palavra-chave: Compreendendo JavaScriptthisapontando regras e desempenho em diferentes cenários.
  • Fecho: Compreender o conceito, função e cenários de utilização dos encerramentos.
  • Mecanismo de coleta de lixo: Entenda o mecanismo de coleta de lixo em JavaScript (como método de varredura de marca, método de contagem de referência, etc.).

Exemplos de perguntas e análises

Exemplos de perguntas: Por favor, explique o mecanismo da cadeia de protótipos em JavaScript.

analisar

  • A cadeia de protótipos é um mecanismo para implementar herança em JavaScript.
  • Todo objeto tem um__proto__Propriedades (recomendadas no ES6Object.getPrototypeOf()método), esta propriedade aponta para o método do seu construtorprototypeAtributos.
  • Ao acessar uma propriedade ou método de um objeto, se a propriedade ou método não existir no próprio objeto, ele será pesquisado ao longo de sua cadeia de protótipos até ser encontrado ou atingir o topo da cadeia de protótipos (Object.prototype)。
  • O topo da cadeia de protótipos énull, indicando que não há mais objetos de protótipo para procurar.
  • Através da cadeia de protótipos, o compartilhamento de propriedades e a herança de métodos entre objetos podem ser alcançados.

1. Quais são os tipos de dados em JavaScript? Qual é a diferença entre eles?

responder
Existem 8 tipos de dados em JavaScript, incluindo tipos de dados básicos (tipos primitivos) e tipos de dados de referência (tipos de referência).

  • Tipos de dados básicos
    • Indefinido: Indefinido, o valor quando a variável é declarada, mas não atribuída.
    • Nulo: valor nulo, indicando uma referência de objeto vazia.
    • boleano: Tipo booleano, com apenas dois valores, verdadeiro e falso.
    • Número: Tipos numéricos, incluindo inteiros e números de ponto flutuante.
    • Corda: tipo String, usado para representar dados de texto.
    • Símbolo: tipo de valor exclusivo usado para criar identificadores exclusivos.
    • Grande Int: tipo inteiro grande, usado para representar números inteiros de precisão arbitrária.
  • Tipo de dados de referência
    • Objeto: Tipo de objeto, que é a classe base para todos os tipos de dados complexos em JavaScript, incluindo matrizes (Array), funções (Function), datas (Date), etc.

A principal diferença entre tipos de dados primitivos e tipos de dados de referência é como eles são armazenados e atribuídos. Os valores dos tipos de dados básicos são armazenados na memória da pilha e os valores são copiados diretamente durante a atribuição, enquanto os valores dos tipos de dados de referência são armazenados na memória heap e a memória da pilha armazena referências (ou seja, endereços) aos valores; ​​na memória heap, que são copiados durante a atribuição, são uma referência.

2. Fale sobre escopo e fechamento em JavaScript?

responder

  • Escopo : refere-se ao intervalo válido de identificadores, como variáveis ​​e funções no bloco de código. JavaScript tem principalmente dois escopos: escopo global e escopo local (incluindo escopo de função, escopo em nível de bloco, etc.). As variáveis ​​do escopo global são visíveis em todo o script, enquanto as variáveis ​​do escopo local só podem ser acessadas dentro do bloco de código em que estão definidas.

  • Fecho : significa que uma função lembra e tem acesso ao seu escopo léxico, mesmo que a função seja executada fora do seu escopo léxico. Os principais usos dos encerramentos são encapsular variáveis ​​privadas, criar módulos, etc. Os fechamentos permitem que as funções acessem e manipulem variáveis ​​fora da função, e essas variáveis ​​não são facilmente contaminadas ou alteradas mesmo fora da função.

3. Explique programação assíncrona e Promise em JavaScript?

responder

  • Programação assíncrona : significa que a ordem de execução do código não é baseada na ordem de escrita, mas é determinada com base no cumprimento de certas condições (como solicitações de rede, leitura e gravação de arquivos, etc.). JavaScript é de thread único, mas implementa programação assíncrona por meio de loops de eventos e funções de retorno de chamada.

  • Promessa : é um novo objeto introduzido no ES6, usado para lidar com operações assíncronas. Um objeto Promise representa uma operação que pode não ser concluída agora, mas será concluída (ou falhará) no futuro e seu valor de resultado. A promessa tem três estados: pendente (em andamento), cumprida (bem-sucedida) e rejeitada (falhou). Através do Promise, podemos escrever código assíncrono de forma síncrona, tornando o código mais conciso, fácil de entender e manter.

4. Fala sobre bolha de eventos e captura de eventos em JavaScript?

responder

  • Borbulhamento de eventos : significa que o evento começa no elemento de destino e depois se propaga até o nível superior da árvore DOM (ou seja, o objeto do documento). Durante o processo de bolha do evento, qualquer nível de elementos DOM pode capturar o evento e processá-lo.

  • captura de eventos : ao contrário do evento borbulhante, a captura de eventos começa no topo da árvore DOM e depois se propaga até o elemento de destino. Durante o processo de captura de eventos, qualquer nível de elementos DOM pode capturar o evento e processá-lo.

Em JavaScript, você pode definir o método de processamento de eventos através do terceiro parâmetro do método addEventListener, ou seja, usar bolha de eventos ou captura de eventos. Se o terceiro parâmetro for verdadeiro, significa usar captura de eventos; se for falso ou omitido, significa usar bolha de eventos.

5. Quais novos recursos são introduzidos no ES6+?

responder
Muitos novos recursos foram introduzidos no ES6 (ECMAScript 2015) e versões subsequentes, incluindo, mas não se limitando a:

  • deixe e const: Usado para declarar variáveis ​​locais e constantes de escopo em nível de bloco.
  • função de seta: Fornece uma maneira mais concisa de escrever funções e não vincula seus próprios argumentos, etc.
  • sequência de modelo: permite expressões incorporadas e oferece suporte a strings multilinhas.
  • Atribuição de desestruturação: permite que dados sejam extraídos de um array ou objeto e atribuídos a uma variável declarada.
  • Valores de parâmetros padrão, parâmetros restantes e operadores de spread: Capacidades aprimoradas de processamento de parâmetros de função.
  • Prometo e assíncrono/aguardo: usado para lidar com operações assíncronas, tornando o código assíncrono mais conciso e fácil de entender.
  • Sintaxe de classe: Fornece açúcar sintático para classes mais próximas da programação tradicional orientada a objetos.
  • Módulos: Suporta sintaxe de módulo ES6 e implementa programação modular em JavaScript.