xeno_by (xeno_by) wrote,
xeno_by
xeno_by

Categories:

Телефонное собеседование с гуглом

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

В итоге поболтали в начале марта. она немножко повпаривала про то, что такое гугл и про то, что подготовить к собеседованию (по большей части это был рестейт известного блогпоста: http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html), после чего по добазарились о телефонном интервью.

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

***

Чел позвонил минута в минуту, в 12:00. Минут 10-15 мы болтали о моем прошлом экспириенсе (это, кстати, большая проблема - связно и кратко рассказать о том, чем ты занимался. если бы я заранее не готовился и не получил неприятный опыт на одном из недавних интервью, то точно бы залажал), потом началось самое интересное - задачки на алгоритмы.

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

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

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

Четвертая задача заключалась в кодировании одной из операций из третьей задачи. Делать это надо было в режиме реального времени в google docs. Началось все хорошо - я набросал структуру данных, проверил в алгоритме краевые условия, упомянул про defensive программирование, различные стратегии работы с ошибками и все дела. И потом неправильно написал алгоритм. Нет, главную идею я выразил правильно, но ошибся в мелочи, причем смог найти ошибку только с третьего раза. Хорошо, что все-таки пофиксил баг, зато потом додумался, как упростить алгоритм, уменьшив количество строчек раза в 1.5-2. Надеюсь, хоть это произвело положительное впечатление.

На этом оказалось, что мы разговариваем уже больше 55 минут, поэтому чел стал закругляться (по регламенту полагается около 45 минут на собеседование). Последовало классическое DYHAQFM, на что я классически ответил, что вопросов нет, но зато собеседование было очень интересным. На этом и разошлись.

***

Выводы:

1) Все было совсем просто, только надо было подготовиться. Так как во время двух недель подготовки я неслабо времени посвятил сортировкам и деревьям, мне было относительно просто. Впрочем, по факту я подготовил и кучу ненужных вещей, например, изучал новинки C# (додумался же сказать Дженни, что я эксперт сишарпа =)), неслабо проштудировал графы и строки (было риальне интересно!), разбирался с map/reduce, вдавался в детали работы континюэйшнов, читал про техники сборки мусора и JIT-компиляции. Наверное, для телефонного интервью это был оверкилл, но зато я поимел кучу фана. Надеюсь, меня пригласят на on-site интервью, где я смогу про все это поговорить. upd. Пригласили, не поговорили (детали ниже).

2) Всю неделю я писал маленькие алгоритмики в LINQPad, т.е. без IDE, без решарпера, без подсветки и без интеллисенса. Это сильно помогло кодировать в гуглодоксах, но, как видите, не спасло от затупов (ну что делать, иногда на меня как нападет затуп, так хоть иди вешайся на 10-15 минут, пока он пройдет - блин, я даже не могу оправдаться, что волновался, ибо нихрена я не волновался). В любом случае, кодирование в блокноте оказалось крайне полезным.

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

upd. Так получилось, что, несмотря на фейл с кодированием задачки, я прошел телефонное интервью, и Дженни прислала приглашение поучаствовать в onsite интервью. На эту тему есть пост в трех частях: первая, вторая и третья.
Tags: google2011
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 5 comments