dezembro 21, 2025
8 min de leitura

Perguntas de entrevista para desenvolvedor full stack júnior

interview
career-advice
job-search
entry-level
Perguntas de entrevista para desenvolvedor full stack júnior
Milad Bonakdar

Milad Bonakdar

Autor

Prepare-se para entrevistas full stack júnior com perguntas práticas sobre HTML, CSS, JavaScript, React, Node.js, APIs, SQL, Git e depuração.


Comece pelos fundamentos full stack

Uma entrevista para full stack júnior costuma verificar se você consegue explicar como uma aplicação web simples funciona do navegador até o banco de dados: HTML e CSS estruturam a página, JavaScript adiciona comportamento, React gerencia o estado da interface, Node.js executa a lógica do servidor, APIs conectam as camadas, SQL armazena dados e Git mantém o trabalho revisável.

Use este guia para praticar primeiro respostas curtas e claras. Depois, conecte cada resposta a um projeto pequeno que você construiu. Em nível júnior, raramente esperam arquitetura avançada, mas esperam fundamentos claros, bons hábitos de depuração e explicações honestas sobre trade-offs.

Como se preparar

  • Saiba explicar um projeto desde um evento de UI até uma chamada de API e uma consulta no banco.
  • Fale sobre bugs que você corrigiu, não apenas sobre funcionalidades entregues.
  • Mantenha as respostas práticas: defina o conceito, dê um exemplo pequeno e cite um erro comum.

HTML & CSS

1. Explique o Box Model em CSS.

Resposta: O Box Model CSS é a base do layout na web. Cada elemento é representado como uma caixa retangular.

  • Conteúdo: O texto ou imagem real.
  • Padding: Área transparente ao redor do conteúdo (dentro da borda).
  • Border: Uma borda que circunda o padding e o conteúdo.
  • Margin: Área transparente fora da borda (cria espaço entre os elementos).

Frequência: Muito Comum Dificuldade: Fácil


2. Qual é a diferença entre display: block, inline e inline-block?

Resposta:

  • Block: Começa em uma nova linha e ocupa toda a largura disponível (por exemplo, <div>, <p>).
  • Inline: Não começa em uma nova linha e ocupa apenas a largura necessária. As propriedades width e height não têm efeito (por exemplo, <span>, <a>).
  • Inline-block: Semelhante aos elementos inline, mas você pode definir width e height. Útil para grids ou menus de navegação.

Frequência: Comum Dificuldade: Fácil


3. O que é HTML Semântico e por que é importante?

Resposta: HTML Semântico significa usar tags que transmitem o significado do conteúdo, não apenas sua aparência.

  • Exemplos: <header>, <nav>, <article>, <footer> em vez de apenas <div>s.
  • Importância:
    • Acessibilidade: Leitores de tela usam essas tags para ajudar usuários com deficiência visual a navegar.
    • SEO: Mecanismos de busca entendem melhor a estrutura e a importância do conteúdo.
    • Legibilidade: O código é mais fácil para os desenvolvedores entenderem.

Frequência: Comum Dificuldade: Fácil


4. Explique Flexbox vs. CSS Grid.

Resposta:

  • Flexbox: Um modelo de layout unidimensional (linha OU coluna). Melhor para alinhar itens dentro de um contêiner ou distribuir espaço (por exemplo, uma barra de navegação).
  • CSS Grid: Um modelo de layout bidimensional (linhas E colunas). Melhor para definir o layout geral de uma página (por exemplo, cabeçalho, barra lateral, conteúdo principal, rodapé).

Frequência: Comum Dificuldade: Média


JavaScript

5. Qual é a diferença entre var, let e const?

Resposta:

  • var: Escopo de função (ou escopo global). Pode ser redeclarada e atualizada. Elevada (hoisted) para o topo de seu escopo.
  • let: Escopo de bloco (só existe dentro de {}). Pode ser atualizada, mas não redeclarada no mesmo escopo.
  • const: Escopo de bloco. Não pode ser atualizada ou redeclarada. Deve ser inicializada durante a declaração. Use esta por padrão, a menos que precise reatribuir.

Frequência: Muito Comum Dificuldade: Fácil


