Антон Шевчук // Web-разработчик

PHP: Собеседование. Сегодня // PHP

Interview

В сферу моих профессиональных обязаностей входит проведение собеседования для соискателей на должность 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: список вопросов дополнил – не все ведь сразу вспомнишь…

© Антон Шевчук 2007-2012