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

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

Junior · без опыта / до 1 года

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

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

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

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

1

В чём разница между == и === в PHP?

Ответ

== сравнивает значения после приведения типов, === дополнительно требует совпадения типов. Нестрогое сравнение даёт известные сюрпризы: до PHP 8 выражение "abc" == 0 было истинным, а "1e2" == "100" истинно до сих пор, потому что обе строки выглядят числами. Правило в продакшене простое — всегда ===, если нет конкретной причины поступить иначе.

2

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

Ответ

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

3

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

Ответ

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

4

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

Ответ

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

5

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

Ответ

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

6

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

Ответ

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

7

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

Ответ

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

🦎

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

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

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

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

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

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

🔍Junior QA Manual🤖Junior QA AutomationJunior Java Backend🐍Junior Python Backend🦫Junior Go Backend🟢Junior Node.js Backend⚛️Junior React Frontend💚Junior Vue Frontend🅰️Junior Angular FrontendJunior Next.js