Валентин Удальцов, Виталий Лихачев: Публичное собеседование Senior Software Engineer (PHP)
Публичное учебное интервью по PHP для уровня Senior Software Engineer. В нём разбирают современные практики разработки, архитектуру, конкурентный доступ к данным, PostgreSQL, Redis, очереди и transactional outbox.
Это публичное учебное собеседование на Senior Software Engineer (PHP), где Валентин Удальцов интервьюирует Виталия Лихачёва. После обсуждения подходов к найму и PHP 8 участники разбирают CI/CD-пайплайн, кэширование тяжёлых отчётов, проектирование складского домена под нагрузкой и надёжную доставку событий. В финале интервьюер высоко оценивает ответы Виталия, но это мнение в учебном формате, а не результат реального найма.
CI/CD-пайплайн предлагают строить от линтинга и статического анализа к unit-тестам, а тяжёлые интеграционные проверки запускать выборочно; также обсуждаются сборка Docker-образа, его сканирование на уязвимости и деплой по веткам.
Покрытие кода не доказывает качество тестов: мутационное тестирование меняет условия в коде и проверяет, падают ли тесты на смысловом изменении поведения.
Для кэширования тяжёлого отчёта через PSR-16 рассматривают декоратор над аналитическим сервисом, ключ из сериализованной спецификации и хеша, TTL и проблему одновременного прогрева кэша.
Участники отмечают, что generics в PHP сейчас практично задавать через PHPDoc и проверять статическими анализаторами; на уровне runtime их нет.
В складском домене инвариант «остаток не может стать отрицательным» предлагают перенести из сервиса в доменный объект, а идентификаторы сущностей выделять в отдельные типы, чтобы не перепутать примитивы.
Для конкурирующих резервирований обсуждают пессимистичные и оптимистичные блокировки, версионирование записи, атомарный decrement в PostgreSQL и разделение чтения с записью при высокой нагрузке.
Для аналитики и интеграций рассматривают transactional outbox: изменение остатка и запись события совершаются в одной транзакции, затем отдельный процесс публикует событие; расхождение метрик попыток и успешных операций должно контролироваться алертом.