Pular para o conteúdo
Hireaan

20 perguntas · PHP / Laravel

Perguntas de entrevista para Desenvolvedor PHP / Laravel

Perguntas sobre Eloquent e consultas N+1, filas, middlewares, service container, testes e segurança. Servem para separar quem gera um CRUD de quem mantém um código Laravel rápido e limpo enquanto ele cresce.

O Laravel facilita muito construir algo que funciona, e é justamente por isso que entrevistar bem para ele exige cuidado. Quase qualquer candidato gera um controller e um model. Quem vale a contratação entende o que o framework faz por ele e onde as conveniências viram armadilha.

O exemplo clássico é a consulta N+1: quem percorre uma coleção e carrega um relacionamento de forma preguiçosa dentro do loop escreveu um código que passa em todos os testes e depois derruba o banco em produção. Por isso o sinal mais valioso é a pessoa raciocinar sobre as consultas que o Eloquent gera, saber quando usar eager loading e distinguir código elegante de código eficiente.

Além do ORM, você quer confirmar que ela entende o que deixa uma aplicação Laravel sustentável: como o service container resolve dependências, como os middlewares moldam o ciclo da requisição, quando levar trabalho lento para um job na fila e como testar o resultado. Segurança também conta: mass assignment, validação, autorização e desconfiança de tudo que vem do usuário são os pontos onde código descuidado vaza. Ouça quem fala da consulta que uma linha de código executa, quem usa jobs e eventos para manter os controllers enxutos e quem explica um trade-off em vez de só citar um recurso.

Eloquent e banco de dados6 perguntas

  1. O que é o problema de consultas N+1? Mostre como ele acontece no Eloquent e como você corrigiria.

    O que observar: Um relacionamento acessado dentro de um loop gerando uma consulta por item, corrigido com with() ou load(). Citar preventLazyLoading() mostra experiência.

  2. Quando você usa eager loading e quando usa lazy loading, e como detecta um problema de consulta antes de tudo?

    O que observar: Ferramentas como Debugbar, Telescope ou log de queries, e a noção de que eager loading de relacionamentos que não serão usados também desperdiça.

  3. Explique a diferença entre os relacionamentos hasMany, belongsTo e belongsToMany com um exemplo real.

    O que observar: Onde fica a chave estrangeira em cada caso, a tabela pivô no belongsToMany e um exemplo coerente de domínio.

  4. Quando você desceria para o query builder ou para SQL puro em vez de usar o Eloquent?

    O que observar: Relatórios, agregações pesadas e operações em lote, onde hidratar models custa caro, sem abrir mão de bindings para evitar injeção.

  5. Como migrations e seeders entram no seu fluxo de trabalho, e como você faz uma mudança de schema com segurança em produção?

    O que observar: Migrations versionadas e reversíveis, cuidado com tabelas grandes e locks, e mudanças em etapas (adicionar, migrar dados, remover) para não quebrar o deploy.

  6. Qual é a diferença entre uma Collection e uma consulta, e por que chamar all() e filtrar no PHP às vezes prejudica?

    O que observar: Que all() traz a tabela inteira para a memória, enquanto where() filtra no banco. Quem confunde os dois cria lentidão e estouro de memória.

Funcionamento interno do framework5 perguntas

  1. O que é o service container, e o que a injeção de dependência oferece no Laravel?

    O que observar: Resolução automática de dependências pelo tipo, facilidade para trocar implementações e para testar com mocks ou fakes.

  2. Quando você registraria algo no container, e qual é a diferença entre bind e singleton?

    O que observar: Registrar interfaces ligadas a implementações ou objetos com configuração, com bind criando uma instância nova a cada resolução e singleton reaproveitando a mesma.

  3. Me explique o ciclo de vida de uma requisição e onde os middlewares entram.

    O que observar: Do index.php ao kernel, providers, middlewares globais e de rota, controller e resposta voltando pelos middlewares.

  4. Como funcionam os service providers, e quando você criaria um?

    O que observar: A diferença entre register e boot, e criar um provider para registrar bindings, observers ou configurações de um módulo.

  5. Para que servem eventos e listeners, e quando você evitaria usá-los?

    O que observar: Desacoplar efeitos colaterais (e-mail, log, integração), mas evitar quando eles escondem o fluxo principal e dificultam entender o que acontece.

