Языки программирования

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

15 уроков · 5 разделов · бесплатно, без регистрации

Подборка реальных вопросов с PHP-собеседований — от джуниорского «чем == отличается от ===» до сеньорского «как устроен подсчёт ссылок и когда включать JIT». Каждый урок разбирает один-три вопроса по единой схеме: что на самом деле проверяет интервьюер, развёрнутый ответ с рабочими примерами кода, типичные ошибки кандидатов и короткая выжимка, которую можно проговорить за полминуты.

Учебник пригодится и тем, кто готовится к интервью, и тем, кто просто хочет разобраться, как PHP работает под капотом: жизненный цикл запроса, OPcache, copy-on-write, автозагрузка PSR-4, внедрение зависимостей и веб-безопасность.

Курс «Вопросы на собеседовании: PHP» состоит из 5 разделов и 15 уроков: Типы и сравнение, ООП в PHP, Устройство языка и производительность, Экосистема и стандарты и Веб и безопасность. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Типы и сравнение

    1. == или ===: что спрашивают в первую очередь

      Разбор вопроса «чем == отличается от ===» на собеседовании по PHP: правила нестрогого сравнения, что изменилось в PHP 8, ловушки in_array и switch.

    2. Приведение типов и declare(strict_types=1)

      Что спрашивают про типизацию PHP: coercive и strict режимы, declare(strict_types=1), приведение строк к числам, ловушки float и валидация ввода.

    3. Массивы как хэш-таблицы и подводные камни строк

      Что такое массив в PHP на самом деле: упорядоченная хэш-таблица, правила ключей, разница array_merge и оператора +, работа с UTF-8 и mb_-функции.

  2. 2 ООП в PHP

    1. Интерфейс или абстрактный класс: что выбрать

      Разбор классического вопроса собеседования по PHP: чем интерфейс отличается от абстрактного класса, когда что применять, зачем нужны final и композиция.

    2. Трейты, конфликты методов и магия __get/__call

      Собеседование по PHP: зачем нужны трейты, как разрешать конфликты через insteadof и as, что такое магические методы __get, __set, __call и чем они опасны.

    3. self против static, enum и readonly

      Вопросы уровня senior по PHP: late static binding и разница self и static, перечисления enum из PHP 8.1 и readonly-свойства для неизменяемых объектов.

  3. 3 Устройство языка и производительность

    1. Жизненный цикл запроса и модель shared-nothing

      Собеседование по PHP: что происходит от прихода HTTP-запроса до ответа, как работает PHP-FPM, почему PHP ничего не помнит между запросами и что из этого следует.

    2. OPcache, JIT и почему PHP не такой уж медленный

      Что спрашивают про производительность PHP: как работает OPcache, что такое опкоды, preloading, JIT в PHP 8 и когда он реально помогает.

    3. Память: подсчёт ссылок, copy-on-write и генераторы

      Вопросы про память в PHP: refcounting и сборщик циклов, copy-on-write при копировании массивов, ссылки &, ловушка foreach по ссылке и генераторы yield.

  4. 4 Экосистема и стандарты

    1. Composer, автозагрузка PSR-4 и пространства имён

      Собеседование по PHP: как работает автозагрузка PSR-4, чем require отличается от autoload, зачем composer.lock и что означают PSR-стандарты.

    2. Внедрение зависимостей и DI-контейнер

      Разбор вопроса о dependency injection в PHP: чем DI отличается от контейнера и service locator, зачем PSR-11, как контейнер автоматически собирает зависимости.

    3. Ошибки и исключения: Error, Exception, Throwable

      Собеседование по PHP: иерархия Throwable, чем Error отличается от Exception, зачем finally, как ловить ошибки в PHP 8 и как правильно обрабатывать исключения.

  5. 5 Веб и безопасность

    1. Сессии и куки: как это работает на самом деле

      Собеседование по PHP: чем сессия отличается от куки, где хранятся данные сессии, флаги HttpOnly, Secure и SameSite, session fixation и безопасная авторизация.

    2. SQL-инъекции и подготовленные запросы в PDO

      Разбор вопроса про SQL-инъекции в PHP: почему конкатенация опасна, как работают подготовленные запросы PDO, зачем отключать эмуляцию prepare и что нельзя биндить.

    3. XSS, CSRF, пароли и валидация ввода

      Финальный блок вопросов по безопасности PHP: экранирование вывода против XSS, CSRF-токены, хэширование паролей через password_hash и валидация данных filter_var.