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

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

Middle · 2–4 года опыта

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

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

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

8 вопросов уровня Middle с ответами

1

Что такое traits? Чем они отличаются от наследования и интерфейсов?

Ответ

Trait — это блок методов и свойств, который подмешивается в класс в обход одиночного наследования PHP. Интерфейс объявляет контракт без реализации; наследование даёт связь «является» с одним родителем; trait даёт переиспользуемую реализацию без типовой связи. Конфликты между трейтами нужно разрешать явно через insteadof или as.

2

Объясните принципы SOLID на примерах PHP.

Ответ

Single Responsibility: у класса одна причина для изменения, поэтому контроллер не собирает ещё и PDF. Open/Closed: поведение расширяют новыми классами, а не правкой существующих. Liskov: наследника можно подставить всюду, где ожидается родитель. Interface Segregation: много маленьких интерфейсов лучше одного раздутого. Dependency Inversion: зависеть от интерфейсов, переданных в конструктор, а не от конкретных классов, созданных через new.

3

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

Ответ

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

4

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

Ответ

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

5

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

Ответ

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

6

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

Ответ

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

7

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

Ответ

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

8

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

Ответ

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

🦎

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

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

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

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

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

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

🔍Middle QA Manual🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🦫Middle Go Backend🟢Middle Node.js Backend⚛️Middle React Frontend💚Middle Vue Frontend🅰️Middle Angular FrontendMiddle Next.js