Saturday, May 10, 2008

Телефонные интервью

напишу кратко про свой опыт.
я в прошлом году прошел примерно 25-30 телефонных интервью, половина из них на английском языке. (писал отчет тут: http://alskor.livejournal.com/3096.html#cutid1 - со времени той статьи я прошел еще штук 5 интервью. может, поиск работы начинает быть моим хобби?).

Итак, набрал достаточно много данных о том, что и как спрашивают. обычно сначала идет короткое интервью с рекрутером или HR. как уже не раз описывалось на этом сайте, HR обычно задают вопросы типа "почему хотите менять работу", "кем хотите быть", и т.п.
некоторые HR проводят "предварительный отсев кандидатов" и задают примитивные технические вопросы. например, "если вы делаете override equals() в Java, то что еще надо override?" смысла вопросов и ответов они не понимают, просто записывают произнесенные кандидатом ответы и сравнивают с правильными. любая попытка рассказать им что-то подробно, почему оно так как есть, а не иначе, вгоняет их в ступор. например, когда пытаешься произвести впечатление и начинаешь рассказывать более подробно, а не просто отвечаешь "метод ляляля". такое собеседование обычно длится 15-20 минут.

Далее, если HR удовлетворили ответы, интонация, "правильное отношение к работе", "правильная причина поиска работы", если HR со своим неоконченным педагогическим образованием какого-нибудь плохого института и с огромным количеством собственных психологических проблем и комплексов, - так вот, если этот HR попытался провести психологический анализ в меру своих способностей (попросту говоря, "девочка поигралась в психолога") и пришел к выводу, что человек достоин перейти на следующую ступень - тогда назначается полноценное Техническое Собеседование.
Примечание: я понимаю, что не все HR такие уж плохие, есть вполне профессиональные, но их, увы, не так много. Как мне показалось, особенно сильна эта проблема у чисто российских компаний (без западных корней). Безусловно, могу ошибаться.

Техническое Собеседование.
Оно длится обычно от 45 минут до 1.5 часов. Там уже можно спрашивать гораздо более глубокие вещи.
На таких интервью задают две основные категории вопросов:
1. проверка знания конкретных фактов
2. проверка способности человека решать задачи

Опишу типичные примеры по каждому пункту:
1. проверка знания конкретных фактов

пример: спрашиваем "а какие есть уровни изоляции транзакций в СУБД?". перечислит человек то, что надо - молодец, ставим плюсик. не перечислит - ставим минусик.
какой смысл спрашивать такого рода вопросы по телефону, я не понимаю. ну разве что чтобы отсеять совсем ленивых. очевидно, что ответить на такого рода вопросы элементарно. достаточно заранее проделать "домашнюю работу": написать шпаргалку по каждой нужной теме. увидительно, но 90% вопросов по темам "SQL", "databases", "Java", "java / swing", J2EE, JSP/Servlet всегда одни и те же.
если вдруг зададут незнакомый вопрос, его можно записать на бумажку, после интервью внимательно изучить и больше на этом вопросе не попадаться.
писать шпаргалку для телефонного интервью я бы порекомендовал даже тем, кто вполне неплохо ориентируется в предмете. например, я считал себя весьма неплохим специалистом, но все равно писал. зачем? потому что иногда задавали вопросы, ответы на которые нормальный человек запоминать нафиг не будет.
пример сейчас не вспомню, давно это было. но что-то было связанное с синтаксисом каких-то операций в JSP-странице. потом подпишу, если вспомню.
незнание таких мелочей с т.з. плохих интервьюеров может закрыть дорогу в нужную компанию.
Мое мнение: незнание отдельных фактов не есть плохо, если только это не переходит все границы и человек не знает того, что ну просто обязан знать. Когда я сам проводил интервью, я тоже спрашивал те глупые вопросы категории "знание мелочей", но старался долго на них не останавливаться. Это скорее простейший индикатор, не наврал ли кандидат в резюме. Пришла ко мне как-то раз женщина на позицию Senior J2EE developer. Сначала спросил, насколько глубоко она знает предмет, какого рода вопросы стоит задавать, насколько плотно работала, и т.п. Уверяет, что все замечательно, плотно работала с J2EE/EJB. Начинаем с "знания мелочей", как-то она нифига не отвечает и потом я постепенно начинаю переходить к более общим вопросам - а мол какие виды EJB Вы использовали? Хм.. Затык. А какие вообще EJB бывают? Затык... А как Вы спроектировали это приложение? Тишина. А какие технологии там вообще использовались? О! Тут женщина вспомнила слово "JSP". Выяснилось, что "плотная работа с J2EE/EJB" означала периодическую мелкую правку чужих JSP-страниц.
Это уже не мелочи, это классическое "дутое резюме" и расчет "на авось". На нужную нам позицию senior/lead J2EE-разработчика она явно не подошла, а на junior J2ee с заметно меньшей зарплатой она не захотела.

Ну да неважно, надеюсь, моя идея понятна:
незнание отдельных фактов не есть плохо, если только это не переходит все границы.

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

Далее есть гораздо более интересная категория вопросов:
2. проверка способности человека решать задачи

Тут я не имею в виду всякие игрушечные головоломки типа "нарисуйте домик", чтобы потом всласть поиздеваться над кандидатом "это был домик для спепых жирафов". я бы не стал давать такого рода задачи: слишком много всевозможных вариантов, когда кандидат может ответить хорошо, но это будет воспринято интервьюером плохо. если кандидат понравился, то ему к этому моменту простят странные ответы на такие вопросы. если не понравился, то любой ответ можно объявить глупым/неверным/непродуманным, немного поменяв условие задачи. короче, на любителя.
Чтобы эта категория вопросов имела смысл, надо спрашивать то, что можно проверить объективно, а не в зависимости от настроения интервьюера.
Например, любимая тема гугла: алгоритмы. Даем задачу и слушаем, как кандидат начинает ее решать. Желательно, чтобы в конце было довольно эффективное и [b]достаточно[/b] правильное решение. Это все вполне можно делать по телефону. Кстати, у меня послезавтра как раз очередное интервью с Гуглом. :) Так что послушаем, что там нынче спрашивают.
Однако далеко не на все позиции нужно хорошее знание алгоритмов. Я не вижу смысла спрашивать про алгоритм поиска кратчайшего пути Дейкстры у человека, который должен кодировать клиент-серверное взаимодействие (а то и вовсе клепать бесконечные веб-сайты). Если он ответит верно, это может говорить только о том, что он недавно закончил ВУЗ. :) Но никак не скажет о том, добавит ли он что-то в команду, или отнимет у нее.
Так что же спрашивать в этой категории? Например, попросить тут же написать короткую программу (у кандидата ведь наверняка есть под носом компьютер), которая бы решала какую-то проблему. Можно тут же организовать совместное редактирование этой программы онлайн через какой-нибудь Google docs или подобные сервисы.
В общем, это долгая тема. Чтобы ее раскрыть более-менее полно, надо потратить немало времени. Займусь этим попозже.
Отмечу только, что даже по телефону можно спросить немало сложных вещей, причем как вопросов 1й, так и 2й категории.

