Как подготовиться к собеседованию по PHP: чек-лист с примерами кода

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Собеседование по PHP: не бойся, а готовься

Собеседование на позицию PHP-разработчика — это не экзамен по билетам, а диалог. Но диалог, в котором от вас ждут не просто «я знаю PHP», а понимания того, как язык работает под капотом. Подготовка к собеседованию по PHP — это не зубрёжка определений, а разбор реальных кейсов.

В этой статье мы не будем перечислять сотню вопросов. Вместо этого я покажу вам шаблон мышления: как отвечать на вопросы, как писать код и на что обратить внимание, чтобы интервьюер сказал «вау». Поехали.

1. Основы PHP: что нужно знать обязательно

Начнём с базы. Даже если вы идёте на Senior, вопросы по основам могут всплыть. Вот три кита, на которых держится собеседование PHP:

  • Типы данных и приведение типов — как работает == vs ===, что такое strict_types.
  • Суперглобальные массивы — $_GET, $_POST, $_SERVER, $_SESSION.
  • Работа с массивами — array_map, array_filter, array_reduce.

Пример вопроса: «Что выведет код?».

<?php
$a = '5';
$b = 5;
var_dump($a == $b);  // bool(true) — нестрогое сравнение
var_dump($a === $b); // bool(false) — строгое сравнение
?>

Помните: собеседование PHP junior часто строится именно на таких ловушках. Не попадитесь.

2. ООП в PHP: не просто «класс и объект»

Вопросы по PHP на интервью всегда включают ООП. Но вместо того, чтобы перечислять три столпа (инкапсуляция, наследование, полиморфизм), покажите, как вы их используете.

Пример: спросят про интерфейсы и абстрактные классы. Не говорите «интерфейс — это контракт». Лучше приведите код:

<?php
interface PaymentGateway {
    public function pay(float $amount): bool;
}

class StripeGateway implements PaymentGateway {
    public function pay(float $amount): bool {
        // логика оплаты через Stripe
        return true;
    }
}

class PayPalGateway implements PaymentGateway {
    public function pay(float $amount): bool {
        // логика оплаты через PayPal
        return true;
    }
}

function processOrder(PaymentGateway $gateway, float $total) {
    if ($gateway->pay($total)) {
        echo "Оплата прошла успешно";
    }
}
?>

Такой ответ показывает, что вы понимаете принцип подстановки Барбары Лисков и умеете проектировать гибкие системы. Это сразу +100 к карме на собеседовании PHP middle.

3. Работа с базами данных: SQL и PDO

Ни одно собеседование PHP не обходится без вопросов по MySQL. Запомните: никогда не используйте mysql_* функции — они удалены из PHP 7. Используйте PDO или mysqli.

Типичная задача: «Напишите безопасный запрос к БД».

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => $email]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
?>

Почему это важно? Потому что SQL-инъекции — классическая ошибка джуниоров. Покажите, что вы знаете про prepared statements.

Ещё один частый вопрос — JOIN'ы. Будьте готовы объяснить разницу между INNER, LEFT, RIGHT и FULL JOIN. И обязательно приведите пример, когда какой использовать.

4. Типичные задачи на собеседовании PHP

Задачи PHP — это не только теория. Вам могут дать live coding. Вот три типа задач, которые часто встречаются:

4.1. Задача на массивы

«Напишите функцию, которая группирует массив объектов по ключу».

<?php
function groupBy(array $items, string $key): array {
    $result = [];
    foreach ($items as $item) {
        $result[$item[$key]][] = $item;
    }
    return $result;
}

$users = [
    ['name' => 'Анна', 'city' => 'Москва'],
    ['name' => 'Иван', 'city' => 'СПб'],
    ['name' => 'Мария', 'city' => 'Москва'],
];
print_r(groupBy($users, 'city'));
?>

Такая задача проверяет не только знание синтаксиса, но и умение писать читаемый код.

4.2. Задача на строки

«Проверьте, является ли строка палиндромом».

<?php
function isPalindrome(string $str): bool {
    $str = strtolower(preg_replace('/[^a-zа-яё0-9]/u', '', $str));
    return $str === strrev($str);
}
?>

Здесь важно показать, что вы учитываете Unicode (русские буквы) и очищаете строку от мусора.

4.3. Задача на рекурсию

«Напишите функцию для обхода дерева категорий».

<?php
function printCategories(array $categories, int $depth = 0) {
    foreach ($categories as $category) {
        echo str_repeat('--', $depth) . $category['name'] . "\n";
        if (!empty($category['children'])) {
            printCategories($category['children'], $depth + 1);
        }
    }
}
?>

Подготовка к собеседованию PHP должна включать практику таких задач. Решайте по 2-3 в день на LeetCode или Codewars.

5. Фреймворки: Laravel или Symfony?

На собеседовании PHP разработчик вас обязательно спросят про фреймворки. Если в вакансии указан Laravel — будьте готовы рассказать про:

  • Service Container и Service Provider
  • Eloquent ORM (ленивая и жадная загрузка, N+1 проблема)
  • Middleware и роутинг

Пример вопроса: «Как исправить проблему N+1 в Laravel?».

<?php
// Плохо: N+1 запросов
$posts = Post::all();
foreach ($posts as $post) {
    echo $post->author->name;
}

// Хорошо: 2 запроса
$posts = Post::with('author')->get();
foreach ($posts as $post) {
    echo $post->author->name;
}
?>

Если используете Symfony — акцент на Dependency Injection, Event Dispatcher и Doctrine. Покажите, что вы понимаете, как

Блоги

Рекомендаций по книгам