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

Perguntas de entrevista PHP

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.

Junior · sem experiência / menos de 1 anoMiddle · 2–4 anos de experiênciaSenior · 5+ anos de experiência

O que perguntam

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

10 perguntas reais com respostas

Cada pergunta vem com uma resposta modelo para você comparar com a sua.

1

Qual é a diferença entre == e === no PHP?

Resposta

== compara valores depois do type juggling, enquanto === também exige que os tipos coincidam. A comparação frouxa produz surpresas famosas: "abc" == 0 era true antes do PHP 8, e "1e2" == "100" continua sendo true porque ambos parecem numéricos. A regra em código de produção é sempre usar === a menos que você tenha um motivo específico para não fazer isso.

2

O que são traits? Em que se diferenciam de herança e interfaces?

Resposta

Um trait é um bloco de métodos e propriedades que pode ser composto dentro de uma classe, contornando a herança simples do PHP. Uma interface declara um contrato sem implementação; a herança dá uma relação is-a com um único pai; um trait dá implementação reutilizável sem relação de tipo. Conflitos entre traits precisam ser resolvidos explicitamente com insteadof ou as.

3

Explique os princípios SOLID com exemplos em PHP.

Resposta

Single Responsibility: uma classe tem um único motivo para mudar, então um controller não deveria também gerar PDFs. Open/Closed: você estende comportamento através de novas classes em vez de editar as existentes. Liskov: uma subclasse deve poder ser usada em qualquer lugar onde o pai é usado. Interface Segregation: várias interfaces pequenas superam uma gorda. Dependency Inversion: depender de interfaces injetadas no construtor, não de classes concretas criadas com new.

4

O que é o Dependency Injection Container no Laravel e como funciona?

Resposta

O container resolve as dependências das classes automaticamente refletindo os type hints do construtor e instanciando recursivamente o que for necessário. Você vincula interfaces a implementações concretas num service provider, então trocar uma implementação é uma mudança de uma linha só. Bindings singleton compartilham uma instância por ciclo de vida do request, o que importa para serviços com estado, como um connection pool.

5

Como você se protege contra SQL injection? O que são prepared statements?

Resposta

Um prepared statement envia a estrutura SQL e os parâmetros separadamente, então o input do usuário nunca é interpretado como SQL e erros de aspas não conseguem virar uma injeção. Em PHP isso significa PDO ou mysqli com parâmetros vinculados, ou um ORM que faz isso por você. Concatenar strings numa query é a vulnerabilidade; funções de escape são um substituto frágil porque dependem do charset e do contexto.

6

O que é o Eloquent ORM? Explique o problema N+1 e como resolvê-lo.

Resposta

Eloquent é o ORM active-record do Laravel, onde cada model mapeia para uma tabela e os relacionamentos são definidos como métodos. O N+1 acontece quando você faz loop sobre models e acessa um relacionamento, disparando uma consulta por linha. A solução é eager loading com with(), e você consegue pegar isso no desenvolvimento habilitando Model::preventLazyLoading() para que um acesso lazy lance um erro em vez de degradar silenciosamente.

7

O que é middleware no Laravel? Dê um exemplo de uso.

Resposta

O middleware envolve o pipeline do request HTTP, permitindo que você rode código antes ou depois do controller — autenticação, rate limiting, headers CORS, logging. Cada middleware recebe o request e um closure $next, decide se passa adiante, e pode modificar a resposta ao retornar. Como ele se compõe, as preocupações transversais ficam fora dos controllers.

8

Como funciona o autoloading de classes via Composer e PSR-4?

Resposta

O PSR-4 mapeia um prefixo de namespace para um diretório, então App\Services\Mailer resolve para src/Services/Mailer.php. O Composer gera um autoloader a partir do mapping no composer.json e o registra com spl_autoload_register, então as classes carregam no primeiro uso em vez de serem incluídas manualmente. Em produção você roda composer dump-autoload --optimize para construir um mapa de classes estático e pular as buscas no filesystem.

9

O que são XSS e CSRF? Como você protege uma aplicação PHP?

Resposta

XSS injeta script executável numa página — previne-se escapando toda a saída com htmlspecialchars ou as chaves duplas do Blade, mais uma Content Security Policy. CSRF engana um navegador autenticado para enviar um request que o usuário não pretendia — previne-se com um token por sessão em todo formulário que muda estado e cookies SameSite. A distinção chave é que XSS abusa da confiança no site, CSRF abusa da confiança do site no navegador.

10

Qual é a diferença entre include, require, include_once e require_once?

Resposta

include emite um warning e continua se o arquivo estiver faltando; require lança um erro fatal e para. As variantes _once rastreiam arquivos já carregados e pulam duplicatas, o que evita erros de redeclaração. No código moderno as quatro são majoritariamente irrelevantes porque o autoloading do Composer cuida do carregamento de classes, e os includes explícitos sobram só para arquivos de config ou templates.

🦎

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 PHP Backend →
Grátis · 3 entrevistas por mês

Vale a pena ler

Todos os artigos →

Outras especializações

🔍QA Manual🤖QA AutomationJava Backend🐍Python Backend🦫Go Backend🟢Node.js Backend💎Ruby on Rails🔷C++🟨JavaScript⚛️React Frontend💚Vue Frontend🅰️Angular FrontendNext.js🍏iOS (Swift)🟩Android (Kotlin)⚙️DevOps / SRE🗄️Data Engineer📈Business Analyst🎯Product Manager📋Project Manager🎨UI/UX Designer📣Marketing