Как я могу проверить навыки PHP на собеседовании? [закрыто]

58

Моей компании нужно нанять разработчика PHP, но никто не владеет знаниями PHP в моей компании, и нам сложно проверить навыки PHP. Если бы это был разработчик C / Java, я бы попросил его написать быструю реализацию Game of Life, но PHP - это совершенно другой язык.

Я видел этот тест с интересом:

http://vladalexa.com/scripts/php/test/test_php_skill.html

У кого-нибудь еще есть предложения?

Маскарпоне
источник
3
Интересный тест, не затрагивающий SQL-инъекцию, который я бы, конечно, рассмотрел. Я полагаю, что этот тест - хороший способ проверить их способность определить, знакомы ли они с тем, как PHP обрабатывает переменные, и не намного
Бен Брока
6
Что бы вы ни делали, не задавайте вопросов, касающихся написания стандартных имен функций. Имена функций PHP настолько противоречивы.
Крис C
1
Возможный дубликат programmers.stackexchange.com/questions/46274/…
Адам Лир
16
Я бы меньше беспокоился об их настройках PHP и больше, если бы они могли программировать, работать с командой, понимать веб-безопасность и т. Д.
Питер Лорон
12
Если никто из вашей компании не знает PHP хорошо, то лучший способ для вас - воспользоваться услугой тестирования навыков. http://tests4geeks.com/test/php-mysql - мне нравится этот. И затем, если результат будет хорошим, вы можете попросить его написать код PHP. Например, есть студенты и предметы в базе данных. Попросите его написать HTML-форму, где директор редактирует отметки в таблице (учащиеся находятся в левом столбце, предметы находятся в верхнем ряду, знаки находятся на пересечении).
Иосиф

Ответы:

71

Код

  • Попросите кандидата написать код
  • Попросите кандидата прочитать код

Если вы попросите кандидата написать код, убедитесь, что:

  • Код нетривиален, но мал
  • Вы разрешаете доступ к руководству и Интернету

Если вы попросите кандидата прочитать код, убедитесь, что:

  • В коде есть несколько тривиальных ошибок
  • В коде есть несколько нетривиальных ошибок
  • Код работает нормально, но его можно легко оптимизировать

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

Ресурсы

Запросите подробный список ресурсов PHP, которые использует кандидат. Книги, блоги, форумы, журналы и т. Д. Вот как мои нынешние работодатели узнали о StackOverflow .

Если кандидат упоминает StackOverflow или Программистов, вы НЕ должны спрашивать или пытаться узнать их имя пользователя. Если бы они хотели рекламировать свою репутацию, они бы включили ссылку « Карьера 2.0» в свое резюме.

Каркасы

Каждый PHP-разработчик должен знать о самых популярных PHP-фреймворках:

и свободно владеть хотя бы одним из них. Вы можете подготовить несколько примеров кода для каждого и попросить кандидата прочитать и объяснить их после того, как они скажут вам, с каким из них они более знакомы.

Отладка и профилирование

Я всегда чувствовал, что разработчикам PHP не хватает навыков отладки и профилирования (возможно, только с разработчиками PHP, с которыми я работал). Если во время обсуждения вы обнаружите, что кандидат активно использует xdebug , не беспокойтесь об остальной части интервью и просто нанимайте их. ;)

Входная санация

Это важно. Вы можете начать с обсуждения того, почему это важно, а затем спросить о наиболее распространенных методах его достижения. Это обсуждение поможет вам о том, что спросить.

Некоторые намеки:

PHP Snafus

В этом великолепном обсуждении вы можете найти много PHP-снафусов . Если вы проводите собеседование на руководящую должность, вам обязательно следует спросить о некоторых из них. Некоторые примеры:

PHP обрабатывает числовые значения в строках:

"01a4" != "001a4" // true
"01e4" == "001e4" // also true

Действительный код PHP :

System.out.print("hello");

В PHP строка так же хороша, как указатель на функцию:

$x = "foo";
function foo(){ echo "wtf"; }
$x(); # "wtf"   

Модульное тестирование

Нужно ли мне сказать больше?

Заключение

Хороший PHP-разработчик должен сочетать в себе различные навыки и таланты:

  • Хорошее понимание HTTP
  • Хорошее понимание конфигурации Apache (даже если вы используете другой веб-сервер в вашей компании)
  • По крайней мере, базовое понимание JavaScript
  • Отличное понимание HTML / CSS

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

