Google стажировка: История Дианы

Всем привет! Меня зовут Диана. Я, как и Женя, учусь на 4-ом курсе ФИВТа МФТИ.

Моя история началась 15 октября, когда мне пришло письмо от рекрутера: “Hello from Google EMEA”, через 2 дня после того, как меня прореферила Лара. Там говорилось, что нужно заполнить анкету и прислать unofficial transcript. Чтобы назначили собеседование, нужно хорошо заполнить анкету о себе и своих интересах. Так как там не всегда понятно, что писать, то я, чтобы хоть что-то написать, неосторожно сказала, что люблю машинное обучение. Также, заполняя анкету и не увидев в preferred locations ни Mountain View, ни Нью-Йорка, я поняла, что значило EMEA и что собеседуюсь я в Европу.

На следующий день после заполнения анкеты мне пришло письмо с просьбой прислать время, когда я свободна, язык программирования для интервью (C++, Python, Java) и как будет проходить интервью: по телефону или в Hangouts. Я выбрала Python и Hangouts. Впрочем, на обоих интервью у меня спрашивали нечто вроде “By the way, in what language would you like to code?”

В ответ рекрутер написала, что со мной свяжутся и назначат собеседование и что обычно она получает feedback в течение 1-2 недель после интервью. Также предложила записаться на Tech Interview Prep Hangouts. Там рекрутер где-то в течение 15 минут рассказывает 10-15 кандидатам, как будет проходить интервью и что будет после него. В принципе, ничего нового.

На следующий день со мной связался координатор, который назначил мне интервью на 2 и 4 ноября. Оба на самое раннее время: 10 утра CET. Вообще интервью в Европе проходят в очень удобное время: с 12 до 19 по Москве. Я успевала поготовиться до поздней ночи и выспаться, и не успевала утомиться и перенервничать.

Как только мне назначили интервью, я вдруг осознала, что все реально, и почувствовала необходимость готовиться. Оставалось 4 дня. Меня успокаивал ответ автора Cracking the Coding Interview на Quora: она готовилась одну ночь. Тут надо сказать, что 1) у меня был некоторый опыт участия в олимпиадах в школе, 2) готовься я подольше, я бы избежала некоторых ошибок, да и просто чувствовала бы себя увереннее.

В первый день моя подруга, уже прошедшая интервью в Google, провела mock interview. Пользу mock interview сложно переоценить, особенно если его хорошо проводят. На нем я многое вспомнила, а также поняла, что а) в олимпиадах списки не используются, а в собеседованиях — очень часто, б) если задачу решать не умеешь, то время идет очень быстро, в) в питоне есть свои особенности написания алгоритмов, которые не будет времени изобретать.

Три дня каждую ночь я заставляла себя решать по одной главе в Cracking the Coding Interview. Писала решение в гугл доке и потом проверяла. Научилась делать там нормальные табы. Еще смотрела, как красиво реализовывать на питоне разные алгоритмы типа сортировок. Немного решала leetcode.com, который посоветовали на Tech Interview Prep Hangouts. Там посоветовали еще какой-то сайт, но, к сожалению, я совсем плохо воспринимаю английские буквы на слух, а лондонские рекрутеры очень быстро говорят. В последний день было еще одно mock interview, на котором я себя чувствовала гораздо более подготовленной.

Настало время первого интервью. Я ждала интервьюера в Hangouts и нервничала. И вот слышу: “Привееееет!”. Наверное, у меня было очень удивленное выражение лица, потому что интервьюер поспешил меня заверить, что он больше ничего не знает.

Будучи не очень сильна в устном английском, я боялась, что не смогу одновременно разговаривать и думать, но все обошлось: это оказалось просто, так как не надо придумывать, что сказать, как на уроках английского. Единственной проблемой было понять на слух названия технологий и продуктов гугла. Доходило до смешного:  — Я работал над Google Chrome. — Это что-то связанное с поиском?

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

Мне дали 2 задачи на бинарные деревья. Одна — совсем простая, другую, состоящую из двух частей, я долго не могла решить. Еще тут меня сбивали отрывочные знания, полученные из наспех прочитанных решений в CTCI по этой теме (эта глава была 4-ой, я не успела прорешать ее). В итоге как-то додумалась. Как-то написала. Обсудили разные структуры данных поиска. В процессе я ошибалась, просто оговариваясь или неправильно поняв и не подумав. Уже в конце мне задали стандартный вопрос по сетям. Я обрадовалась, я хорошо знаю сети на таком уровне. Начала быстро что-то говорить (было уже почти 45 минут). И сразу, после того как интервью закончилось, я поняла, что ужасно ошиблась. Так что очень важно сначала подумать, а потом говорить. Даже если это простой вопрос. Особенно если это простой вопрос.

Все время после интервью я была очень расстроена, ждала письмо с отказом. Ничего не делала, только порешала немного LeetCode вечером перед интервью.

Второе интервью было очень интересным. У интервьюера было хобби — машинное обучение. Началось все с вопроса про один мой “проект”, который был как-то отдаленно связан с машинным обучением. Потом был вопрос про X из машинного обучения: “Знаете ли вы, что такое Х?”, “Напишите, какой бы вы сделали интерфейс X”, “Реализуйте (простой) метод Y в X”. В итоге я запуталась в своей реализации, мы обсудили устно и пошли дальше. После этого была простая задачка на бинпоиск. Когда на часах было уже 43 минуты, я ускорилась в написании, но вместо того, чтобы переходить к вопросам, мне дали еще задачу на сортировку. Я написала простое решение, потом мне помогли додуматься до быстрого. В итоге интервью длилось час, и в конце мне было очень грустно прощаться с интервьюером. Оба интервьюера были очень классные и ответственные, много разговаривали, помогали (правда, это иногда мешало), внимательно следили за тем, что я пишу.

