Preparação para Entrevistas

Perguntas de Entrevista JavaScript com Respostas

20 perguntas mais frequentemente feitas a um desenvolvedor frontend júnior. Respostas em linguagem simples, sem frases de manual decoradas.

❓ 20 perguntas 🎯 Nível: júnior 🔄 Atualizado: 2026

📘 Bases da Linguagem

1. Qual é a diferença entre var, let e const?
var tem function scope e pode "escapar" de um bloco; let e const têm block scope, visíveis só dentro do seu próprio bloco { }. let pode ser reatribuída, const não. Hoje em dia var quase não é usada.
2. Qual é a diferença entre == e ===?
== compara valores com conversão de tipos ("5" == 5 → true), === compara sem conversão, incluindo o tipo ("5" === 5 → false). Na prática, quase sempre se usa ===.
3. Qual é a diferença entre null e undefined?
undefined é o valor padrão quando nada foi atribuído a uma variável. null é um valor que um desenvolvedor atribui deliberadamente, para dizer explicitamente "isso está vazio".
4. Quais tipos de dados existem em JavaScript?
Primitivos: string, number, boolean, undefined, null, symbol, bigint. E um tipo não primitivo — object (que inclui arrays e funções).
5. O que é hoisting?
Um mecanismo pelo qual as declarações de variáveis (var) e funções são movidas para o início do seu escopo antes do código ser executado. let e const também são "içadas", mas caem na "temporal dead zone" — não dá pra acessá-las antes da sua declaração.
6. O que é uma closure?
Uma função que "lembra" variáveis de uma função externa, mesmo depois dela já ter terminado de executar. Um exemplo clássico é uma função contador que guarda seu estado entre chamadas.

🗂️ Arrays e Objetos

7. Qual é a diferença entre map e forEach?
forEach simplesmente percorre um array e não retorna nada. map também percorre um array, mas retorna um novo array com o resultado da função para cada elemento.
8. Como você verifica se uma variável é um array?
Com Array.isArray(valor). O operador typeof retorna "object" para um array, então não serve pra isso.
9. Como você copia um objeto ou um array?
Para uma cópia superficial: o operador spread {...obj} ou [...arr]. Para uma cópia profunda de objetos aninhados, costuma-se usar structuredClone(obj) ou JSON.parse(JSON.stringify(obj)).
10. Como você remove um elemento de um array?
Com splice(index, 1) — muta o array original. Ou com filter, se precisar de um novo array sem mutar o original: arr.filter(item => item !== valor).
11. O que o método reduce faz?
Reduz um array a um único valor, percorrendo cada elemento e acumulando um resultado. É usado frequentemente para somar valores: arr.reduce((sum, n) => sum + n, 0).

🖥️ O DOM e os Eventos

12. Como você seleciona um elemento na página?
O mais comum é document.querySelector(".classe") para um elemento e document.querySelectorAll(".classe") para vários. Também existe getElementById.
13. Qual é a diferença entre addEventListener e onclick?
onclick só permite atribuir um manipulador — um novo substitui o anterior. addEventListener permite adicionar quantos manipuladores quiser ao mesmo evento, e removê-los de forma mais flexível.
14. O que é event bubbling?
Quando um evento ocorre em um elemento aninhado, depois ele "borbulha" para cima através de todos os seus elementos pais. Isso permite usar delegação de eventos: atribuir um único manipulador ao pai em vez de vários aos filhos.
15. Como você impede o comportamento padrão de um evento?
Chamando event.preventDefault() dentro do manipulador — por exemplo, para que um formulário não recarregue a página ao ser enviado.

⏳ Código Assíncrono

16. O que é um Promise?
Um objeto que representa o resultado de uma operação assíncrona — pode estar em um de três estados: pending (pendente), fulfilled (cumprido) ou rejected (rejeitado).
17. Como funcionam async/await?
É "açúcar sintático" sobre os promises: uma função é marcada como async, e dentro dela await "espera" o resultado de um promise sem bloquear o resto do código da página. O código parece e se lê como código síncrono.
18. Qual é a diferença entre setTimeout e setInterval?
setTimeout executa código uma vez depois de um atraso definido. setInterval repete a execução em um intervalo especificado até ser interrompido com clearInterval.

💬 Perguntas Gerais

19. O que é this em JavaScript?
Uma referência ao objeto em cujo contexto uma função é executada. O valor de this depende de como a função foi chamada. Arrow functions não têm seu próprio this — elas pegam do código ao redor.
20. Como você costuma encontrar a causa de um bug no seu código?
Uma boa resposta: leio a mensagem de erro no console, coloco console.log em pontos suspeitos ou uso breakpoints nas DevTools, reduzo o problema a uma linha específica, verifico os valores das variáveis em cada passo.

O que vem depois

Está se preparando para sua primeira entrevista?

O curso de JavaScript cobre não só esses temas, mas problemas práticos reais — depois dele, responder esse tipo de pergunta fica natural, não decorado.