Яннис
источник
22
Хороший ответ в целом, но я не согласен в части «основы» и «базовая производительность». Знаете ли вы определенные рамки или нет, не много говорит о ваших качествах как программиста. Что касается производительности: если вы оптимизируете на этом уровне, вам, вероятно, не стоит использовать PHP в первую очередь. Я делаю выбор между альтернативами, которые вы перечисляете десятки раз в день, но всегда на основе удобочитаемости и функциональности, а не производительности. Правильный ответ на эти вопросы производительности - «это не имеет значения в большинстве случаев».
tdammers
1
@YannisRizos: Хотя это, скорее всего, облегчает интеграцию в команду, вы предполагаете, что в компании ОП они используют одну из этих популярных платформ, но если они этого не сделают, то знание одной из платформ ничего не докажет. Возможно , вы имели в виду эту часть как способ проверить свою способность к работе с в рамках , а не с этими рамками? (Укажи на тот случай: в компании, в которой я работаю, мы используем разработанную внутри компании структуру)
Purefan
2
@Petah Это не имеет никакого смысла вообще, особенно на этапе интервью, и я бы не стал работать в компании, которая просит людей раскрывать такую ​​информацию во время интервью. Все рассуждения о «сокрытии чего-то» извращены, имхо, мне все равно, чтобы мой работодатель знал, как я провожу свое свободное время, и это все. Если я заинтересован в том, чтобы опубликовать мою учетную запись Программистов самостоятельно, это другая история ...
Яннис
1
@Petah Ну, я искренне надеюсь, что будущие работодатели не попытаются узнать мою личность через мои действия программистов (которые хотели бы проводить 25% -35% своего времени со злым нацистским модом;)
Яннис
1
Не согласен с рамочной вещью. Хорошей современной практикой является использование применимых компонентов из фреймворков с использованием требуемого компоновщика, а не использование всей фреймворк. На самом деле, то же самое можно сказать и о мире JS сейчас ...
Джон Хант
44

Тест, на который вы ссылались, интересен, и ответ Янниса Ризоса великолепен, но я думаю, что также важно следующее:

Если вам нужен хороший разработчик, не ищите PHP-разработчика. Ищите хорошего разработчика, который знает PHP. Это означает, что по крайней мере половину интервью вы должны задавать вопросы, которые не имеют ничего общего с синтаксисом PHP или функциями PHP.

Спросите его, что такое MVC, что такое AJAX, как работает HTTP, как работает REST, как работают объединения SQL, какие-то структуры данных, какие-то основы производительности (как вы измеряете, как вы улучшаете), основы тестирования, основы безопасности (XSS, XSRF, инъекции, как вы защищаетесь), базовые знания в области программирования применительно к типичным доменам PHP - сети, сети, преобразованиям данных и т. д.

Если он хорош в этом, перейдите к тому, чтобы попросить его написать какой-нибудь простой код, выберите простое задание, которое не займет много времени - например, поиск слов с наибольшим количеством гласных в строке в тексте, или изменение каждого слова в тексте, или умножение двух матрицы. Вы также можете попросить его реализовать Game of Life на PHP, если хотите :)

Если он пропустит это, то вы можете перейти к более сложным вопросам PHP, но не придавайте этому большого значения. Он может прочитать большую часть этого руководства, и то, что он не может прочитать, он выучит довольно быстро, если будет хорошо. PHP создан, чтобы быть простым, поэтому, если он хороший программист и имеет некоторые практические знания PHP, он, вероятно, сможет наверстать упущенное. Если он знает, как программировать в целом, то научиться программировать на PHP проще, чем наоборот - знание мелочей синтаксиса PHP не важно, если вы не понимаете, для чего предназначены модульные тесты или как избавиться от проблем XSS.

StasM
источник
13

Хотя ответ Янниса Ризоса является хорошим - я знаю, что не прошел бы этот тест, и я мог бы использовать этот ответ в качестве ресурса, чтобы определить, на что следует обратить внимание, чтобы улучшить свои навыки работы с PHP, но я думаю, что вам стоит найти программирование приятель, который знает PHP, чтобы участвовать в процессе собеседования. Все вопросы в предыдущем ответе хороши, но без знания предметной области будет сложно оценить качество ответов.

Тем не менее, в зависимости от того, что вам нужно, как говорили другие, общие возможности программирования и подбора команды, вероятно, важнее, чем знание языка.

кори
источник
5
+1 за I think it would be worth your while to find a programming buddy who knows PHP to sit in on the interview process., отличное предложение.
Яннис