Как я провожу интервью

от автора

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

Интервью состоит из трех частей, занимает 30-60 минут.
1. Рассказ программиста о себе.
2. Короткие вопросы на кругозор.
3. Решение задач

Рассказ программиста о себе.

В первую очередь прошу человек рассказать, как пришел к web-программированию. Когда начал, когда подсел на программирование 🙂
Очень спрашиваю про последнее место-два работы, что человек делал, за что отвечал, что в техническом и организационном плане там делал.

Нужно, чтобы человек расслабился.
Когда-то на этом этапе спрашивал про пять вариантов, почему люки круглые и прочие вопросы, но это давно отмерло, потому что не дает ничего 🙂

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

Короткие вопросы на кругозор.

Web-программирование — это зоопарк технологий, вспоминается анекдот про требования к водителям, если бы они были такие же мощные, как и программисты 🙂

За 10-15 минут нужно понять, а как глубоко человек владеет той или иной технологией, понять уровень его понимания.
Опрашиваю по следующим сферам: СУБД, SQL, алгоритмы, структуры данных, языки, командная строка, ООП, *nix.

Опыт и понимание делю на три уровня — elementary, OK, advanced 🙂

Прежде всего, базы данных. Есть среди вопросов первого типа есть «чем right join отличается от JOIN?», а третьего — «что такое B+-tree и почему они так часто применяются в реализации индексов?».

Очень интересно про ООП. Если вопрос «что такое инкапсуляция, полиморфизм, наследование» это второй уровень, то объяснить, что это такое на деле, зачем нужно, какие метрики архитектуры ухудшает/улучшает рефакторинг с упором на SOLID + DRY + IoC, могут единицы (или не путают рефакторинг с оптимизацией производительности).

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

Конечно, я спрошу про Линукс и обрадуюсь, если человек сидит хотя бы под Ubuntu. Спрошу на деле, как вывести список файлов с «test» в имени с grep (ls | grep «test»), или что такое ls | xargs svn up.

«Но и это еще не все» (С) TV-SHOP 90х

Решение задач

Но как бы красивой не была теория, это все только разогрев перед самой главной частью.
Стараюсь за полчаса поговорить с кандидатом, чтобы он понял, что перед ним не HR-девочка, понять его мотивацию, проговорить моменты по графику и его пожелания по ЗП.

И даю задачи. Я согласен со статьей, которую тут переводили как-то, что настоящий программист определяется умением применять рекурсию и указатели.

Во многом, это сродни эволюции человека (сорри, креационисты, шах и мат — тайна происхождения рибосом разгадана). Говорят, что нас отличает от обезьян умение оперировать в уме сразу 7+-2 элементами, и понимание рекурсии (нужно для заточки зубил, узор, рекурсивно уменьшаясь, позволяет сделать лезвие очень острым и хорошо режущим).

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

Как правило, даю простую задачу и прошу писать код прямо онлайн, безо всяких проверок. В последнее время даю 10-15 минут без меня, если человек переволновался.

И за одну-две задачи становится понятно, каков итог собеседования.

Вопросы про люки — нафиг. Да здравствует рекурсия!

ссылка на оригинал статьи http://habrahabr.ru/post/178157/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *