Como passar em uma entrevista de PHP: principais perguntas — parte 4
A entrevista de PHP não é apenas uma verificação de sintaxe e funções básicas, mas também uma compreensão profunda de arquitetura, segurança, trabalho com bancos de dados e práticas modernas. Nesta quarta parte da série de artigos para o site educacional pythonlib.ru, vamos abordar perguntas complexas que desenvolvedores sênior costumam fazer, e mostrar para PHP para iniciantes e programadores experientes como se preparar para uma entrevista técnica. Se você está estudando programação e quer aprofundar seus conhecimentos, este material será seu aliado confiável no aprendizado.
1. Perguntas sobre trabalho com bancos de dados em PHP
Um dos blocos principais em uma entrevista é a interação com MySQL, PostgreSQL ou outros SGBDs. Os entrevistadores verificam o quanto você entende de PHP no contexto de projetos reais.
1.1. Qual a diferença entre PDO e MySQLi?
Ambas as extensões são usadas para trabalhar com bancos de dados, mas o PDO suporta 12 drivers (MySQL, PostgreSQL, SQLite e outros), enquanto o MySQLi suporta apenas MySQL. O PDO fornece uma interface unificada e uma preparação de consultas mais segura.
// Exemplo PDO$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');$stmt->execute(['email' => $email]);$result = $stmt->fetchAll();1.2. Como prevenir injeções de SQL?
Use prepared statements e escape de dados. Nunca insira variáveis diretamente na string da consulta.
// Perigoso$sql = "SELECT * FROM users WHERE id = $_GET[id]";
// Seguro$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');$stmt->execute(['id' => $_GET['id']]);2. POO e conceitos avançados de PHP
A programação moderna em PHP é impossível sem a abordagem orientada a objetos. Aqui estão perguntas que você precisa responder com confiança.
2.1. O que são traits e quando usá-los?
Traits são um mecanismo de reutilização de código em PHP que permite incluir métodos em classes sem herança. Eles resolvem o problema da herança múltipla.
trait Logger { public function log($message) { echo "[LOG]: $message"; }}
class User { use Logger;}
$user = new User();$user->log('User created');2.2. Qual a diferença entre interface e classe abstrata?
Uma interface define um contrato (métodos sem implementação), enquanto uma classe abstrata pode conter implementação padrão. Uma classe pode implementar várias interfaces, mas herdar apenas uma classe abstrata.
3. Segurança e desempenho
Em entrevistas, frequentemente perguntam sobre vulnerabilidades típicas e otimização. Isso é especialmente importante para PHP para iniciantes, para que já formem hábitos corretos.
3.1. Como se proteger contra ataques XSS?
Use a função htmlspecialchars() para escapar a saída de dados recebidos do usuário.
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');3.2. O que é cache de opcode e para que serve?
PHP é uma linguagem interpretada: cada requisição compila os scripts em opcode. O cache (por exemplo, OPcache) armazena o código compilado na memória, acelerando a execução em 2 a 5 vezes.
4. Tarefas práticas em entrevistas
Para finalizar, apresentamos uma tarefa típica que testa o conhecimento de estruturas de dados e sintaxe do PHP.
4.1. Implementação de uma função para contar a frequência de caracteres
Escreva uma função que retorne um array onde as chaves são os caracteres da string e os valores são o número de suas ocorrências.
function countChars(string $str): array { $result = []; for ($i = 0; $i < strl