7 comments:

Anonymous said...

как то слабовато тему раскрыл

ald

Anonymous said...

От Алены:
Лешка, ты не поверишь на каком алгоритме у нас отсеивается 80% кандидатов ))))
Рассказываю:

1) Есть таблица кей-валью на вчера
2) Есть аналогичная таблица кей-валью на сегодня
(кей- урл сайта, валью - значение, алгоритм из системы мониторинга контента)

Задача - наиболее оптимально написать алгоритм, который вычленит новые сущности, удаленные сущности и не измененные сущности.
Кстати на реляционке (как оно и есть в реальной жизни) алгоритм можно сделать вообще с 1 циклом. Люди пишут по 3 цикла некоторые.....

ro-man-k said...

Роман:

Уточняю коммент Алены.
Бывает и 4 цикла. А бывает и так, что вообще условие этой задачи кандидат не может понять просто...

В реальности достаточно либо одного цикла, либа трех простых sql запросов.

Реально был поражен количеством людей, идущих на senior java developer и не способных справиться с этим....

ro-man-k said...

Про слепых жирафов.

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

alskor said...

Роман, все-таки с жирафами надо поосторожнее. Если человек сразу нарисует домик без вопросов - это не значит, что он плохой аналитик. Возможно, что он просто не любит усложнять сущности без явной необходимости. :) Сказали домик - пожалуйста. Будут уточнения по задаче - он поправит домик. Потому что некоторым нужен "просто домик". :)
А может он воспринял вопрос про домик как психологический тест. Например, по нарисованному домику, забору, дереву и прочим нескольким вещам можно определить некоторые психологические черты человека.
В общем, слишком неоднозначный это вопрос...

ro-man-k said...

Думаю, что аналитик все равно должен уточнить что от него хотят, что бы он там не воспринял и не подумал. Это ведь его работа - понимать что на уме у не всегда адекватных заказчиков.
Человек сразу рисующий домик, скорее всего также сразу выдаст ТЗ, поняв все по-своему.
Хотя, сам я про домик не спрашиваю, конечно. Сегодня - это вопрос на эрудицию :-)

Anonymous said...

откроите мне глаза на мир, как вашу задачу одним loop-ом решить?

2 loop'a:

Array tableA;
Array tableB;

foreach(Key keyA in tableA.keys)
{
foreach(Key keyB in tableB.keys)
{
if (keyA == keyB)
{
nonchanged.keys.Add(keyA); tableA.keys.Remove(keyA); tableB.keys.Remove(keyB);
}
}
}

oldkeys <= tableA;
newkeys <= tableB;