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

Categories: 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: список вопросов дополнил – не все ведь сразу вспомнишь…

This entry was posted on Monday, August 24th, 2009 at 08:00 and is filed under PHP.
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Другие посты на эту тему

117 Responses to “PHP: Собеседование. Сегодня”

  1. Гостевая книга с продуманной архитектурой или в стиле шпагетти.
    Этим и отличается высококлассный программист от хорошего.

  2. Владимир

    Антон, спасибо за вопросы.
    Мне они показали в чем мои пробелы
    А комментарии людей можно разделить на 2 группы
    - те кто хотят развиваться
    - и те кто тупо хочет бобла

  3. kalka

    Какие у Вас есть к нам вопросы?

    Я отвечу на все вопросы. Мой вопрос: зачем мне Ваша компания, если ничему новому и интересному научиться у Вас я не смогу? Единственная причина по которой я бы пошел к Вам работать – это опыт. В чём разница между одним программистом и толпой программистов, когда этот один выходит на уровень толпы? Ни одно Ваше предложение меня не заинтересует, потому что единственное что Вы можете предложить это деньги, а опыта я и сам наберусь. С таким уровнем знаний и даже выше, я с легкостью смогу работать на фрилансе и зарабатывать в 3 раза больше того, что можете предложить Вы.

    вопросы отстой, люди с головой будут работать на себя

    • Интересное предложение насчет выхода программиста на уровень толпы, т.е. для того чтобы выделятся, вы предлагаете быть ниже среднего уровня? О_о

      Насчет опыта – то могу ответить – зачастую на фрилансе берутся за тривиальные задачи, дабы быстрее заработать на накатанных рельсах, проекты же с рисками – обходят стороной, им эти проблемы не нужны – так что опыт фрилансера не сравнить с опытом работы в команде, над действительно интересными проектами…

      • kalka

        “Интересное предложение насчет выхода программиста на уровень толпы, т.е. для того чтобы выделятся, вы предлагаете быть ниже среднего уровня? О_о”
        Нет. Зачем одному монстру сидеть в окружении монстриков?!:) Когда он сам прекрасно справляется с любой задачей.

        “Насчет опыта – то могу ответить – зачастую на фрилансе берутся за тривиальные задачи”
        За тривиальные задачи берутся те, которых Вы не взяли на работу. :))) Армии обиженных и ни черта не знающих джуниоров:)

        “дабы быстрее заработать на накатанных рельсах”
        Только рельсы накатанные через одно замечательное место. На таких рельсах далеко не уедешь:)

        “проекты же с рисками – обходят стороной, им эти проблемы не нужны – так что опыт фрилансера не сравнить с опытом работы в команде, над действительно интересными проектами…”
        Настоящий фрилансер-виртуоз смело берётся за такие проекты и прекрасно справляется с поставленной задачей. На фрилансе достаточно клиентов которые кидают крупные и интересные проекты, и они ищут не компанию, им не интересен опыт работы в команде, им нужен один фрилансер-виртуоз которые реально реализует все их самые извращенные фантазии:))

      • Как бы, есть задачи когда один монстр не может справится с поставленной задачей, т.к. ограничен по времени, а контролировать разрозненную удаленную команду – такой риск взять на душу – нет уж…

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

        Фрилансер-виртуоз – звучит как нечто абстрактное, да и проекты для одного человека – это очень часто поддержка и доработка существующего проекта, а крупные и интересные проекты для одного – это уж совсем сказки…

  4. Спасибо, изложено очень хорошо, как всегда.
    По скольку у меня список вопросов к соискателю, примерно такой же, добавлю пару пунктов которые меня обычно интересуют сверху. Во первых обязательно нужны примеры реальных работ, они говорят о многом. Во вторых надо заставлять писать, код на собеседовании, желательно пару простеньких, но хитрых задач. Можно добавить вопросы про различные способы тестирования приложений, “как вы видете жизненный цикл проекта”, в какой роли вы видете себя в комманде (сразу же будет понятно читал ли человек “мифический человекомесяц”, или чего вроде, это тоже мне говорит о чем то) Вообще, это достаточно класический список вопросов для собеседования людей с опытом не больше 5-ти лет. Иначе вопрос “Какие шаблоны проектирования знаеш?” в лучшем случае вызовет вопрос для решения каких задач? Иначе можно на этом исчерпать собственно все время собеседования и еще пару часов, сверху :). А, почти забыл, на самом деле главный вопрос которого тут нет это “какие еще языки программирования вы знаете?”, вобщем то, если челвовек кроме php и js ничего не знает я его на работу брать не буду, я почему то таких считаю быдлокодерами, пусть со мной хоть 10 раз все не согласятся, другое дело если C++, Java, Delphi.

    • Delphi – это визуальный мастер генерации форм, а не язык. На нем конечно много чего написано, но особо как язык я его бы не выделял.
      Для меня языки программирования это:
      C/C++
      Java
      Perl/Python/PHP/Ruby

      • Да, вобщем-то все те php программисты с которыми я работаю сейчас, при приеме на работу знали в какой-то мере, либо C/C++, либо Java. Pascal, который Delphi, тоже нормально, начинать с него воспитание программиста, достаточно класический способ и у нас и зарубежом, хотя да, подход в использовании его как мастера форм есть и это тоже неплохо, например, есть у меня отличный программист-юзабилист, котрый изначально именно на нем и тренировался, а уже потом начал переносить в веб свой опыт :) Если человек знает системное программирование на perl под линукс, обычно это опытные админы, то я наверное на работу возьму, с этими людьми можно выпить и от них можно многое узнать. Если знает только Python/PHP/Ruby, то пожалуй что нет. Было много негативных примеров. В нестандартных больших проектах, правда, может, если надо делать сайтики путем настройки простых движков, то как раз эти люди и нужны.

      • Я, пожалуй, знаю лишь PHP, т.к. мой уровень Pascal/С/C++/ASM остался на уровне универской программы и, в основном, благополучно забыт за это время, при этом это мне мешает писать код который не назовешь быдлокодом…

    • “мой уровень Pascal/С/C++/ASM остался на уровне универской программы” Так а больше и не надо, хотя это конешно плюс. На самом деле я имел ввиду что знание чего-то, что можно назвать “класическими языками программирования”, которые вобщем-то в университетах всегда в обязательном порядке техническим специальностям и преподаются, и что автоматически говорит о образовании программиста, просто человек может освоить все и самостоятельно. Но формула (php – хотя бы базовое знание Pascal/С/C++/java) давала мне на практике именно быдлокодеров, с кривыми руками, может я и не прав, но реальность такова. Лучший еще вариант был когда человек за полгода год, получал это образование в коллективе, но при этом компания это время теряла деньги и время, а не все могут себе это позволить.

    • Aibulatov Alex

      Я бы спросил про знание языков функционального программирования, потому что они развивают мышление.

Leave a Reply

Copyright © 2007-2010, Anton Shevchuk. Powered by WordPress

MAXCACHE: 0.24MB/0.00035 sec