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

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

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

Junior · без досвіду / до 1 рокуMiddle · 2–4 роки досвідуSenior · 5+ років досвіду

Що запитують

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

10 реальних питань з відповідями

До кожного питання — еталонна відповідь, з якою можна порівняти свою.

1

У чому різниця між == і === у PHP?

Відповідь

== порівнює значення після приведення типів, === додатково вимагає збігу типів. Нестроге порівняння дає відомі сюрпризи: до PHP 8 вираз "abc" == 0 був істинним, а "1e2" == "100" істинний і досі, бо обидва рядки виглядають числами. Правило в продакшені просте — завжди ===, якщо немає конкретної причини вчинити інакше.

2

Що таке traits? Чим вони відрізняються від успадкування та інтерфейсів?

Відповідь

Trait — це блок методів і властивостей, який підмішується в клас в обхід одиночного успадкування PHP. Інтерфейс оголошує контракт без реалізації; успадкування дає звʼязок «є» з одним батьком; trait дає перевикористовувану реалізацію без типового звʼязку. Конфлікти між трейтами треба розвʼязувати явно через insteadof або as.

3

Поясніть принципи SOLID на прикладах PHP.

Відповідь

Single Responsibility: у класу одна причина для зміни, тому контролер не збирає ще й PDF. Open/Closed: поведінку розширюють новими класами, а не правкою наявних. Liskov: нащадка можна підставити всюди, де очікується батько. Interface Segregation: багато маленьких інтерфейсів краще за один роздутий. Dependency Inversion: залежати від інтерфейсів, переданих у конструктор, а не від конкретних класів, створених через new.

4

Що таке Dependency Injection Container у Laravel і як він працює?

Відповідь

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

5

Як захиститися від SQL-інʼєкцій? Що таке prepared statements?

Відповідь

Підготовлений запит надсилає структуру SQL і параметри окремо, тому користувацький ввід ніколи не парситься як SQL, а помилки екранування не перетворюються на інʼєкцію. У PHP це PDO або mysqli з привʼязкою параметрів чи ORM, який робить це за вас. Уразливість створює саме конкатенація рядків у запит; функції екранування — крихка заміна, бо залежать від кодування й контексту.

6

Що таке Eloquent ORM? Поясніть N+1 і як її вирішити.

Відповідь

Eloquent — це active-record ORM Laravel, де модель відображається на таблицю, а звʼязки описуються методами. N+1 виникає, коли ви йдете циклом по моделях і звертаєтесь до звʼязку, породжуючи по запиту на рядок. Лікується жадібним завантаженням через with(), а зловити це в розробці допомагає Model::preventLazyLoading(), після якого ліниве звернення падає з помилкою замість тихої деградації.

7

Що таке middleware у Laravel? Наведіть приклад використання.

Відповідь

Middleware загортає конвеєр HTTP-запиту і дозволяє виконати код до або після контролера — автентифікація, обмеження частоти запитів, заголовки CORS, логування. Кожен middleware отримує запит і замикання $next, вирішує, чи пропускати далі, і може змінити відповідь на зворотному шляху. За рахунок композиції наскрізна логіка не розповзається по контролерах.

8

Як працює автозавантаження класів через Composer і PSR-4?

Відповідь

PSR-4 зіставляє префікс простору імен з каталогом, тому App\Services\Mailer розвʼязується у src/Services/Mailer.php. Composer генерує автозавантажувач з карти в composer.json і реєструє його через spl_autoload_register, тож класи підвантажуються при першому зверненні, а не підключаються вручну. У продакшені запускають composer dump-autoload --optimize, щоб зібрати статичну карту класів і не ходити у файлову систему.

9

Що таке XSS і CSRF? Як від них захиститися в PHP-застосунку?

Відповідь

XSS впроваджує виконуваний скрипт у сторінку — захист в екрануванні всього виводу через htmlspecialchars або подвійні фігурні дужки Blade плюс Content Security Policy. CSRF змушує браузер авторизованого користувача надіслати ненавмисний запит — захист у токені на кожну форму, що змінює стан, і куках SameSite. Ключова відмінність: XSS зловживає довірою користувача до сайту, CSRF — довірою сайту до браузера.

10

У чому різниця між include, require, include_once і require_once?

Відповідь

include за відсутності файлу видає попередження і продовжує роботу, require кидає фатальну помилку і зупиняє виконання. Варіанти _once запамʼятовують уже підключені файли і пропускають повтори, що запобігає помилкам переоголошення. У сучасному коді всі чотири майже не потрібні, бо завантаженням класів займається автозавантаження Composer, а явні підключення лишаються тільки для конфігів і шаблонів.

🦎

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

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

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

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

🔍QA Manual🤖QA AutomationJava Backend🐍Python Backend🦫Go Backend🟢Node.js Backend⚛️React Frontend💚Vue Frontend🅰️Angular FrontendNext.js📈Business Analyst🎯Product Manager📋Project Manager🎨UI/UX Designer📣Marketing