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

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

Interview

Довольно часто (постоянно) мне приходиться проводить собеседование людей желающих устроитсья в мой отдел на должность “junior PHP developer” и “PHP developer”. И, с завидным постоянством, я и team-lead отдела задаем одни и те же вопросы…

Каждое собеседование начинается с одного и того же вопроса:

– Почему PHP?

И, как ни странно, некоторые умудряются “засыпаться” уже на нем:
– Пробывал язык N – такой сложный, и поэтому решил учить PHP
или еще лучше:
– Решил пока поработать в PHP отделе, а потом перейти в отдел .Net
Но чаще всего слышим один из следующих ответов:
– Делал страничку – понадобилась динамика – выбор пал на PHP
– Кто-то, зачем-то посоветовал
– Преподавали в ВУЗе – только PHP и смог осилить

Далее, приближаемся к программированию, мы пытаемся понять имеет ли собеседуемый хоть какое-нить представление о ООП, о абстракции, наследовании, инкапсуляции и полиморфизме. Ага, кто-то лекции прогуливал в университете ;)

А теперь начинается самое оно:

– Под какую версию PHP писали? В чем различия между четвертой и пятой версиями?
– Какими сторонними библиотеками пользовались?
– Опыт работы с различными CMF/CMS?
– Типы данных в PHP? (их всего 8, не верите – читайте мануал)
– Назови по памяти функции для работы с массивами, строками
– Что такое сериализация?

И далее несколько практических вопросов…

– Что такое Apache? А mod_rewrite?

– Аббревиатура SVN и CVS о чем-нить говорят?

– Багтрекинг системы? BugZilla? JIRA?

Не забываем и о БД:
– Что такое реляционная база данных?
– Нормализация, денормализация
И чуть-чуть практики (связь многое-ко-многим в MySQL, каталог товаров произвольной вложенности)

HTML + CSS + W3C (знания HTML на базовом уровне считаю обязательным):
– Нарисуй-ка простенькую форму для отправки файла
– CSS знаешь? В чем разница между записью #my и .my?
– Расшифруй вот такую запись в CSS … (и далее что-то невообразимое, но вполне читабельное, задаю не часто, если только испытуемый заявляет что знает CSS)
– Что такое стандарты W3C?

Linux:
– С *nix знаком?
– Apache и PHP сетапил?

Сетевые технологии и не только:

– Знаешь что такое уровни модели OSI? Назови хотя бы их количество. (это вопрос на “пять”)
– По какому протоколу осуществляется передача данных в сети Интернет?
– Расскажи что поисходит, когда в строке браузера набираешь адрес и нажимаешь Enter?

Иностранные языки:
Тут особо не мучаем, если же в резюме указан уровень знания английского как “хорошо” – вот тогда нам на помощь спешит COTOHA – лучше правдиво пишите – уровень университета или начальной школы… ;)

Бывает, озадачиваем каким-нить тестом на сообразительность (поменяй-ка друг значение переменных A и B местами не используя третью переменную)

Вот подумываем написать тест, который однозначно говорил бы о уровне знаний человека (brainbench для новичков не подходит), если у кого есть что предложить – пишите в комментариях…

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