Техническое PHP-собеседование с разбором опыта кандидата, MySQL, Yii/Laravel, очередей RabbitMQ и микросервисов. В финале интервьюер раскрывает устройство команды и условия работы в Алгоритмике.
Запись PHP-собеседования в Алгоритмику: кандидат рассказывает о предыдущей работе с PHP, Yii/Laravel, внутренними сервисами и обработкой изображений через RabbitMQ. Интервьюер подробно проверяет знания MySQL, оптимизации запросов, миграций нагруженных таблиц, N+1 и проектирования сервисов. В конце он описывает процессы и инфраструктуру своей команды: около 1 000 RPS, монолит на Yii2, несколько Laravel-сервисов, отдельное тестирование и географические инстансы. По описанию автора, после интервью кандидата не позвали.
Кандидат работал с PHP 5/7, Yii 1/2 и Laravel; в прежнем проекте автоматических тестов практически не было, что, по его словам, усложняло безопасный переход монолита на PHP 8.
Для медленных MySQL-запросов обсуждаются EXPLAIN, индексы и расхождение плана со фактическим выполнением из-за устаревшей статистики на часто меняющихся таблицах; интервьюер упоминает OPTIMIZE TABLE и подсказки индексов как возможные меры.
Для добавления колонки в активно используемую таблицу интервьюер предлагает схему с копией таблицы, синхронизацией изменений триггерами и атомарным переименованием; ручное доливание записей признано ненадёжным.
Проблему N+1 в Yii связывают с ленивой загрузкой relations; для заранее известных связей нужна жадная загрузка.
В задаче «записать в БД и отправить событие в RabbitMQ» собеседники приходят к отдельной таблице задач в БД: её вычитывает процесс и публикует события в очередь, что даёт гарантированную отложенную обработку.
RabbitMQ рассматривается не как обязательная замена таблице задач, а как средство развязки сервисов, распределения сообщений между consumer’ами и горизонтального масштабирования.
У интервьюера двухнедельные спринты с грумингом и планированием; разработчики пишут unit и функциональные тесты, а автотесты поддерживает отдельная QA-команда.