Стажировка в Google — Часть 1

:

Не так давно я писала о том, как готовиться к интервью в больших компаниях. Тогда же я пообещала JTOne написать о том, как я применяла советы из статьи на практике и что из этого получилось. И вот, как говорится, не прошло и года… :)

Disclaimer: Все написанное основано на моем личном опыте и все сделанные мною выводы субъективны и могут отличаться от выводов других людей.

Вместо вступления

Прошлым летом я была на четырехмесячной стажировке в Google в Швейцарии. А этим летом меня ждет трехмесячная стажировка в Googleplex в Калифорнии. Поскольку информации у меня много, я решила разделить свой рассказ на две части. В этой части я опишу как я попала на стажировку, как проходили интервью и как долго процесс занял по времени. А в следующей — что, собственно, было во время самой стажировки, что мне там понравилось, что не понравилось и вообще что я обо всем это думаю. Всем интересующимся — добро пожаловать под хабракат.


Как все начиналось

Собственно, Google регулярно публикует на странице с открытыми позициями для желающих устроиться на гуглоработу, и позиции для интернов. Перечень требований к потенциальным интернам вполне себе вменяемый — надо уметь программировать, желательно на чем-то вроде С++ или Java (там еще пишут, что надо иметь extensive experience — но, опуская детали, могу сказать, что не обязательно быть сениором и знаний на уровне курса С++ нормального университета вполне достаточно), представлять себе кто такой Unix (перед первой стажировкой, кстати, я себе это представляла весьма условно), хорошо разбираться в алгоритмах и структурах данных, быть студентом (или аспирантом) и быть младше 32 лет. Еще важно прилично знать английский язык, так как все интервью и сама стажировка проходят на английском.

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

Для тех, кто не знаком с системой реферинга в больших компаниях — фактически это что-то вроде рекомендации от работника компании. Обычная процедура, которая основывается на мысли «Классные люди, которые у нас работают, наверняка знают других классных людей, которых могут нам посоветовать». Это не дает никаких поблажек на интервью и вообще никаких поблажек в принципе, но значительно увеличивает шансы на это самое интервью попасть. Что, в случае больших компаний вроде Google, очень немаловажно.

Впрочем, многие из интернов на той же летней стажировке посылали свое резюме обычным путем через сайт — так что, этот тоже вполне себе вариант.

Что было дальше

А дальше мне написала менеджер по персоналу (которая recruiter, она же рекрутерша), которая как раз отвечала за набор студентов на стажировку — стандартное, но в то же время приятное письмо о том, как они рады, что я решила у них постажироваться и что она хотела бы узнать обо мне побольше и поэтому она бы с удовольствием мне позвонила.
Мы договорились о времени звонка и во время разговора (минут 15) побеседовали на тему, чем мне инетересен Google и чем бы я там хотела заниматься. Потом она рассказала как проходит процесс интервьюирования и когда примерно я буду знать результат. Фактически это было «интервью на вменяемость» — проверка на то, говорю ли я по-английски и умею ли связно формулировать мысли. Также во время этого разговора меня ввели в курс дела — рассказали сколько будет интервью, что это будут за интервью и когда будет результат.

Интервью

Сам процесс состоит из двух или трех технических интервью, которые проходят по телефону. В наличии может быть что-то вроде googledocs, который доступен одновременно кандидату и интервьюеру (там я писала код решения) — но документ был далеко не всегда (иногда интервьюер просто забывал его создать), и где-то половина моих интервью прошла так, что я просто сказала что-то вроде «Тут мы создадим STL map и будем писать в первое поле символы, а во второе числа. А в конце посмотрим что у нас там получилось». И этого было достаточно.

Сами интервью довольно несложные (или это мне везло с вопросами :), особенно если перед ним прорешать (или продумать как решать) штук 200-300 типовых задач на всякое-разное с графами, строками, массивами и деревьями. К сожалению, я не могу рассказать о конкретных вопросах, которые мне задавали — но в основе своей это были задачи на «найти что-то» в массивах или строках, нагенерировать все возможные массивы или строки с каким-то свойством (backtracking), «найти что-то» в графе или дереве. Очень желательно предложить несколько вариантов (например, медленный перебором, побыстрее «а давайте сначала отсортируем» и самый быстрый «а вот можно еще захешировать»). Также очень важно уметь оценить временную сложность алгоритма. И потом еще написать красивый код решения в googledocs.

Помимо этого мне задавали несложные вопросы о языке программирования, на котором я писала (на уровне «чем интерфейс отличается от абстрактного класса»), вопросы о тестировании чего-нибудь (с ответом вроде «попробуем правильный ввод, неправильный ввод, null, короткий ввод, длинный ввод»), вопросы на тему операционных систем и железа (Из запомнившегося — интервьюер заметил, что я когда-то работала в компании Intel, но не обратил внимания, что на позиции «Менеджер по маркетингу» — и как следует меня протряс на тему «Архитектура процессора и машинный код». Которая, к счастью, является моей второй специализацией в университете :).