Через три часа мне пришло письмо от рекрутера. Открывая его, я была уверена, что увижу стандартное “Ожидайте результатов через пару недель”, но там было “Оба интервьюера отозвались о вас очень хорошо, мы рады взять вас на host matching”. Я перечитала письмо несколько раз, прежде чем поняла, что там написано.

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

Прошло почти три недели, прежде чем рекрутер написал мне про проект. Вернее сразу два рекрутера про два проекта. Но оказалось, что host matching для кандидатов — процесс последовательный. Интервью мне назначили на следующий день. Я попросила, чтобы его по возможности провели в Hangouts. Когда назначают интервью, говорят только имя хоста и название команды (оно очень общее), поэтому понять, что тебя ждет — нереально, мне так ни разу и не удалось угадать/предположить даже близко. Команда была Ads Quality.

Интервью прошло странно. Я была очень расстроена. Это был open-ended research с непонятным машинным обучением. Это оказался  совершенно не интересный мне проект. Он был запущен буквально вчера. И предназначен только для Америки. Было неизвестно, чем там надо будет заниматься через полгода. И поэтому я совершенно не могла представить, смогу ли я. Я решила отказаться.

Тогда мне назначили второе интервью с Google Calendar через два дня. Оно началось с того, что меня попросили рассказать о себе. Я к этому была не очень готова, получилось плохо. Меня спросили про проекты по машинному обучению. Я такого вопроса совсем не ожидала и не смогла ничего вспомнить. После этого хост потерял ко мне интерес. Проект был довольно интересный (все познается в сравнении!), более понятный и мне было очень страшно, я думала, что если и сейчас не возьмут, то что-нибудь нехорошее произойдет. Поэтому я согласилась. Но хосту я не понравилась. Вместе с отказом рекрутер написала, что со мной хотят провести еще одно интервью. Но оказалось, что интервью было назначено с тем хостом из команды рекламы. Так как это было в пятницу вечером, а собеседование должно было быть в понедельник утром, то мне ничего не оставалось, кроме как ждать, что будет дальше (всегда очень помогало на протяжении всего процесса). К счастью, в назначенное время мне никто не позвонил. Пока все разрешилось, прошло несколько дней. В день, когда меня вернули в host matching, мне написали снова. Интервью назначили через пять дней.

Тут стоит сказать, что изначально я хотела кодить, хотела что-нибудь очень техническое. Я не понимала, как так получалось, что меня собеседовали на проекты с машинным обучением. Ведь я никогда не позиционировала себя как человека, разбирающегося в нем. Что повлияло: резюме, анкета, результаты второго собеседования — я так и не поняла.

Третье интервью было с YouTube. У меня уже не было сомнений, о чем оно будет, только надежды. Сначала мне рассказали про проект, он был очень интересным (и про машинное обучение). Потом меня попросили рассказать про проекты, связанные с машинным обучением: про “проект” из резюме или про что-нибудь еще. Предыдущее интервью не прошло бесследно: я рассказала про два. Постоянно меня заставляли задавать вопросы, поэтому мы многое обсудили. Когда прошло уже 20 минут, и, как обычно, стало не о чем говорить (все предыдущие длились именно двадцать вместо отведенных тридцати), вместо того, чтобы попрощаться, хост сказал: “Раз у нас осталось время, давайте я поспрашиваю вас по машинному обучению”. Все что мне оставалось в этот момент подумать — это что к вопросам про проекты я подготовилась к этому разу, а к вопросам по машинному обучению подготовлюсь к следующему. Мне задали два вопроса на общие концепции, про которые можно говорить бесконечно. В конце интервьюер сказал, что ему главное — посмотреть, как человек думает. Я говорила сумбурно, на втором вопросе совсем запуталась. Так что в конце была очень расстроена. После интервью я тут же написала рекрутеру, что на все согласна, но меня вряд ли возьмут. Мне сказали подождать, так как у хоста еще одно интервью. На следующий день произошло невероятное: меня взяли.

Дальше надо выбрать время стажировки. Правда, начало зафиксировано для каждого города и каждого месяца, а месяц и продолжительность берутся из анкеты. Так что выбор был +- одна неделя в конце. После этого электронно подписывается контракт. Конечно, зарплата и relocation bonus по российским меркам большие, однако Цюрих — самая дорогая деревня самый дорогой город Европы и у меня уже появляются сомнения, хватит ли relocation bonus, чтобы дожить до первой зарплаты.

Оффер я получила 11 декабря. То есть вся история длилась всего 2 месяца. В целом все было очень быстро, и главным тормозом в процессе была я.

Несколько советов тем, кто собирается подаваться:

1. Не стесняйтесь подаваться!  Пишите об учебных проектах, если нет своих. Несколько лет я не подавалась в Google, думая, что недостаточно много знаю, нет нормального проекта, о котором не стыдно было бы рассказать. Так вот, никому не был интересен мой проект, всех интересовало что-то неожиданное.

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

3. Не бойтесь отказов на host matching. На Tech Interview Prep Hangouts рекрутер сказала, что где-то 50% стажеров находят себе проект с первого раза.

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