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

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

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

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

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

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

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

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

1

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

Відповідь

== порівнює після приведення типів, === порівнює значення і тип. У PHP 8 приведення стало значно розсудливішим — 0 == "foo" тепер false, — але правило те саме: використовуйте ===, якщо немає причини вчинити інакше, бо таблицю порівнянь ніхто не зобовʼязаний памʼятати напам'ять.

2

Чим інтерфейс відрізняється від абстрактного класу і від трейта?

Відповідь

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

3

Що насправді обмежують `public`, `protected` і `private`?

Відповідь

public доступний звідусіль, protected — з класу і нащадків, private — лише з класу, що його оголосив. private суворіший, ніж очікують: нащадок його не бачить. За замовчуванням варто брати private і розширювати, коли доступ ззовні справді знадобився.

4

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

Відповідь

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

5

Що таке Composer і навіщо потрібен `composer.lock`?

Відповідь

Composer розвʼязує і ставить залежності. composer.json каже, що ви хочете, composer.lock фіксує, що саме розвʼязалося, — тому lock комітять, і тому composer install на сервері відтворює те саме дерево, а не добирає свіжіші версії.

6

Що таке приведення типів і де воно досі кусається?

Відповідь

PHP перетворює типи, щоб порівняти їх або виконати операцію. Кусається там, де рядок із форми приходить туди, де чекали число, і в нестрогих порівняннях усередині in_array чи switch, що використовують == за замовчуванням. declare(strict_types=1) на початку файлу перетворює тихе приведення на помилку.

7

Що таке суперглобальні масиви і чому не варто читати їх напряму?

Відповідь

$_GET, $_POST, $_SERVER, $_SESSION та інші тримають дані запиту. Читання напряму розносить неперевірений ввід по всьому коду і робить нетестованим усе, що їх торкається: запит же не сконструюєш. Обʼєкт запиту фреймворку їх обгортає, заради чого ним і користуються.

🦎

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

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

Пройти інтерв'ю 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 Ruby on Rails🟣Junior .NET Backend Developer🔷Junior C++🟨Junior JavaScript