РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ НА BACKEND РАЗРАБОТЧИКА ПОЛУЧИЛ ЗП 280К ЗАВАЛИВ ПОЛОВИНУ ТЕХНИЧЕСКИХ ВОПРОСОВ
Полная запись PHP-собеседования с разбором опыта кандидата, архитектуры, баз данных, очередей, PHP runtime и принципов проектирования. В конце обсуждаются процессы анонимной команды и условия оффера.
Запись реального собеседования на позицию PHP backend-разработчика уровня middle: кандидат рассказывает об опыте с Symfony, очередями, базами данных и микросервисами, а затем отвечает на технические вопросы. Основная часть посвящена диагностике нагрузки PostgreSQL, репликации и шардированию, различиям Kafka и RabbitMQ, асинхронности PHP, RoadRunner, SOLID, индексам и рекурсии. В финале кандидат задаёт вопросы о команде и процессах, после чего интервьюеры озвучивают условия предполагаемого оффера; название компании в записи намеренно скрыто.
Для разбора проблем с читающей PostgreSQL-базой в интервью ожидают последовательность: посмотреть мониторинг и логи, выделить частые и долгие SQL-запросы, проверить план/индексы и отдельно оценить селективность индекса.
В обсуждении масштабирования разделяют чтения и записи: реплики помогают распределять чтение, а при исчерпанной оптимизации записи собеседующий называет шардирование способом распределить данные и запись между несколькими мастерами.
Kafka и RabbitMQ обсуждаются через модель доставки: RabbitMQ в примере подталкивает события consumer’у, а Kafka consumer опрашивает сам; Kafka кандидат использовал там, где нельзя терять данные о товарных карточках.
Асинхронность не равна многопоточности: PHP-библиотеки и Fibers могут организовывать асинхронное выполнение, но сами по себе не делают PHP-код параллельным на нескольких потоках.
Стоит подготовить объяснение компромиссов RoadRunner и PHP-FPM: долгоживущие worker-процессы, обработка gRPC/HTTP и риск накопления состояния или утечек памяти.
По индексам нужно различать hash index и B-tree: B-tree хранит упорядоченную структуру и пригоден для range-запросов, тогда как hash index не даёт такого упорядочивания.
В блоке про проектирование проверяются не только определения SOLID, но и умение связать Single Responsibility, Dependency Inversion, низкую связанность и высокую когезию с реальными классами и сервисами.