6. Explique async e await.

Resposta: async e await (introduzidos no ES2017) fazem com que o código assíncrono pareça e se comporte mais como código síncrono.

  • async: Colocado antes de uma função, garante que a função retorne uma Promise.
  • await: Usado dentro de uma função async, pausa a execução até que a Promise seja resolvida.
  • Benefício: Mais limpo e legível do que encadear .then() e .catch().

Frequência: Comum Dificuldade: Média


7. O que é o DOM?

Resposta: O DOM (Document Object Model) é uma interface de programação para documentos web. Ele representa a página para que os programas (JavaScript) possam alterar a estrutura, o estilo e o conteúdo do documento. O DOM representa o documento como nós e objetos.

Frequência: Comum Dificuldade: Fácil


8. Qual é a diferença entre == e ===?

Resposta:

  • == (Igualdade Solta): Compara valores após fazer coerção de tipo (convertendo-os para um tipo comum). Por exemplo, 5 == "5" é true.
  • === (Igualdade Estrita): Compara tanto o valor quanto o tipo. Sem coerção de tipo. Por exemplo, 5 === "5" é false.
  • Melhor Prática: Sempre use === para evitar bugs inesperados.

Frequência: Comum Dificuldade: Fácil


React

9. O que é o Virtual DOM?

Resposta: O Virtual DOM é uma cópia leve do DOM real mantida na memória.

  • Processo: Quando o estado muda, o React atualiza o Virtual DOM primeiro. Em seguida, compara o novo Virtual DOM com o anterior (diffing) e calcula a maneira mais eficiente de atualizar o DOM real (reconciliação).
  • Benefício: Minimiza a manipulação direta do lento DOM real, melhorando o desempenho.

Frequência: Comum Dificuldade: Média


10. O que são Props e State?

Resposta:

  • Props (Properties - Propriedades): Dados somente leitura passados de um componente pai para um componente filho. Permitem que os componentes sejam reutilizáveis e dinâmicos.
  • State (Estado): Dados gerenciados dentro do componente. Pode mudar ao longo do tempo (por exemplo, entrada do usuário, resposta da API). Quando o estado muda, o componente é renderizado novamente.

Frequência: Muito Comum Dificuldade: Fácil


11. O que são React Hooks? Cite alguns comuns.

Resposta: Hooks são funções que permitem que componentes funcionais usem recursos do React como estado, contexto, refs e efeitos.

  • useState: Guarda estado local do componente, como valor de formulário ou aba selecionada.
  • useEffect: Sincroniza um componente com algo fora do React, como busca de dados ou inscrição em evento. Não deve ser usado para qualquer cálculo.
  • useContext: Lê um contexto compartilhado sem passar props manualmente por todos os níveis.
  • Dica de entrevista: Mencione as Rules of Hooks: chame hooks no nível superior de um componente React ou custom hook, não dentro de loops ou condições.

Frequência: Comum Dificuldade: Média


Node.js & Backend

12. O que é Node.js e por que ele é single-threaded?

Resposta: Node.js é um runtime JavaScript construído sobre o motor V8. Ele executa JavaScript em uma thread principal, mas consegue lidar com muitas tarefas de I/O porque o event loop coordena o trabalho assíncrono.

  • Thread principal: Executa seus callbacks JavaScript.
  • I/O não bloqueante: Operações de arquivo, rede e banco de dados podem ser delegadas ao sistema operacional ou à libuv e retomadas quando o resultado estiver pronto.
  • Limite importante: JavaScript pesado em CPU ainda pode bloquear o event loop. Para trabalho caro, use worker threads, fila de jobs ou tire isso do caminho da requisição.
  • Bom exemplo: Um servidor de API que espera muitas chamadas de banco ou rede.

Frequência: Comum Dificuldade: Média


13. O que é NPM e package.json?

Resposta:

  • NPM (Node Package Manager): O gerenciador de pacotes padrão para Node.js. Permite instalar e gerenciar bibliotecas (dependências).
  • package.json: O arquivo de manifesto para um projeto Node.js. Lista metadados (nome, versão) e dependências (bibliotecas necessárias para executar o aplicativo).

Frequência: Comum Dificuldade: Fácil


