Como passar na 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
Here is the translated HTML content in Portuguese (Português), with all HTML tags preserved and only the text content translated. ```html

Como passar em uma entrevista de JavaScript: principais perguntas



A entrevista para a posição de desenvolvedor JavaScript não é apenas uma verificação de sintaxe, mas também um entendimento profundo de como a linguagem funciona. Isso é especialmente verdadeiro para Node.js, onde a assincronicidade e o tratamento de erros ganham destaque. Neste artigo, analisamos as 10 principais perguntas que são mais frequentemente feitas em entrevistas para desenvolvedores Junior e Middle. Cada pergunta é acompanhada por um exemplo de código e uma explicação.



1. O que é closure e onde é aplicado?



Closure é uma função que "lembra" seu escopo léxico mesmo após a função externa ter concluído sua execução. Este é um dos conceitos-chave do JavaScript.



Exemplo:

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

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


Onde é aplicado? Em módulos, fábricas de funções, memoização, manipuladores de eventos e ao trabalhar com closures em loops (por exemplo, em setTimeout).



2. Como funciona o Event Loop no Node.js?



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



Exemplo com microtasks:

console.log('1');

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

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

console.log('4');

// Saída: 1, 4, 3, 2


Por que isso acontece? As microtasks (Promise) são executadas imediatamente após a pilha atual e antes da próxima fase do Event Loop.



3. Diferença entre == e ===



O operador == compara valores com coerção de tipos, enquanto === compara sem coerção (igualdade estrita).



console.log(5 == '5');   // true (coerção de string para número)console.log(5 === '5');  // false (tipos diferentes)console.log(null == undefined); // trueconsole.log(null === undefined); // false


Em entrevistas, é comum pedirem para explicar por que [] == false resulta em true (devido à comparação abstrata com primitivo).



4. O que é herança prototípica?



Em JavaScript, objetos podem herdar propriedades de outros objetos através da cadeia de protótipos. Cada objeto possui uma propriedade interna [[Prototype]], que pode ser acessada via __proto__ ou Object.getPrototypeOf().



Exemplo:

const animal = { eats: true };const rabbit = { jumps: true };

rabbit.__proto__ = animal;

console.log(rabbit.eats); // true (herdado)console.log(rabbit.jumps); // true


A forma moderna é usar Object.create() ou classes (açúcar sintático sobre protótipos).



5. Como funciona o this em JavaScript?



O valor de this é determinado pelo contexto de chamada da função. As regras principais são:

  • No contexto global (no navegador) — window, no Node.js — global.
  • Em um método de objeto — o próprio objeto.
  • Em uma arrow function — this léxico (da função externa).
  • Ao chamar via call/apply/bind — o contexto explicitamente passado.


Exemplo:

const obj = {  name: 'Alice',  greet: function() {    console.log(this.name);  }};

obj.greet(); // Alice

const greet = obj.greet;greet(); // undefined (perda de contexto)

const boundGreet = obj.greet.bind({ name: 'Bob' });boundGreet(); // Bob


6. Promises: encadeamento e tratamento de erros

```

Blogs

Book Recommendations