Публичное собеседование PHP-разработчика на Неделе победителей рейтинга Хабр Карьеры
Развёрнутое публичное интервью PHP-разработчика с обсуждением архитектуры, DDD, баз данных, PHP и подготовки к собеседованиям. В финале команда отвечает на вопросы зрителей и даёт кандидату обратную связь.
Публичное собеседование PHP-разработчика Михаила посвящено его опыту проектной разработки и обсуждению архитектуры: монолитов, DDD, Clean Architecture, Symfony, PostgreSQL и очередей. Кандидат на примерах клиники и внутренних систем объясняет моделирование сущностей, ролей, идентификаторов UUID, слоёв приложения и обработку бизнес-процессов. В конце разбирают вопросы зрителей о SQL, авторизации и переходе в PHP; Дмитрий положительно оценивает архитектурное мышление кандидата, но решения о найме или оффера не объявляют.
Подготовьте связный рассказ о своей архитектуре: почему выбран монолит, какие части допустимо вынести в отдельные сервисы и какую бизнес-задачу это решает.
Умейте на предметном примере различать сущности и value objects: у сущности есть идентификатор, а цена может быть value object из суммы и валюты.
Для модели с несколькими ролями пользователя рассмотрите общую таблицу users и связь «многие ко многим» с ролями; это упрощает авторизацию и выбор активной роли.
Будьте готовы обосновать UUID вместо автоинкрементных ID: их можно создать на клиенте и использовать при обмене данными между изолированными инсталляциями без коллизий.
Повторите PHP magic methods, работу деструктора и сборщика мусора, copy-on-write для массивов, а также стек, очередь, хеш-таблицу и ожидаемую сложность доступа по ключу.
Для SQL-вопросов полезно уметь выразить возраст через дату и интервал, фильтровать по нужным полям и объяснить, какие поля стоит индексировать.
Кандидат называет RabbitMQ и Symfony Messenger, а Kafka — только учебным опытом; не приписывайте себе production-опыт с брокером, если его не было.