14. Explique a diferença entre GET e POST.

Resposta:

  • GET: Recupera um recurso. Deve ser seguro, ou seja, não alterar intencionalmente o estado do servidor, e idempotente, de modo que repetir a mesma requisição tenha o mesmo efeito.
  • POST: Envia dados para o servidor processar, geralmente para criar um recurso ou disparar uma ação. Não há garantia de idempotência, então repetir um POST pode criar trabalho duplicado se a API não se proteger.
  • Exemplo prático: Use GET para carregar uma lista de produtos; use POST para enviar um pedido ou criar um comentário.

Frequência: Comum Dificuldade: Fácil


Banco de Dados (SQL)

15. O que é uma Primary Key e uma Foreign Key?

Resposta:

  • Primary Key (Chave Primária): Uma coluna (ou conjunto de colunas) que identifica exclusivamente cada linha em uma tabela. Não pode ser NULL.
  • Foreign Key (Chave Estrangeira): Uma coluna que se liga à Primary Key de outra tabela. Estabelece uma relação entre duas tabelas.

Frequência: Comum Dificuldade: Fácil


16. Explique a diferença entre INNER JOIN e LEFT JOIN.

Resposta:

  • INNER JOIN: Retorna registros que têm valores correspondentes em ambas as tabelas.
  • LEFT JOIN (ou LEFT OUTER JOIN): Retorna todos os registros da tabela da esquerda e os registros correspondentes da tabela da direita. Se não houver correspondência, o resultado é NULL no lado direito.

Frequência: Muito Comum Dificuldade: Média


17. O que é Normalização?

Resposta: Normalização é o processo de organizar os dados em um banco de dados para reduzir a redundância e melhorar a integridade dos dados.

  • Objetivo: Dividir tabelas maiores em tabelas menores e vinculá-las usando relacionamentos.
  • Formas: 1NF, 2NF, 3NF (A Terceira Forma Normal geralmente é suficiente para a maioria das aplicações).

Frequência: Incomum (para Juniores) Dificuldade: Média


Geral

18. O que é Git e por que o usamos?

Resposta: Git é um sistema de controle de versão distribuído.

  • Uso: Ele rastreia as mudanças no código-fonte durante o desenvolvimento de software.
  • Benefícios: Permite que vários desenvolvedores trabalhem juntos (colaboração), mantém um histórico de mudanças (versionamento) e permite reverter para estados anteriores se algo quebrar.

Frequência: Comum Dificuldade: Fácil


19. O que é uma API?

Resposta: API significa Application Programming Interface (Interface de Programação de Aplicações). É um conjunto de regras que permite que diferentes aplicações de software se comuniquem entre si. No desenvolvimento web, geralmente se refere a uma API REST onde um frontend (Cliente) solicita dados de um backend (Servidor).

Frequência: Comum Dificuldade: Fácil


20. Como você depura uma aplicação web?

Resposta: Comece reproduzindo o problema e reduzindo o escopo: navegador, requisição de rede, handler do backend ou banco de dados.

  • Frontend: Use DevTools do navegador: Console para erros, Network para status e payloads de API, Elements para HTML/CSS e React DevTools quando fizer sentido.
  • Backend: Verifique logs estruturados, IDs de requisição, stack traces, variáveis de ambiente e consultas ao banco. Use um depurador quando o fluxo não estiver claro.
  • Boa resposta: Explique um bug real que você corrigiu, o que verificou primeiro e como confirmou a correção.

Frequência: Comum Dificuldade: Fácil

Newsletter subscription

Dicas de carreira semanais que realmente funcionam

Receba as últimas ideias diretamente na sua caixa de entrada

Destaque-se para Recrutadores e Conquiste o Emprego dos Seus Sonhos

Junte-se a milhares que transformaram suas carreiras com currículos impulsionados por IA que passam no ATS e impressionam gerentes de contratação.

Comece a criar agora

Compartilhar esta publicação

Reduza o Tempo de Escrita do Currículo em 90%

O candidato a emprego médio gasta mais de 3 horas formatando um currículo. Nossa IA faz isso em menos de 15 minutos, levando você à fase de candidatura 12 vezes mais rápido.