P
prepair.app
Пройти інтерв'ю →
EnglishУкраїнськаРусскийDeutsch
🐘

Senior PHP BackendПитання на співбесіді PHP

Senior · 5+ років досвіду

Співбесіда PHP охоплює семантику мови, ООП, Laravel або Symfony, MySQL та основи веббезпеки. Нижче — найчастіші питання з еталонними відповідями. Senior: архітектуру, трейд-офи, менторство та прийняття рішень.

Спробувати — без реєстрації
Готуємо питання…

Теми для підготовки

ООП і SOLID у PHP
Laravel / Symfony
MySQL та оптимізація запитів
Composer і автозавантаження
Сесії, куки, безпека
Стандарти PSR

6 питань рівня Senior з відповідями

1

Де має жити бізнес-логіка в Laravel-застосунку?

Відповідь

Не в контролері й не в моделі: перше робить її недосяжною з консольної команди, друге перетворює модель на місце, куди все накопичується. Сервіси або action-класи з однією відповідальністю, що приймають потрібне і повертають результат, лишаються тестованими і викликаються однаково з контролера, задачі й команди.

2

Як зробити деплой зі зміною схеми без простою?

Відповідь

Етапами, кожен з яких працює з поточним кодом: додати nullable-колонку, викотити код, що пише в обидві, залити дані порціями, перемкнути читання і видалити стару наступним релізом. Специфічна для PHP пастка — opcache: деплой, що підміняє файли під працюючим процесом, може віддавати суміш старого й нового, доки кеш не скинуто.

3

Як шукати, чому PHP-застосунок сповільнився?

Відповідь

Профайлером на живому запиті, а не здогадами: Xdebug чи Blackfire назвуть функцію, і відповіддю зазвичай виявляється кількість запитів, а не сам PHP. Далі перевірити очевидне в інфраструктурі: чи ввімкнено opcache у проді і чи не піднімає фреймворк більше провайдерів, ніж потрібно цьому запиту.

4

Що кешувати, де і як інвалідувати?

Відповідь

Кешувати дороге і стійке: порахований звіт, дерево конфігурації, запит, результат якого змінюється рідко. Позначати тегами, щоб повʼязаний запис чистив групу, а не все сховище. Спливання за часом хибне, зате самовідновлюється, і для більшості читальних даних воно виграє в явної інвалідації, яку ви одного разу забудете викликати.

5

Як утримати довговічну PHP-кодову базу оновлюваною?

Відповідь

Тримаючись ближче до фреймворку, а не обгортаючи його власними абстракціями: кожна обгортка — те, що ви підтримуватимете через усі їхні оновлення. Далі: політика залежностей, статичний аналіз на рівні, який реально дотримується, і оновлення по одній мінорній версії, щоб стрибок ніколи не ставав проєктом. Кодова база, що відстала на два мажори, — це база, яку ніхто не хоче чіпати.

6

Коли фреймворк не потрібен?

Відповідь

Для маленького сервісу з однією задачею, де вартість завантаження і поверхня залежностей не купують нічого: кілька файлів і роутер чесніші. У той момент, коли потрібні авторизація, міграції, черги і модель прав, написати це самому дорожче, ніж розібратися в чужому. Остерігатися варто іншого рішення — фреймворку, взятого під сервіс, який до нього ніколи не доросте.

🦎

Прочитати відповіді недостатньо

На співбесіді ти говориш вголос під тиском. Кем поставить ті самі питання, оцінить кожну відповідь і покаже, що саме підтягнути.

Пройти інтерв'ю Senior PHP Backend →
Безкоштовно · 3 інтерв'ю на місяць

Інші рівні — PHP Backend

Junior PHP BackendMiddle PHP BackendУсі питання PHP Backend

Інші спеціалізації

🔍Senior QA Manual🤖Senior QA AutomationSenior Java Backend🐍Senior Python Backend🦫Senior Go Backend🟢Senior Node.js Backend💎Senior Ruby on Rails🟣Senior .NET Backend Developer🔷Senior C++🟨Senior JavaScript