Filas, jobs e desempenho4 perguntas

  1. Quando você levaria um trabalho para um job na fila em vez de fazê-lo durante a requisição?

    O que observar: Envio de e-mails, chamadas a APIs externas, geração de arquivos e processamentos longos, mantendo a resposta rápida para o usuário.

  2. Como você lida com um job que falha: tentativas, backoff e failed jobs?

    O que observar: Configurar tries e backoff, tornar o job idempotente, tratar o método failed() e monitorar a tabela de failed jobs ou o Horizon.

  3. Como você encontraria e corrigiria um endpoint Laravel lento?

    O que observar: Medir antes de mexer: contagem e tempo de consultas, índices, N+1, cache e trabalho síncrono que poderia ir para a fila.

  4. Como o cache entra numa aplicação Laravel, e o que você colocaria ou não em cache?

    O que observar: Cache de consultas caras e dados que mudam pouco, com estratégia de invalidação clara, e evitar cache de dados por usuário sem chave adequada.

Testes e segurança5 perguntas

  1. Como você decide o que cobrir com feature test e o que cobrir com unit test no Laravel?

    O que observar: Feature tests para fluxos HTTP com banco e unit tests para regras isoladas, com uso de factories, RefreshDatabase e fakes para fila e e-mail.

  2. Como o Laravel protege contra SQL injection, mass assignment e CSRF, e onde um desenvolvedor ainda pode errar?

    O que observar: Bindings, $fillable ou $guarded e token CSRF, e os furos comuns: DB::raw com dados do usuário, $guarded vazio e rotas sem a proteção certa.

  3. Como você trata validação e autorização, e qual é a diferença entre um gate e uma policy?

    O que observar: Form Requests para validar, gates para regras pontuais e policies para regras ligadas a um model, sempre checadas no servidor.

  4. Me conte sobre um bug ou problema de desempenho em Laravel que você resolveu em produção. Qual era a causa raiz?

    O que observar: Uma história concreta com investigação, causa e correção, de preferência com algo que impediu a repetição.

  5. Um colega coloca uma regra de negócio pesada direto no controller. Como você trata isso no code review?

    O que observar: Sugerir extrair para uma action, service ou job com argumentos de teste e manutenção, sem impor dogma de arquitetura.

Dicas para a entrevista de Desenvolvedor PHP / Laravel

  • Comece pela pergunta de N+1. A forma como o candidato lida com ela prevê a competência em Laravel melhor do que quase qualquer outra.
  • Valorize quem pensa no SQL que uma linha de Eloquent gera, e não só se ela funciona.
  • Aprofunde filas e jobs. Saber quando adiar trabalho é sinal de quem já rodou Laravel em escala.
  • Pergunte como a pessoa testa. Um bom desenvolvedor Laravel escreve feature tests por hábito, não no fim.
  • Confira os instintos de segurança sobre mass assignment, validação e autorização. Código descuidado vaza exatamente aí.

FAQ

Perguntas frequentes

Quantas perguntas de Laravel fazer numa entrevista?

De seis a oito num horário de 45 a 60 minutos. Aprofundar N+1, o service container e um tema de testes ou segurança rende mais do que correr por vinte definições rasas.

Devo avaliar PHP puro além de Laravel?

Um pouco. Confirme a familiaridade com PHP moderno (tipos, interfaces, orientação a objetos básica), mas a maior parte do sinal deve vir de como a pessoa raciocina sobre o Laravel e a camada de banco.

Vale aplicar um desafio para casa ou exercício ao vivo para vagas de Laravel?

Vale. Uma funcionalidade pequena com teste, ou corrigir um N+1 num repositório de exemplo, revela os hábitos reais. Combine com as perguntas de discussão para avaliar julgamento, e não só o resultado.

O que diferencia uma resposta júnior de uma sênior em Laravel?

O júnior entrega um CRUD que funciona. O sênior raciocina sobre as consultas geradas, leva trabalho lento para a fila, mantém os controllers enxutos, escreve testes e cita problemas de produção que resolveu.

Como fazer a triagem de candidatos Laravel antes da entrevista?

Use um teste de habilidades curto ou perguntas de triagem na candidatura para filtrar quem entende de Eloquent e do framework antes de gastar tempo de entrevista. Na Hireaan, os testes são corrigidos pela IA e os candidatos aparecem ranqueados por aderência à vaga.

Abriu a vaga de Desenvolvedor PHP / Laravel? Rode o processo na Hireaan.

A IA ranqueia os candidatos, você agenda as entrevistas, aplica testes de habilidades e envia a proposta, com um preço fixo para o time inteiro.

  • 14 dias grátis
  • Sem cartão de crédito
  • Cancele quando quiser
  • Conforme a LGPD