Como passar em uma entrevista de PHP: principais perguntas e respostas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Como passar em uma entrevista de PHP: análise das principais perguntas



A entrevista para a posição de desenvolvedor PHP não é apenas um teste de sintaxe, mas também um teste de compreensão de arquitetura, segurança e padrões modernos (PSR). Neste artigo, reunimos 10 perguntas-chave que são mais frequentemente feitas em entrevistas para níveis Junior e Middle. Cada pergunta é acompanhada de uma explicação, exemplo de código e armadilhas típicas.



1. Qual a diferença entre echo e print? E entre print_r e var_dump?

Esta é uma pergunta básica que testa o conhecimento das funções de saída embutidas.

  • echo — é uma construção de linguagem, não retorna valor. Funciona mais rápido que print.
  • print — também é uma construção, mas sempre retorna 1. Pode ser usado em expressões.
  • print_r — exibe informações legíveis por humanos sobre uma variável (arrays, objetos). Retorna uma string se o segundo parâmetro for true.
  • var_dump — exibe o tipo e o valor da variável, incluindo o comprimento da string. Útil para depuração.
<?php$arr = ['a' => 1, 'b' => 2];echo print_r($arr, true); // Retorna uma string, não exibe imediatamentevar_dump($arr);           // array(2) { ["a"]=> int(1) ["b"]=> int(2) }?>


2. O que é carregamento automático de classes e como funciona com o Composer?

O carregamento automático (autoloading) permite que o PHP inclua classes automaticamente na primeira vez que são chamadas, sem a necessidade explícita de require_once.

  • Antigamente, usava-se a função spl_autoload_register().
  • Atualmente, o padrão de facto é o Composer e seu autoloader.
  • O Composer suporta PSR-4 (namespaces) e PSR-0 (obsoleto).
// composer.json{    "autoload": {        "psr-4": {            "App\\\\": "src/"        }    }}

// Após composer dump-autoload// Arquivo src/User.php com namespace App;$user = new \\App\\User(); // Será carregado automaticamente


3. Diferença entre include, require, include_once e require_once

Pergunta sobre a compreensão do trabalho com arquivos externos e tratamento de erros.

  • include — emite um Warning se o arquivo não for encontrado, o script continua a execução.
  • require — emite um Fatal Error, o script é interrompido.
  • *_once — verifica se o arquivo já foi incluído anteriormente e não o inclui novamente.

Armadilha: Usar include em um loop pode causar inclusão repetida e erro de redefinição de funções, se não usar include_once.



4. Como funciona o PDO e por que ele é melhor que as funções mysql_*?

PDO (PHP Data Objects) é uma interface para trabalhar com bancos de dados. É obrigatório para qualquer desenvolvedor PHP moderno.

  • Suporta diferentes SGBDs (MySQL, PostgreSQL, SQLite) — basta alterar o DSN.
  • Utiliza prepared statements, o que protege contra injeção de SQL.
  • Trabalho conveniente com transações e tratamento de erros através de exceções.
<?php$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';$pdo = new PDO($dsn, 'user', 'pass', [    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');$stmt->execute(['email' => $email]);$user = $stmt->fetch(PDO::FETCH_ASSOC);?>


5. O que são métodos mágicos em PHP? Dê exemplos

Métodos mágicos começam com sublinhado duplo (__) e são chamados automaticamente em determinadas ações com o objeto.

  • __construct() — é chamado ao criar um objeto.
  • __get() / __set() — são chamados ao acessar ou definir propriedades inacessíveis.
  • __call() / __callStatic() — são chamados ao invocar métodos inacessíveis.
  • __toString() — permite que uma classe decida como se comportar quando convertida para string.
<?phpclass User {    private $data = [];

public function __get($name) { return $this->data[$name] ?? null; }

public function __set($name, $value) { $this->data[$name] = $value; }

public function __toString() { return $this->data['name'] ?? 'Unknown'; }}

$user = new User();$user->name = 'João';echo $user->name; // Joãoecho $user; // João?>

Blogs

Book Recommendations