Хочу работать в Google: История Евгения
|Всем привет, меня зовут Женя. Я учусь на 4 курсе Физтеха, ФИВТ. Начиная со второго курса я подавался на стажировки и в процессе этого успел набить всевозможные шишки.
1) Программированием я начал заниматься еще до универа, но познакомился с алгоритмами только на Физтехе (попав сразу в продвинутый поток по программированию). В итоге я решил попробовать податься на стажировку уже после первого курса. В то время я не знал ни про сайт Ларисы, ни про другие ресурсы с советами по резюме, собеседованиям и стажировкам. Криво сделал резюме и подал на стажировку в Твиттер через сайт. Естественно, через пару недель мне пришел отказ и пожелание попробовать в следующем году. За год я нашел сайт Ларисы, нашел книгу Лакмана и понял насколько я был не прав =). Отсюда мораль №1: делайте хорошее информативное резюме. Например, о нем написано тут.
2) В следующем году я спохватился искать стажировки только в начале января (до этого были другие планы). Срочно стал рассылать резюме, искать реффералов и думать куда бы успеть податься. В итоге было подано в 40 компаний через сайт, примерно в 3-4 через реффералов. На 40 поданных через сайт резюме пришло примерно 12 ответов, все с отказами. На все резюме через реффералов были ответы – из них 2 отказа и одно интервью-phone screen в Майкрософт, который потом отказал. Отсюда мораль №2: если ты студент из СНГ, то подаваться нужно в сентябре-октябре, чтобы иметь шансы на стажировку (хотя здесь говорят, что можно и в феврале). Также процесс будет быстрее, если подаваться через рефферала.
3) В текущем году я начал заниматься машинным обучением и было желание попасть на Data Scientist Intern, но малый опыт в этой сфере сыграли свою роль и везде был отказ. Поэтому я решил податься на Software Engineer Intern. Подавался через реффералов в Майкрософт, Амазон, Гугл и Фейсбук. В еще примерно 5 компаний подавался через сайт. Фейсбук сказал, что не берет студентов-иностранцев в этом году. В Майкрософте было телефонное интервью, которое было успешно завалено (собеседование было по телефону, звонок судя по всему прокидывался через скайп и качество было ужасным). С Амазоном получилось совсем странно – они сначала хотели брать студентов СНГ, но потом сказали, что только на полугодовую стажировку и не понятно будут ли вообще места.
4) В итоге остался один только Гугл. Было назначено два телефонных интервью (в один день, подряд). В назначенный день я приготовился и стал ждать звонка, но его так и не было. Выяснилось, что интервьювер забыл про меня =). В срочном порядке интервью было перенесено на тот же день, на три часа позже. Затем было второе интервью. Первой ошибкой было то, что я выбрал собеседование по телефону. Интервьюера было очень плохо слышно (походу они пробрасывают звонок по Hangout и качество очень портится). Поэтому мораль №3: выбирайте интервью по Hangout\Skype и если качество связи уж очень плохое – сообщите интервьюеру. Интервью было разбито на две части – сначала задача «Напишите быстро код и протестируйте его». В задаче я запутался, пока тестировал – нашел еще 10 багов и при исправлении их я внес еще столько же. Второй задачей было спроектировать сервис с точки зрения высокой нагрузки и отказоустойчивости. Моя вера в себя была подорвана после неудачи с первой задачей, поэтому на вторую задачу я ответил тоже что-то невнятное. В целом, я считал, что собеседование провалено. Следующее собеседование (вместо пропущенного) было в тот же день. Интервьюер снова опоздал =). Было дано две задачки на графы и написание кода, с ними я быстро расправился и собеседование было успешно завершено.
5) После этих собеседований я не знал, чего ожидать и был очень удивлен тем, что через пару дней пришло письмо от рекрутера в духе: «Мы хотим устроить еще одно интервью, чтобы собрать больше информации о твоих умениях и опыте». Следующее собеседование было через 2 недели, меня поспрашивали о Питоне и дали задачку опять же на графы, которая была успешно реализована. Через три-четыре недели после этого пришло письмо о том, что «your offer has been approved», чему я удивился, так как у меня еще не было даже хост-интервью. Как я потом понял – некоторым людям они сначала предлагают оффер, а потом подбирают проект. То есть человек гарантированно получает проект, но они не гарантируют, что все пожелания стажера будут учтены.
6) В целом, у меня сложились следующие мысли:
Важно иметь хорошее информативное резюме: в первую очередь нужно рассказать о своем опыте, проектах (обязательно указать что ты сделал в проекте) и различных соревнованиях\олимпиадах.
В собеседованиях важно (по важности):
- Умение рассуждать в слух и донести до собеседника твой ход мыслей
- Хорошее знание языка, на котором пишешь (лучше повторить и владеть уверенно на собеседовании)
- Тестирование кода
- Знание базовых алгоритмов и структур данных (стек, очередь, DFS, BFS – не обязательно знать тонкости красно-черных деревьев)
- Проектирование больших систем (хрестоматийный вопрос: как бы вы спроектировали Google Search)
Большим открытием для меня было, что не обязательно решить задачу на собеседовании самым оптимальным способом. Гораздо лучше рассказать и реализовать решение за O(N^2) и рассказать, что «вот здесь плохо, долго и можно реализовать быстрее, но я сходу не знаю как», чем тупить 10 минут и ничего не говорить вслух и в итоге написать за O(N). Также важно после написания кода попросить немного времени и протестировать вслух на паре примеров. Это позволит найти опечатки\баги в коде и позволит интервьюеру лучше понять код и ход мыслей.
Спасибо за внимание, задавайте вопросы – я отвечу =)