P
prepair.app
Começar entrevista →
EnglishУкраїнськаРусскийDeutsch
🐘

Middle PHP BackendPerguntas de entrevista PHP

Middle · 2–4 anos de experiência

Entrevistas de PHP cobrem semântica da linguagem, OOP, Laravel ou Symfony, MySQL, e fundamentos de segurança web. Abaixo estão as perguntas mais comuns com respostas modelo. Middle: compreensão mais profunda, otimização e situações reais de trabalho.

Experimente — sem necessidade de conta
Preparando sua pergunta…

Temas para se preparar

OOP e SOLID em PHP
Laravel / Symfony
MySQL e otimização de queries
Composer e autoloading
Sessões, cookies, segurança
Padrões PSR

7 perguntas de nível Middle com respostas

1

Qual é a diferença entre `has_many through` e `belongsToMany`?

Resposta

Em termos do Laravel, belongsToMany usa uma tabela pivot que existe só para unir dois models. Uma relação has-many-through alcança um model distante através de um intermediário que é uma entidade real por si só. Se a tabela de junção carrega seus próprios dados — um timestamp, um status — ela é um model, e tratá-la como pivot é como esses dados ficam difíceis de alcançar.

2

O que é uma consulta N+1 e como você encontra uma?

Resposta

É uma consulta para uma lista e mais uma por item, porque um relacionamento é carregado de forma lazy dentro de um loop. Você encontra no log de consultas ou com um pacote que conta consultas por request. with() carrega eager numa segunda consulta. A armadilha é corrigir cacheando a página em vez da consulta.

3

O que o service container faz?

Resposta

Resolve as dependências de uma classe por você: você pede um tipo num construtor e o container o constrói, incluindo as próprias dependências desse tipo. Vincular uma interface a uma implementação num provider é o que faz o código depender de um contrato em vez de uma classe concreta, que é o objetivo de todo o exercício.

4

Qual é a diferença entre um middleware e um controller?

Resposta

O middleware envolve o request e decide se continua — autenticação, rate limiting, logging. Um controller trata o request que conseguiu passar. A ordem importa, e colocar a autorização num controller em vez de num middleware significa que todo controller precisa lembrar de fazer isso.

5

Como funcionam as filas, e o que precisa ser verdade sobre um job?

Resposta

O job é serializado para um store, um processo worker o pega e o roda fora de banda. O que precisa ser verdade é que ele pode rodar duas vezes — o worker pode travar depois de fazer o trabalho e antes de confirmá-lo. Qualquer coisa que envie dinheiro ou e-mail precisa de uma guarda, e jobs de longa duração precisam de um timeout menor que a janela de visibilidade.

6

Qual é a diferença entre uma migration e um seeder?

Resposta

Uma migration muda o schema e é versionada para que cada ambiente convirja para a mesma forma. Um seeder insere dados — linhas de referência em produção, dados fake em desenvolvimento. Colocar mudanças de dados dentro de uma migration é comum e tudo bem para dados de referência, mas fazer backfill de uma tabela grande ali trava o deploy.

7

Como você previne SQL injection e XSS?

Resposta

SQL injection se previne com parameter binding, que o query builder e o Eloquent fazem por você — o perigo é DB::raw com input interpolado. XSS se previne escapando na saída, que as {{ }} do Blade fazem e as {!! !!} deliberadamente não fazem. Ambos são sobre não misturar dados numa linguagem no momento errado.

🦎

Só ler as respostas não basta

Numa entrevista de verdade você fala sob pressão. O Cam faz essas mesmas perguntas, avalia cada resposta e mostra exatamente o que melhorar.

Praticar entrevista de Middle PHP Backend →
Grátis · 3 entrevistas por mês

Outros níveis — PHP Backend

Junior PHP BackendSenior PHP BackendTodas as perguntas de PHP Backend

Outras especializações

🔍Middle QA Manual🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🦫Middle Go Backend🟢Middle Node.js Backend💎Middle Ruby on Rails🔷Middle C++🟨Middle JavaScript⚛️Middle React Frontend