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

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

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

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

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

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

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

1

Что такое Dependency Injection Container в Laravel и как он работает?

Ответ

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

2

Как защититься от SQL-инъекций? Что такое prepared statements?

Ответ

Подготовленный запрос отправляет структуру SQL и параметры раздельно, поэтому пользовательский ввод никогда не парсится как SQL, а ошибки экранирования не превращаются в инъекцию. В PHP это PDO или mysqli с привязкой параметров либо ORM, который делает это за вас. Уязвимость создаёт именно конкатенация строк в запрос; функции экранирования — хрупкая замена, потому что зависят от кодировки и контекста.

3

Что такое Eloquent ORM? Объясните N+1 и как её решить.

Ответ

Eloquent — это active-record ORM Laravel, где модель отображается на таблицу, а связи описываются методами. N+1 возникает, когда вы идёте циклом по моделям и обращаетесь к связи, порождая по запросу на строку. Лечится жадной загрузкой через with(), а поймать это в разработке помогает Model::preventLazyLoading(), после которого ленивое обращение падает с ошибкой вместо тихой деградации.

4

Что такое middleware в Laravel? Приведите пример использования.

Ответ

Middleware оборачивает конвейер HTTP-запроса и позволяет выполнить код до или после контроллера — аутентификация, ограничение частоты запросов, заголовки CORS, логирование. Каждый middleware получает запрос и замыкание $next, решает, пропускать ли дальше, и может изменить ответ на обратном пути. За счёт композиции сквозная логика не расползается по контроллерам.

5

Как работает автозагрузка классов через Composer и PSR-4?

Ответ

PSR-4 сопоставляет префикс пространства имён с каталогом, поэтому App\Services\Mailer разрешается в src/Services/Mailer.php. Composer генерирует автозагрузчик из карты в composer.json и регистрирует его через spl_autoload_register, так что классы подгружаются при первом обращении, а не подключаются вручную. В продакшене запускают composer dump-autoload --optimize, чтобы собрать статическую карту классов и не ходить в файловую систему.

6

Что такое XSS и CSRF? Как от них защититься в PHP-приложении?

Ответ

XSS внедряет исполняемый скрипт в страницу — защита в экранировании всего вывода через htmlspecialchars или двойные фигурные скобки Blade плюс Content Security Policy. CSRF заставляет браузер авторизованного пользователя отправить непреднамеренный запрос — защита в токене на каждую форму, меняющую состояние, и куках SameSite. Ключевое различие: XSS злоупотребляет доверием пользователя к сайту, CSRF — доверием сайта к браузеру.

7

В чём разница между include, require, include_once и require_once?

Ответ

include при отсутствии файла выдаёт предупреждение и продолжает работу, require бросает фатальную ошибку и останавливает выполнение. Варианты _once запоминают уже подключённые файлы и пропускают повторы, что предотвращает ошибки переобъявления. В современном коде все четыре почти не нужны, потому что загрузкой классов занимается автозагрузка Composer, а явные подключения остаются лишь для конфигов и шаблонов.

🦎

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

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

Пройти интервью 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 React Frontend💚Senior Vue Frontend🅰️Senior Angular FrontendSenior Next.js