P
prepair.app
Пройти интервью →
EnglishУкраїнськаРусскийDeutsch
🐘

Senior PHP BackendВопросы на собеседовании PHP

Senior · 5+ лет опыта

Собеседование PHP охватывает семантику языка, ООП, Laravel или Symfony, MySQL и основы веб-безопасности. Ниже — самые частые вопросы с эталонными ответами. Senior: архитектуру, трейд-оффы, менторство и принятие решений.

Попробовать — без регистрации
Готовим вопрос…

Темы для подготовки

ООП и SOLID в PHP
Laravel / Symfony
MySQL и оптимизация запросов
Composer и автозагрузка
Сессии, куки, безопасность
Стандарты PSR

6 вопросов уровня Senior с ответами

1

Где должна жить бизнес-логика в Laravel-приложении?

Ответ

Не в контроллере и не в модели: первое делает её недостижимой из консольной команды, второе превращает модель в место, куда всё накапливается. Сервисы или action-классы с одной ответственностью, принимающие нужное и возвращающие результат, остаются тестируемыми и вызываются одинаково из контроллера, задачи и команды.

2

Как сделать деплой со сменой схемы без простоя?

Ответ

Этапами, каждый из которых работает с текущим кодом: добавить nullable-колонку, выкатить код, пишущий в обе, залить данные порциями, переключить чтение и удалить старую следующим релизом. Специфичная для PHP ловушка — opcache: деплой, подменяющий файлы под работающим процессом, может отдавать смесь старого и нового, пока кеш не сброшен.

3

Как искать, почему PHP-приложение замедлилось?

Ответ

Профайлером на живом запросе, а не догадками: Xdebug или Blackfire назовут функцию, и ответом обычно оказывается количество запросов, а не сам PHP. Затем проверить очевидное в инфраструктуре: включён ли opcache в проде и не поднимает ли фреймворк больше провайдеров, чем нужно этому запросу.

4

Что кешировать, где и как инвалидировать?

Ответ

Кешировать дорогое и устойчивое: посчитанный отчёт, дерево конфигурации, запрос, результат которого меняется редко. Помечать тегами, чтобы связанная запись чистила группу, а не всё хранилище. Истечение по времени неверно, зато самовосстанавливается, и для большинства читающих данных оно выигрывает у явной инвалидации, которую вы однажды забудете вызвать.

5

Как удержать долгоживущую PHP-кодовую базу обновляемой?

Ответ

Держась ближе к фреймворку, а не оборачивая его собственными абстракциями: каждая обёртка — то, что вы будете поддерживать через все их обновления. Дальше: политика зависимостей, статический анализ на уровне, который реально соблюдается, и обновление по одной минорной версии, чтобы прыжок никогда не становился проектом. Кодовая база, отставшая на два мажора, — это база, которую никто не хочет трогать.

6

Когда фреймворк не нужен?

Ответ

Для маленького сервиса с одной задачей, где стоимость загрузки и поверхность зависимостей не покупают ничего: несколько файлов и роутер честнее. В тот момент, когда нужны авторизация, миграции, очереди и модель прав, написать это самому дороже, чем разобраться в чужом. Опасаться стоит другого решения — фреймворка, взятого под сервис, который до него никогда не дорастёт.

🦎

Прочитать ответы недостаточно

На собеседовании ты говоришь вслух под давлением. Кем задаст эти же вопросы, оценит каждый ответ и покажет, что именно подтянуть.

Пройти интервью Senior PHP Backend →
Бесплатно · 3 интервью в месяц

Другие уровни — PHP Backend

Junior PHP BackendMiddle PHP BackendВсе вопросы PHP Backend

Другие специализации

🔍Senior QA Manual🤖Senior QA AutomationSenior Java Backend🐍Senior Python Backend🦫Senior Go Backend🟢Senior Node.js Backend💎Senior Ruby on Rails🟣Senior .NET Backend Developer🔷Senior C++🟨Senior JavaScript