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

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

Junior · без досвіду / до 1 року

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

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

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

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

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, вирішує, чи пропускати далі, і може змінити відповідь на зворотному шляху. За рахунок композиції наскрізна логіка не розповзається по контролерах.

🦎

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

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

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

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

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

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

🔍Junior QA Manual🤖Junior QA AutomationJunior Java Backend🐍Junior Python Backend🦫Junior Go Backend🟢Junior Node.js Backend⚛️Junior React Frontend💚Junior Vue Frontend🅰️Junior Angular FrontendJunior Next.js