Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Junior: питання на співбесіді з теми «Налагодження»

Питання з реальних співбесід з відповідями: Laravel і PHP, бази даних, JavaScript і фронтенд, Git, Docker, API, безпека й архітектура. Тими самими темами, що й тести.

2 питання

Обидва виводять значення в зручному вигляді через Symfony VarDumper:

  • dump($var) - друкує значення й продовжує виконання.
  • dd($var) - «dump and die»: друкує й зупиняє виконання.
dump($user);     // подивитись і йти далі
dd($request->all()); // подивитись і зупинитись

Споріднене: dump() для ланцюжків (->dump() на колекції/запиті), ray() (пакет), Log::debug() для логів замість виводу на екран.

Докладніше в документації: Хелпери (dump/dd)

Коли APP_DEBUG=true, Laravel показує сторінку помилки з усім потрібним для розслідування. Головне - читати її в правильному порядку.

1. Клас винятку й повідомлення вгорі сторінки - найважливіше:

Що бачите Що це зазвичай означає
ModelNotFoundException findOrFail чи прив'язка моделі до маршруту не знайшли запис
QueryException помилка SQL: немає колонки, таблиці, порушено обмеження
ErrorException: Undefined array key звернення до ключа, якого немає
TypeError у функцію передано значення не того типу (часто null)
ViewException помилка всередині Blade-шаблону - справжня причина нижче в ланцюжку

2. Перший кадр вашого коду. Стек викликів читається згори вниз: верхній кадр - де виняток кинуто. Часто це код фреймворку чи пакета, і він не винен. Сторінка позначає кадри з vendor/ окремо й згортає їх - шукайте перший кадр з app/, routes/ чи resources/: там рядок, який викликав проблему.

3. Попередні винятки. Якщо виняток обгорнуто (як ViewException), справжня причина - у «previous exception». Сторінка показує весь ланцюжок.

4. Контекст запиту: маршрут, контролер, middleware, параметри, заголовки, тіло запиту й виконані SQL-запити. Часто відповідь там: не той ідентифікатор у параметрі, порожнє поле форми.

Корисні дрібниці:

  • кнопка копіювання помилки в Markdown - зручно вставити в задачу чи в чат з AI-асистентом;
  • посилання на файли відкриваються в IDE, якщо вказати редактор у config/app.php: 'editor' => 'phpstorm';
  • те саме, що на сторінці, записано в storage/logs/laravel.log - для помилок у чергах і командах, де сторінки немає.

На продакшені APP_DEBUG має бути false: сторінка розкриває змінні оточення, запити й код. Користувач бачить загальну сторінку 500, а деталі - в логах і системі моніторингу помилок.

Докладніше в документації: Обробка помилок