Como passar em uma entrevista de JavaScript: principais perguntas e respostas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Como passar em uma entrevista de JavaScript: principais perguntas



A entrevista para a posição de desenvolvedor JavaScript (especialmente com foco em Node.js) não é apenas uma verificação de sintaxe. Os empregadores querem ver uma compreensão profunda de assincronicidade, escopos e funcionamento do Event Loop. Neste artigo, reunimos as principais perguntas que realmente são feitas em entrevistas, com exemplos de código e explicações.



1. Closures — a base do JS funcional



Pergunta: "O que é uma closure e como ela funciona no Node.js?"



Uma closure é uma função que "lembra" seu ambiente léxico mesmo após a função externa ter terminado sua execução. Este é um mecanismo chave para encapsulamento de dados em JavaScript.



function createCounter() {  let count = 0;  return function() {    count++;    return count;  };}

const counter = createCounter();console.log(counter()); // 1console.log(counter()); // 2


Por que isso é perguntado: Closures estão na base de módulos, fábricas de funções e manipuladores de eventos no Node.js. Sem entender closures, é impossível trabalhar com callbacks assíncronos.



2. Event Loop e assincronicidade (Async/Await, Promises)



Pergunta: "Explique como funciona o Event Loop. O que este código irá exibir?"



console.log('1');

setTimeout(() => console.log('2'), 0);

Promise.resolve().then(() => console.log('3'));

console.log('4');


Resposta: 1, 4, 3, 2. Primeiro o código síncrono, depois as microtasks (Promise.then), depois as macrotasks (setTimeout).



O Event Loop é o mecanismo que permite ao Node.js executar operações não bloqueantes, apesar de ser single-thread. Ele consiste em várias fases:

  • Timers — executam callbacks de setTimeout/setInterval
  • I/O callbacks — processamento de operações de entrada/saída concluídas
  • Poll — obtenção de novos eventos de I/O
  • Check — execução de setImmediate()
  • Close callbacks — fechamento de conexões


Dica: Na entrevista, mostre compreensão da diferença entre process.nextTick() e setImmediate(). nextTick é executado antes da próxima fase do Event Loop, enquanto setImmediate é executado na fase Check.



3. Contexto de chamada (this) e arrow functions



Pergunta: "A que é igual this em diferentes situações? Como mudar o contexto?"



O valor de this é determinado por como a função é chamada, não onde ela é declarada. No Node.js (modo estrito), em uma função normal, this será undefined, enquanto no navegador será window.



const obj = {  name: 'Node.js',  regularFunc: function() {    console.log(this.name);  },  arrowFunc: () => {    console.log(this.name);  }};

obj.regularFunc(); // 'Node.js'obj.arrowFunc(); // undefined (this é obtido do contexto externo)


Como gerenciar o contexto:

  • call(thisArg, arg1, arg2) — chama a função com o this e argumentos especificados
  • apply(thisArg, [args]) — similar, mas os argumentos são passados como array
  • bind(thisArg) — cria uma nova função com o this vinculado
  • Arrow functions — não têm seu próprio this, usam o contexto léxico


4. Protótipos e herança (Prototype Chain)



Pergunta: "Como funciona a herança prototípica em JavaScript? Qual a diferença das classes?"



JavaScript usa herança prototípica: cada objeto tem uma referência interna [[Prototype]] (acessível via __proto__ ou Object.getPrototypeOf()).



function Animal(name) {  this.name = name;}

Animal

Blogs

Book Recommendations