Pull to refresh

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

PHP *
Interview
В сферу моих профессиональных обязанностей входит проведение собеседования для соискателей на должность PHP разработчика. И дальше речь пойдет о собеседовании…


Два года назад подобный пост вызвал бурное обсуждение как на моё блоге так и на Хабре, я не буду говорить что изменилось, я думаю вы сами это увидите.

Наши HR-ы уже достаточно опытны и поэтому часть вопросов берут на себя:

Почему ушли с предыдущего места работы?
Почему выбрали нашу компанию?
С чего начали изучать программирование?
Почему выбрали PHP?

Ответы на данные вопросы формируют первое впечатление о человеке. Зачастую оно верно…
Далее разговор переходит в техническое русло. Можем начать с основ ООП — наследование, инкапсуляция и полиморфизм, а возможно и пропустим сей шаг.

С какими PHP библиотеками, фреймворками знакомы?

Соискатель должен знать о существовании таких фреймворков как Zend Framework, CakePHP, CodeIgniter или Symfony, и желательно иметь опыт работы с одним из них (список можно расширить — это не так принципиально).

За 4 с лишним лет работы PHP разработчиком я познакомился с тремя из перечисленных фреймворков, и активно использую Zend Framework.
Знание различных фреймворков дает вам понимание и идеи как писать код. Этим путем обязан пройти каждый разработчик. Изучайте и участвуйте в развитии Open Source проектов — это даст вам большой опыт, по сравнении с тем, который вы способны сами получить в аналитическом мышлении. Отвечая на этот вопрос будет уместно рассказать о своих способностях к проектированию и архитектурному мышлению.


С какими API приходилось работать?

Интересуют Google API, AMF PHP, различные payment gateway, Facebook API, Twitter API и т.д.

Этот вопрос очень важный, потому, что это вопрос к вашему опыту интеграции сторонних приложений. Мы, разработчики, очень много времени проводим интегрируя сторонние и внутренние библиотеки с рабочим кодом приложения. Это также относиться к теме умения читать и понимать чужой код. Тут можно расширенно рассказать про свой опыт внедрения различных библиотек, классов или целых продуктов в рабочий код проекта.


Есть ли опыт работы с различными CMS? Опыт работы не как web-мастера, а как программиста...

Думаю компания использует некоторые CMS в своих проектах. Расскажите подробно про ту CMS с которой вы знакомы или пусть даже про свою само-писанную с которой довелось работать.


Работал с PHP 4? Назови различия с 5-ой версией.
Что нового в PHP 5.3?
Типы данных в PHP?

Этот вопрос на добивание, он часто ставит в тупик, если человек отвечает что их восемь, а потом начинает их перечислять, значит он готовился к собеседованию :)

Все ответы есть в PHP мануале, просто RTFM.


Что такое сериализация?
Что самое сложное разрабатывали на PHP?

Этот вопрос может расставить все точки над «i», но не стоит его задавать в самом начале — это пугает…

Второй вопрос очень хорош, и может быть даже решающим. Я бы рассказал здесь про проектирование, архитектуру и применение OOP в своем последнем проекте или в своем самом интересном проекте. Также, добавил бы про высокую оптимизацию приложения и работу с большими массивами данных. А, если вы работали с какими то «экзотическими», но мега-полезными библиотеками, такими как Sphinx Search, Lucene или может с чем то уникальным в вашей компании, то об этом также стоит рассказать.


Какие шаблоны проектирования знаешь? Расскажи в чем соль каждого?
Что есть MVC? Какую роль выполняет каждый из составляющих элементов?

Шаблоны проектирования или design patterns являються не чем иным, как распространенными методами решения типичных задач. Кто внимательно читал книгу «Банды четырех» или «Архитектура корпоративных программных приложений» Фаулера, тот ответит на этот вопрос даже с неким удовольствием.


С какими web-серверами работал? Apache? Nginx? IIS?
Можешь описать как можно подробнее, что происходит между тем, как пользователь ввёл в адресной строке google.com и тем, как браузер показал страницу?
Системы контроля версий? SVN? CVS? Git? Что есть branch/trunk/tags?
Багтрекинг системы?

Некоторые задачи веб разработки решаются путем настройки веб серверов. Поэтому создавая веб сайты, будьте любезны ознакомиться с возможностями веб сервера и протоколом HTTP.
В современной веб разработке без системы контроля версий никак, это не только инструмент слежения за изменениями, это также хороший способ проверить качество кода, путем анализа патча начинающих программистов.


Немного мучаю по БД:
С какими БД работал? Что такое транзакции, хранимые процедуры, триггеры?
Коль работал с MySQL то сможешь назвать различия между версиями 4.1, 5.0, 5.1?
Каковы различия между MyISAM и InnoDB?

Все это есть в мануале MySQL, и как минимум теоретически знания по дополнительным возможностям MySQL у разработчика должны быть. Типов storage engine не так уже и много и знать про характеристики основных двух надо обязательно.
Если вы имеете более 3 лет опыта работы в веб разработке на php, python, perl, то скорее всего вы начинали с mysql 3.23 и по мере эволюции MySQL представляете различия и возможности новых версий. Поэтому этот вопрос не должен вас сбить с ног.


И для полноты знаний web-разработчика естественно не хватает вопросов о HTML, CSS, Javascript:
Ваша субъективная оценка своих знаний по CSS по пятибальной шкале?
Приходилось ли верстать сайт?
Почему CSS это каскадные таблицы стилей?
Что здесь написано? Напишите HTML код к которому будет применен данный стиль.

#my p.sel:first-line, .main li li a:hover + span
{
color:#f00; /* Что это за цвет? */
}


Уметь читать, понимать и писать CSS это разные вещи. Если вы обладаете первыми двумя навыками, этого достаточно, умеет верстать отлично.


Ваша субъективная оценка своих знаний по Javascript'у?
Что самое сложное разрабатывали с использованием Javascript'a?
С какими Javascript фреймворками работали? Какие плагины использовали? Писали ли плагины, виджеты?

Интересуют jQuery/UI, Prototype/Aculo, MooTools/MochaUI, Dojo Toolkit, ExtJs.

Каким образом можно реализовать наследование в Javascript?
Что такое AJAX и как он работает?
Что такое JSON? С JSONP сталкивались?

Знания по Javascript важнее знаний CSS, но они взаимосвязаны и поэтому зная одно и не зная другого, вы не сможете делать полноценные скрипты. Javascript фреймворки просто облегчают вашу жизнь, попробуйте выучить основы хотя бы одного и вам будет уже намного проще с Javascript.


И последний вопрос — Какие у Вас есть к нам вопросы? — интересно узнать что же все-таки интересует соискателя.

Бывает еще задаю вопросы на сообразительность, иль какие не по теме — чтобы сбить с толку (не гуманен я)…

Так всё же, что поменялось? Поменялись требования к соискателям, разработчиков уровня Junior на рынке труда сейчас предостаточно, хочется заполучить более опытные кадры, от которых в наименьшие сроки можно получить отдачу.

Список книг, которые помогут вам в веб разработке (ссылки реферальные):


Вопросы задавал Антон Шевчук, комментировал Ярослав Ворожко
Tags:
Hubs:
Total votes 176: ↑122 and ↓54 +68
Views 23K
Comments Comments 552