Реальное собеседование на Middle PHP разработчика (офер получен)
Запись технического собеседования Middle PHP-разработчика. Обсуждаются опыт кандидата, архитектурные подходы, тестирование, базы данных и процессы в команде платёжного агрегатора.
Техническое интервью на позицию Middle PHP-разработчика: интервьюер представляет платёжный агрегатор с legacy-кодом, PHP 7.2, MariaDB и преимущественно backend-задачами. Кандидат рассказывает о двух годах full-stack-разработки, проектах на Symfony, React и тестировании, а затем подробно отвечает на вопросы о TDD, DDD, SOLID, PostgreSQL и оптимизации SQL-запросов. Во второй половине обсуждают устройство команды, интеграции с платёжными системами, миграцию биллинга, CI/CD на Jenkins и возможность показать код учебно-внутреннего проекта.
Компания предоставляет магазинам единый API для приёма платежей через разные банки и платёжные системы, помогая с интеграцией и договорами.
По словам интервьюера, основной стек на момент записи — PHP 7.2 с планом обновления до PHP 7.4, MariaDB и legacy-кодом, накопленным примерно с 2009 года; новый код стараются писать с более современными подходами и поддержкой Yii2.
Кандидат описывает опыт с монолитным интернет-магазином на Symfony 3, системой для сантехников на Symfony 4 и React, а также частично готовой социальной сетью; он работал и с frontend, и с backend, но предпочитает backend.
Собеседники отделяют TDD от test-first: кандидат говорит, что сначала писал тесты, а архитектуру строил на абстракциях и интерфейсах, чтобы изолировать зависимости в тестах.
Кандидат сообщает об использовании unit-, функциональных и приёмочных тестов: функциональные проверяли JSON-ответы, а Codeception-сценарии проходили по админке и запускались на сервере примерно раз в час.
Причиной перехода с MySQL на PostgreSQL кандидат называет потребность в полнотекстовом поиске после отказа от Elasticsearch; отдельно он рассказывает об оптимизации медленных запросов индексами и изменением схемы для сокращения лишних JOIN.
В текущей работе много интеграций с эквайерами и платёжными системами, развития клиентской админки и миграции со старого внешнего биллинга на собственный; деплой построен вокруг Git, Git Flow и Jenkins с миграциями и запуском unit-тестов.