Само интервью проходит в достаточно свободной форме — интервьюеру в первую очередь интересно как кандидат думает, а не что он знает. Поэтому (правильный) ответ «Я не знаю точного ответа, но по логике вещей должно быть так и так» может в итоге оказаться даже лучше, чем сразу правильный ответ, который кандидат знает изначально. Кстати, у некоторых интервьюеров есть план интервью, а некоторые придумывают одну задачу вроде «А как бы вы делали Google search?» и просто беседуют все 45-50 минут с кандидатом на эту тему (чтобы проверить кругозор, может, услышать заветное «distributed computing» — каждому интервьюру интересно узнать о кандидате что-то свое, типового интервью не существует). Естественно, не ожидая, что кандидат изложит во всех подробностях то, что 10 лет придумывали все гуглеры :).

После интервью интервьюер пишет в относительно свободной форме свое впечатление о кандидате + какие вопросы он задавал и что на это отвечал кандидат, и посылает свой отзыв рекрутеру. Вроде бы он еще ставит оценку от 1 до 40, где 40 — это «лучше не бывает». Стоит отметить, что эта оценка довольно субъективна, на уровне «кандидат (не) понравился — (не) произвел впечатление — (не) зацепил — (не) приятно удивил».

Поэтому интервью как таковое — оно не столько об «ответил правильно на все вопросы» (хотя это тоже немаловажно), сколько о восприятии кандидата в целом. Тут очень важно еще и уметь дослушать, если что-то непонятно, то вежливо переспросить и, даже если вы на 110% правы — не ругаться с интервьюером, а сохранять спокойствие и попытаться найти компромисс мнений. Ведь, в конечном итоге, интервьюер отвечает себе на один-единственный вопрос — «Хотел бы я работать с этим человеком 3-4 месяца в одной команде?» и без ответа «Скорее всего да» хорошую оценку он вряд ли поставит.

Еще следует отметить, что с интервьюером может банально не повезти. Поскольку интервью проводят обычные программисты Google и не все могут это дело любить, то может оказаться, что кому-то просто не хочется в 10й раз под неубедительной отмазкой отказывать рекрутеру прособеседовать кандидата. И его раздражение может отразиться на интервью и на оценке кандидата. Или может случиться, что кому-то принципиально важно чтобы кандидат мог среди ночи написать вставку/удаление элемента в красно-черное дерево за 5 минут и если он не сможет этого сделать (вот я, например, не могу — мне надо как минимум подумать) то все, «таких не берут в космонавты». Или у него первое в жизни интервью и он вообще не знает как оценивать кандидата, а автоматически сравнивает его с собой (а не с другими кандидатами). Лично мне всегда везло, но я слышала пару историй об очень сюрреалистичных интервью от знакомых, которые тоже проходили телефонное собеседование.

После интервью

Интервью могут быть в один день — сразу одно за другим (так было в США). А могут сначала одно, а потом, если у кандидата по первому отзыв хороший, где-то через неделю второе (так было в Европе). В любом случае, где-то через неделю я получила email, в котором было написано «Вы очень классная и мы переходим к следующему шагу» (как вариант, вместо этого там могло быть написано «Вы очень классная, но сейчас у нас нет для вас подходящей позиции»).

Следующий шаг — это, собственно, поиск команды, в которой будет стажироваться интерн. Обычно интерны указывают чем бы они хотели заниматься (на уровне backend/frontend/low level+hardware) и в каких языках они хотят программировать. Все это учитывается как пожелания, но не является гарантией чего-либо — например, я указывала желаемый язык Java, а на стажировке писала на JavaScript, верстала HTML страницы (о, отладка стилей под IE 6, я тебя никогда не забуду!) и рисовала варианты дизайна в Photoshop. Моя ошибка заключалась в том, что я была так счастлива от самого факта, что меня взяли на стажировку, что не уточнила, действительно ли я буду заниматься тем, что я указала в пожеланиях. Я сделала выводы из своих ошибок, и моя вторая стажировка уже точно будет соответствовать моим пожеланиям.

Команда находится исходя из пожеланий и возможностей будущего интерна. То есть, если у него в пожеланиях указано «Хочу препарировать ядро Линукса», а в опыте есть только написание веб-приложений в PHP, то, скорее всего, никого препарировать он в итоге не будет. А будет писать frontend :).

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

Последние штрихи

Последний шаг — это составление самого предложения: от когда до когда будет проходить стажировка, в каком офисе, какая будет зарплата (отмечу, что это всегда достаточно, чтобы покрыть все расходы на стажировку включая переезд), сколько часов в неделю надо будет работать (обычно это полная ставка) и прочие детали. После того, как рекрутер составит предложение стажировки, его должен заверить какой-то высокопоставленный менеджер (я думаю, что это просто формальность — обычно у менеджера нет причин отказать кандидату) и еще где-то через неделю-две кандидат получает долгожданное письмо «Congratulations! ...». Весь процесс занимает — с момента первого контакта до момента поздравительного письма — где-то месяца два.

UPD: И для тех, кому интересно, но лень искать, по наводке mraleph www.google.com/jobs/students/ и www.google.com/jobs/students/emea/

Если у кого-то есть вопросы, про которые я не написала — отвечу с удовольствием :).

PS. Часть 2