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

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

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

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

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

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

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

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

1

Чем `==` отличается от `===`?

Ответ

== сравнивает после приведения типов, === сравнивает значение и тип. В PHP 8 приведение стало куда вменяемее — 0 == "foo" теперь false, — но правило то же: используйте ===, если нет причины поступить иначе, потому что таблицу сравнений никто не обязан помнить наизусть.

2

Чем интерфейс отличается от абстрактного класса и от трейта?

Ответ

Интерфейс объявляет, что класс умеет, и реализации не несёт. Абстрактный класс может хранить состояние и частичную реализацию, и наследоваться можно только от одного. Трейт — код, внедряемый в класс, ответ PHP на отсутствие множественного наследования. Трейты для общей реализации, интерфейсы для общего контракта.

3

Что на самом деле ограничивают `public`, `protected` и `private`?

Ответ

public доступен отовсюду, protected — из класса и наследников, private — только из объявившего класса. private строже, чем ожидают: наследник его не видит. По умолчанию стоит брать private и расширять, когда доступ извне действительно понадобился.

4

Чем `include` отличается от `require`?

Ответ

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

5

Что такое Composer и зачем нужен `composer.lock`?

Ответ

Composer разрешает и ставит зависимости. composer.json говорит, что вы хотите, composer.lock фиксирует, что именно разрешилось, — поэтому lock коммитят, и поэтому composer install на сервере воспроизводит то же дерево, а не подбирает версии посвежее.

6

Что такое приведение типов и где оно до сих пор кусается?

Ответ

PHP превращает типы, чтобы сравнить их или выполнить операцию. Кусается там, где строка из формы приходит туда, где ждали число, и в нестрогих сравнениях внутри in_array или switch, использующих == по умолчанию. declare(strict_types=1) в начале файла превращает тихое приведение в ошибку.

7

Что такое суперглобальные массивы и почему не стоит читать их напрямую?

Ответ

$_GET, $_POST, $_SERVER, $_SESSION и прочие держат данные запроса. Чтение напрямую разносит непроверенный ввод по всему коду и делает нетестируемым всё, что их трогает: запрос ведь не сконструируешь. Объект запроса фреймворка их оборачивает, ради чего им и пользуются.

🦎

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

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

Пройти интервью 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 Ruby on Rails🟣Junior .NET Backend Developer🔷Junior C++🟨Junior JavaScript