Вернуться в видеотеку

Открытое собеседование PHP Senior Developer

Открытое PHP-интервью с разбором архитектуры каталога, производительности MySQL, паттернов, инструментов профилирования и базовой алгоритмической задачи.

Источник: Сеньор Руслан

Открыть на YouTube

Таймлайн

Коротко о видео

Это открытое собеседование на позицию PHP Senior Developer: кандидат кратко описывает около 15 лет опыта, преимущественно с PHP, и отвечает на технические вопросы. Он разбирает опыт работы с каталогом товаров на PHP, Yii2 и MySQL, паттерн Strategy, оптимизацию SQL, кэширование, партиционирование, PHP-FPM/FastCGI, профилирование и алгоритм слияния двух отсортированных массивов. В конце ведущий завершает разговор и говорит, что передаст информацию руководству, однако компания и итог собеседования не названы.

Затронутые темы

Что взять на заметку

  • Подготовьте рассказ о высоконагруженном каталоге: кандидат приводит пример ежедневного обновления десятков миллионов товаров через очередь и параллельные воркеры на PHP, Yii2 и MySQL.
  • Для Strategy нужно уметь объяснить связку «интерфейс — конкретные стратегии — контекст»: в записи это показано на обработчиках архивов RAR и ZIP.
  • При оптимизации SQL обсуждаются индексы для полей из WHERE, GROUP BY и ORDER BY, выбор только нужных столбцов вместо SELECT *, LIMIT и кэширование тяжёлых запросов.
  • Для запроса, который нельзя ускорить и который может вызвать шторм после истечения кэша, кандидат предлагает заранее пересчитывать данные фоновой задачей, отдавать часть интерфейса асинхронно и в зависимости от задачи рассматривать Elasticsearch, Sphinx или партиционирование.
  • При партиционировании выигрыш ожидается, когда запрос фильтрует по ключу партиционирования; запрос по другой колонке может не получить этого преимущества.
  • Из инструментов диагностики названы Xdebug, логи, Blackfire, XHProf и Yii2 Debug Toolbar; на примере кандидат связывает поиск медленных SQL-запросов со снижением времени страницы примерно с 3 секунд до 0,2–0,5 секунды.
  • Алгоритмическая задача решается слиянием двух отсортированных массивов двумя указателями с линейной сложностью O(n + m); отдельно стоит точно формулировать различия Git merge и rebase, поскольку ответ в записи неточен.

Рекомендуем посмотреть

1 ч 18 мин
BackendSenior

Валентин Удальцов, Виталий Лихачев: Публичное собеседование Senior Software Engineer (PHP)

Публичное учебное интервью по PHP для уровня Senior Software Engineer. В нём разбирают современные практики разработки, архитектуру, конкурентный доступ к данным, PostgreSQL, Redis, очереди и transactional outbox.

1 ч 20 мин
BackendMiddle

Реальное собеседование на Middle PHP разработчика (офер получен)

Техническое интервью Middle PHP-разработчика с разбором опыта кандидата, SQL и архитектурных вопросов. В конце работодатель рассказывает о задачах своих команд, связанных с торговыми системами и внутренней автоматизацией.

1 ч 31 мин
Backend

Публичное собеседование PHP-разработчика на Неделе победителей рейтинга Хабр Карьеры

Развёрнутое публичное интервью PHP-разработчика с обсуждением архитектуры, DDD, баз данных, PHP и подготовки к собеседованиям. В финале команда отвечает на вопросы зрителей и даёт кандидату обратную связь.