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

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

Middle · 2–4 роки досвіду

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

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

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

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

7 питань рівня Middle з відповідями

1

Чим `hasManyThrough` відрізняється від `belongsToMany`?

Відповідь

У термінах Laravel belongsToMany використовує зведену таблицю, що існує лише щоб зʼєднати дві моделі. Відношення через проміжну дістає дальню модель через ту, що сама є повноцінною сутністю. Якщо звʼязувальна таблиця несе власні дані — позначку часу, статус, — це модель, і поводження з нею як зі зведеною робить ці дані незручними.

2

Що таке N+1 і як його знайти?

Відповідь

Один запит на список і ще по одному на кожен елемент, бо звʼязок завантажується ліниво всередині циклу. Знаходиться за журналом запитів або пакетом, що рахує запити на запит. with() підтягує звʼязок другим запитом. Пастка — вилікувати це кешуванням сторінки замість самого запиту.

3

Що робить контейнер сервісів?

Відповідь

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

4

Чим middleware відрізняється від контролера?

Відповідь

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

5

Як працюють черги і що має бути істинним для задачі?

Відповідь

Задача серіалізується у сховище, воркер її забирає і виконує поза запитом. Істинним має бути те, що вона може виконатися двічі: воркер здатен упасти після роботи, але до підтвердження. Усе, що шле гроші чи листи, потребує захисту, а довгі задачі — тайм-ауту, коротшого за вікно видимості.

6

Чим міграція відрізняється від сидера?

Відповідь

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

7

Як захищатися від SQL-інʼєкцій та XSS?

Відповідь

Від інʼєкцій захищає привʼязка параметрів, яку будівник запитів і Eloquent роблять за вас, — небезпека в DB::raw із підставленим вводом. Від XSS захищає екранування на виводі: {{ }} у Blade це робить, а {!! !!} навмисно ні. І те й інше про те, щоб не змішувати дані з мовою в невідповідний момент.

🦎

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

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

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

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

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

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

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