PHP: Собеседование. Сегодня // PHP
В сферу моих профессиональных обязаностей входит проведение собеседования для соискателей на должность PHP разработчика. И дальше речь пойдет о собеседовании…
Два года назад подобный пост вызвал бурное обсуждение как на моё блоге так и на Хабре, я не буду говорить что изменилось, я думаю вы сами это увидите.
Наши HR-ы уже достаточно опытны и поэтому часть вопросов берут на себя:
– Почему ушли с предыдущего места работы?
– Почему выбрали нашу компанию?
– С чего начали изучать программирование?
– Почему выбрали PHP?
Ответы на данные вопросы формируют первое впечатление о человеке. Зачастую оно верно…
Далее разговор переходит в техническое русло. Можем начать с основ ООП – наследование, инкапсуляция и полиморфизм, а возможно и пропустим сей шаг.
– С какими PHP библиотеками, фреймворками знакомы?
Соискатель должен знать о существовании таких фреймворков как Zend Framework, CakePHP, CodeIgniter или Symfony, и желательно иметь опыт работы с одним из них (список можно расширить – это не так принципиально).
– С какими API приходилось работать?
Интересуют Google API, AMF PHP, различные payment gateway, Facebook API, Twitter API и т.д.
– Есть ли опыт работы с различными CMS?
Опыт работы не как web-мастера, а как программиста…
– Работал с PHP 4? Назови различия с 5-ой версией.
– Что нового в PHP 5.3?
– Типы данных в PHP?
Этот вопрос на добивание, он часто ставит в тупик, если человек отвечает что их восемь, а потом начинает их перечислять, значит он готовился к собеседованию :)
– Что такое сериализация?
– Что самое сложное разрабатывали на PHP?
Этот вопрос может расставить все точки над “i”, но не стоит его задавать в самом начале – это пугает…
– Какие шаблоны проектирования знаешь? Расскажи в чем соль каждого?
– Что есть MVC? Какую роль выполняет каждый из составляющих элементов?
– С какими web-серверами работал? Apache? Nginx? IIS?
– Можешь описать как можно подробнее, что происходит между тем, как пользователь ввёл в адресной строке http://google.com и тем, как браузер показал страницу?
– Системы контроля версий? SVN? CVS? Git? Что есть branch/trunk/tags?
– Багтрекинг системы?
Немного мучаю по БД:
– С какими БД работал? Что такое транзакции, хранимые процедуры, тригеры?
– Коль работал с MySQL то сможешь назвать различия между версиями 4.1, 5.0, 5.1?
– Каковы различия между MyISAM и InnoDB?
И для полноты знаний web-разработчика естественно не хватает вопросов о HTML, CSS, Javascript:
– Ваша субъективная оценка своих знаний по CSS по пятибальной шкале?
– Приходилось ли верстать сайт?
– Почему CSS это каскадные таблицы стилей?
– Что здесь написано? Напишите HTML код к которому будет применен данный стиль.
#my p.sel:first-line, .main li li a:hover + span { color:#f00; /* Что это за цвет? */ }
– Ваша субъективная оценка своих знаний по Javascript’у?
– Что самое сложное разрабатывали с использованием Javascript’a?
– С какими Javascript фреймворками работали? Какие плагины использовали? Писали ли плагины, виджеты?
Интересуют jQuery/UI, Prototype/Aculo, MooTools/MochaUI, Dojo Toolkit, ExtJs.
– Каким образом можно реализовать наследование в Javascripte?
– Что такое AJAX и как он работает?
– Что такое JSON? С JSONP сталкивались?
И последний вопрос – Какие у Вас есть к нам вопросы? – интересно узнать что же все-таки интересует соискателя.
Бывает еще задаю вопросы на сообразительность, иль какие не по теме – что-бы сбить с толку (не гуманен я)…
Так всё же, что поменялось? Поменялись требования к соискателям, разработчиков уровня Junior на рынке труда сейчас предостаточно, хочется заполучить более опытные кадры, от которых в наименьшие сроки можно получить отдачу
Updated: список вопросов дополнил – не все ведь сразу вспомнишь…