PHP: Собеседование // PHP
Довольно часто (постоянно) мне приходиться проводить собеседование людей желающих устроитсья в мой отдел на должность “junior PHP developer” и “PHP developer”. И, с завидным постоянством, я и team-lead отдела задаем одни и те же вопросы…
Каждое собеседование начинается с одного и того же вопроса:
– Почему PHP?
И, как ни странно, некоторые умудряются “засыпаться” уже на нем:
– Пробывал язык N – такой сложный, и поэтому решил учить PHP
или еще лучше:
– Решил пока поработать в PHP отделе, а потом перейти в отдел .Net
Но чаще всего слышим один из следующих ответов:
– Делал страничку – понадобилась динамика – выбор пал на PHP
– Кто-то, зачем-то посоветовал
– Преподавали в ВУЗе – только PHP и смог осилить
Далее, приближаемся к программированию, мы пытаемся понять имеет ли собеседуемый хоть какое-нить представление о ООП, о абстракции, наследовании, инкапсуляции и полиморфизме. Ага, кто-то лекции прогуливал в университете ;)
А теперь начинается самое оно:
– Под какую версию PHP писали? В чем различия между четвертой и пятой версиями?
– Какими сторонними библиотеками пользовались?
– Опыт работы с различными CMF/CMS?
– Типы данных в PHP? (их всего 8, не верите – читайте мануал)
– Назови по памяти функции для работы с массивами, строками
– Что такое сериализация?
И далее несколько практических вопросов…
– Что такое Apache? А mod_rewrite?
– Аббревиатура SVN и CVS о чем-нить говорят?
– Багтрекинг системы? BugZilla? JIRA?
Не забываем и о БД:
– Что такое реляционная база данных?
– Нормализация, денормализация
И чуть-чуть практики (связь многое-ко-многим в MySQL, каталог товаров произвольной вложенности)
HTML + CSS + W3C (знания HTML на базовом уровне считаю обязательным):
– Нарисуй-ка простенькую форму для отправки файла
– CSS знаешь? В чем разница между записью #my и .my?
– Расшифруй вот такую запись в CSS … (и далее что-то невообразимое, но вполне читабельное, задаю не часто, если только испытуемый заявляет что знает CSS)
– Что такое стандарты W3C?
Linux:
– С *nix знаком?
– Apache и PHP сетапил?
Сетевые технологии и не только:
– Знаешь что такое уровни модели OSI? Назови хотя бы их количество. (это вопрос на “пять”)
– По какому протоколу осуществляется передача данных в сети Интернет?
– Расскажи что поисходит, когда в строке браузера набираешь адрес и нажимаешь Enter?
Иностранные языки:
Тут особо не мучаем, если же в резюме указан уровень знания английского как “хорошо” – вот тогда нам на помощь спешит COTOHA – лучше правдиво пишите – уровень университета или начальной школы… ;)
Бывает, озадачиваем каким-нить тестом на сообразительность (поменяй-ка друг значение переменных A и B местами не используя третью переменную)
Вот подумываем написать тест, который однозначно говорил бы о уровне знаний человека (brainbench для новичков не подходит), если у кого есть что предложить – пишите в комментариях…