Вам належить співбесіду по PHP щоб отримати роботу за фахом "програміст PHP"? Спеціально для вас досвідчені розробники зібралися разом, щоб поділитися питаннями, які вони задають на співбесіді.
"Одна з найбільш важливих речей, на які я дивлюся - це творчість людини, якого я інтерв'юю. Я намагаюся знайти рухомих цікавістю розробників, які постійно вивчають нові технології. "
Питання на співбесіді по PHP №1: "У чому різниця між конструкціями include () і require ()?"
Конструкція include. на відміну від require. дозволяє включати файли в код PHP скрипта під час виконання сценарія.Пояснім це на прикладі, спробувавши підключити 5 файлів 1.txt, 2.txt. 5.txt. Вміст файлів - десяткові цифри від 1 до 5 (по одній цифрі в кожному файлі). Створимо наступний PHP-сценарій:
Тобто кожен з файлів був включений по одному разу прямо під час виконання циклу! Якщо ж ми напишемо require замість include. то виникне критична помилка (fatal error).
Відмінність include від require також полягає в тому, що require видає Fatal error при неможливості підключення файлу з будь-якої причини. include видасть Warning і продовжить роботу.
Це питання може показати інтервьютеру, наскільки винахідливий і креативний кандидат, тому що відповідей може бути безліч. Код $ _SERVER [ "REMOTE_ADDR"]; є найпростішим рішенням, але ви можете написати справжній сценарій, відповідаючи на це питання.
Питання на співбесіді по PHP №3: В чому різниця між unset () і unlink ()?
unset () встановлює змінну в "undefined", в той час як unlink () видаляє файл, який відправляється з файлової системи.
Питання по PHP №4: що виведе на екран наступний код:
"Під час інтерв'ю з потенційним кандидатом на вакансію PHP-програміст я прагну зрозуміти, як добре вони обізнані з новими функціями мов програмування, а також їх рівень розуміння основних операцій. На мій погляд, це дозволить визначити наскільки буде хороший розробник в майбутньому. "
Питання з співбесіду по PHP №5: Які основні типи помилок в PHP і чим вони відрізняються?
У PHP існує три основних типи помилок:
Notices (зауваження) Прості, некритичні помилки, які сталися під час виконання сценарію. Прикладом Notices виникнення буде звернення до невизначеної змінної. Warnings (попередження) Серйозніші помилки, ніж Notices. однак виконання сценарію не перерветься. Прикладом може бути підключення неіснуючого файлу за допомогою include (). Fatal (критичні) Цей тип помилки викликає припинення виконання сценарію. Прикладом фатальної помилки буде доступ до властивості неіснуючого об'єкта або require () неіснуючого файлу. Розуміння типів помилок дуже важливо, якщо ви новачок в програмуванні, тому що вони допоможуть вам зрозуміти, що відбувається в процесі розробки і дадуть вам знати, що ви повинні шукати в коді під час налагодження.
Питання, який можна почути на співбесіді по PHP №6: В чому різниця між GET and POST?
- GET відправляє дані як частина URL, в той час як при POST ця інформація не показується, оскільки кодується в запиті.
- GET може обробляти максимум 2048 символів, POST не має таких обмежень.
- GET працює тільки з ASCII даними, POST не має таких обмежень, виконавчі дані також допускається.
- Зазвичай GET використовується для отримання даних, а POST для додавання та оновлення.
Розуміння основ протоколу HTTP дуже важливо для гарного старту в якості розробника PHP і відмінності між GET і POST є невід'ємною його частиною.
Питання №7: Як ви включити повідомлення про помилки в PHP?
Встановіть display_errors = on в php.ini або оголосіть ini_set ( 'display_errors', 1) в вашому сценарії. Потім, додайте error_reporting (E_ALL) в ваш код, щоб відобразити всі типи повідомлень про помилки під час виконання скрипта.
Включення повідомлень про помилки дуже важливо, особливо в процесі налагодження, так як ви можете миттєво дізнатися рядок, яка виробляє помилку, а також переконатися, що сценарій працює правильно.
Питання №8: Що таке Трейти (Traits)?
Трейти представляють собою механізм, який дозволяє створювати повторно використовуваний коду в таких мовах, як PHP, де множинне спадкування не підтримується. Трейт не може бути створений сам по собі.
Дуже важливо, щоб розробник знав потужні можливості мови (ів), з якими він працює і Трейт є одним з таких ознак.
PHP-питання, який можуть задати №9: Чи може значення константи змінитися під час виконання скрипта?
Ні, значення константи не може бути змінено, якщо вона вже була оголошена в ході виконання PHP-коду.
Питання №10: Чи можна ви розширити певний клас Final?
Питання №11: Що роблять методи __construct () і __destruct () в PHP-класі?
Всі об'єкти в PHP мають вбудовані методи конструктор і деструктор. Метод Конструктор викликається відразу після того, як створюється новий екземпляр класу і він використовується для ініціалізації властивостей класу. Метод Деструкція не приймає ніяких параметрів.
Розуміння цих двох PHP-методів означає, що кандидат знає основи об'єктно-орієнтованого програмування в PHP.
Питання №12: Як ми можемо отримати кількість елементів в масиві?
Функція count () використовується для повернення кількості елементів в масиві.
Розуміння масивів і пов'язаних з ними допоміжних функцій - це те, що повинен знати кожен молодший PHP-розробник.
"Мені б хотілося, щоб молодший PHP-розробник знав основи програмування і то, як застосувати їх до PHP. Мені не потрібно, щоб він знав всі функції і терміни за назвами. "
Питання №13: Як би ви оголосили функцію, яка приймає один параметр hello?
Якщо hello = true. то функція повинна надрукувати hello. але якщо функція не отримує hello або hello = false. то функція повинна надрукувати bye.
У цьому питанні, інтерв'юер може оцінити чи знає розробник як оголосити функцію і як він буде визначати, чи може параметр бути викликаний тією чи іншою функцією. Інтерв'юер може також оцінити чи знає розробник синтаксис if і, якщо знає, як надрукувати text (echo function).
PHP-питання №14: Значення змінної $ input є рядком виду 1,2,3,4,5,6,7. Як підрахувати суму чисел у цьому рядку?
Функція explode є однією з найбільш часто використовуваних функцій в PHP, тому дуже важливо зрозуміти чи знає розробник цю функцію. На це питання немає однозначної відповіді, але відповідь має бути схожий на представлений вище.
PHP Питання №15: Припустимо, що у вас є форма подпікі на розсилку.
У цьому питанні будуть оцінювати ваші знання про роботу з формами і їх валідація. Не існує однозначної відповіді на це питання, але він повинен бути схожий на представлений вище.
Питання №15: Робота з класами
Реалізуйте клас з ім'ям Dragonball з атрибутом ballCount. рівним нулю, і метод iFoundaBall. Коли викликається iFoundaBall. то ballCount збільшується на одиницю. Якщо значення ballCount одно семи, то має з'явитися повідомлення "Згадайте бажання", а ballCount знову стане дорівнює нулю.
Це питання буде оцінювати знання кандидатом об'єктно-орієнтованого програмування.
PHP Питання №16: Які є 3 області видимості в PHP?
Private Видно тільки в своєму власному класі Public Видно для будь-якого іншого коду, який здійснює доступ до класу Protected Видно тільки батьківських класів і класів, які розширюють поточний клас
Це важливо знати кожному розробнику, тому що це по суті показує те, що він знає і розуміє принципи програмування, а не просто знає, як набирати код. Також необхідно розуміти переваги і доступність кодів. Необхідно розуміти також і суть захисту змінних і методів, тому що це в сукупності дає захист всіх даних в додатку.
PHP Питання №17: Що таке геттери і сеттери і для чого вони потрібні?
Знання про Геттера і сеттерів важливо для будь-якого програміста, який шукає роботу розробка web-додатків. Геттери і сеттери часто використовуються при роботі з об'єктами, особливо ті, які виявляться в базі даних або іншому місці зберігання. Оскільки PHP зазвичай використовується для створення веб-додатків, навіть молодший спеціаліст буде зустрічатися з Геттера і сетерами в більш просунутих середовищах. Геттери і сеттери дуже потужні, але них рідко згадують. Ви зможете справити приємне враження на інтерв'юера, знаючи, що вони собою представляють і як їх використовувати.
Питання з співбесіди №18: Що означає MVC і що робить кожен компонент?
MVC розшифровується як Model (Модель) View (Представлення) Controller (Констроллер).
Контролер обробляє дані, що передаються в нього Виставою, а також передає дані в Представлення. Він відповідає за інтерпретацію даних, відправлених Виставою і поширення цих даних до відповідних моделям для того, щоб передати їх назад до Поданню.
Завдання Моделі полягає в тому, щоб обробляти окремі завдання, що відносяться до окремих областей додатки або функціоналу. Моделі безпосередньо взаємодіють з базою даних або іншою системою зберігання даних і обробляють бізнес-логіку, яка відноситься до результатів.
Уявлення - це дані, передані контролером і відображаються користувачу.
В цілому, в цьому питанні добре б розбиратися, оскільки зараз MVC використовується багато де і взагалі є дуже хорошим шаблоном дизайну. Навіть більш просунуті системи, які працюють з сховищами і об'єктами, керуються тими ж принципами, як Контролер і Подання. Модель, як правило, просто розділити на кілька компонентів для обробки конкретних завдань, пов'язаних з базами даних, бізнес-логікою і т.д. Шаблон проектування MVC допомагає зрозуміти, що саме використовується в виробництвах в цілому.
Питання з співбесіди №19: Яким чином можна запобігти появі наступного попередження 'Warning: Can not modify header information - headers already sent' (Увага: Не вдається змінити інформацію в заголовку - заголовок вже відправлений) і чому воно з'являється на першому місці?
Нічого не виводьте в браузер до використання коду, який перетворює HTTP-заголовки. Після того, як ви викличте echo або будь-який інший код, який очищає буфер, ви більше не зможете привласнювати «куки» або заголовки. Це також підходить до повідомлень про помилки, тому якщо помилка з'являється до того, як ви використовуєте команду заголовка і INI-директива display_errors встановлена, це також виведе повідомлення про помилку.
Питання №20: Що таке SQL-ін'єкції і які найбільш ефективні методи їх запобігання?
SQL-ін'єкції є методом are a method to зміни a запиту в SQL-операторі, відправленому на сервер бази даних. Цей змінений запит потім може пропускати таку інформацію, як логін \ пароль, і може посприяти хакерам піддати сервер загрозу.
Щоб запобігти ін'єкції SQL необхідно постійно перевіряти і видаляти всі вводяться користувачем дані. У PHP це часто забувається через простоту доступу до $ _GET і $ _POST. а також через неуважність початківців розробників. Але також існує безліч методів, за допомогою яких користувачі можуть маніпулювати змінними, використовуваними в SQL, через файли «cookies» і навіть завантажені файли. Єдиний справжній спосіб захисту - постійне послідовне використання заготовлених операторів.
Не використовуйте застарілі (починаючи з PHP 5.5) mysql_ * функції, а использова PDO, тому що воно дозволяє використовувати сервери, відмінні від MySQL. Допускається також використання mysqli_ * але в наші дні немає особливого сенсу не використовувати PDO, ODBC або DBA. В ідеалі можна використовувати Doctrine або Propel, щоб уникнути написання SQL-запитів всіх разом, а використовувати маппинг, що відноситься до об'єктів, який пов'язує рядки з бази даних з об'єктами вашого застосування.
Питання №21: Що робить наступний код?
Виведе 7. Ведучий нуль в PHP вказує на вісімкове число, тому $ i обчислюється як десяткове число, що дорівнює 14, а не 16.
Питання №22: Чому використовують === замість ==?
Якщо ви хочете перевірити якийсь певний тип, наприклад, ціле число або логічне значення, то === буде робити саме те, що очікується від конкретно набраної команди, в той час як == буде конвертувати дані лише на час і спробує порівняти обидва типу операндів. Тотожний оператор (===) працює швидше, оскільки не доводиться мати справу з перетворенням типів. Особливо при перевірці змінних на істина \ брехня краще уникати == тому 0/1 або інша схожа форма також буде прийнята до уваги.
Питання №23: Що таке PSR?
PSR є набором рекомендацій по стандартам PHP, які спрямовані на стандартизацію загальних аспектів PHP-розробок. Прикладом PSR є PSR-2, який є своєрідним гідом по стилям кодування.
Питання №24: Якому PSR стандарти ви прямуєте? Чому потрібно слідувати стандарту PSR?
Краще дотримуватися PSR, тому що стандарти програмування часто варіюються між розробниками і компаніями. Це може створити деякі проблеми у розробника при перевірці або виправленні коду, написаного іншою людиною. Стандарт PSR дозволяє раціоналізувати очікування від стилю написаного коду, і, відповідно, зменшити ймовірність непорозуміння, а в деяких випадках і синтаксичних помилок.
Питання №25: Чи використовуєте ви Composer? Якщо так, то які переваги ви знайшли в ньому?
Використання Composer'а - це інструмент для управління залежностями. Ви можете оголошувати бібліотеки, з якими працюєте, а Composer займеться їх установкою та оновленням. Ще однією перевагою є послідовний метод управління бібліотеками, з якими ви працюєте, так що ви витратите менше часу на це саме управління, займаючись своїм проектом.
Про що ще можуть запитати під час собередованія по PHP
- Опишіть, як працює успадкування в PHP.
- Що ви знаєте про PHP-FIG? Опишіть його, а також ті PSR, які ви знаєте.
- Які класи ви б створили, щоб побудувати базову систему статусів в Twitter-стилі за допомогою ООП?
- Які фреймворки ви віддаєте перевагу? Чому?
- Що ви думаєте про модульному тестуванні?
- unity