- Как устроиться на работу в Google
- Я работаю в Google. О том, почему устроиться в компанию мечты можно без образования
- Абзал Сереков, 24 года, родной город — Кызылорда, software engineer
- Здесь работа оценивается не по часам, а по эффективности и значимости вклада
- Лариса Аркавава, 34 года, родной город — Минск, senior software engineer
- У Google много направлений, и работа непосредственно над поисковиком — не самое крупное
- Вся философия компании построена на культуре уважения друг к другу
- Шерзат Айтбаев, 23 года, родной город — Алматы, software engineer
- Будучи школьником, я мечтал об этом, а приняв мечту в качестве цели, достиг ее
- В Google негативно относятся к любого рода дискриминации, будь то дискриминация по возрасту, полу, национальности, расе, ориентации
- Как получить работу в Google
- Как подготовиться к собеседованию в Google и не пройти его. Дважды
- Как все начиналось
- Подготовка к первому заходу
- Первый заход
- Подготовка ко второму заходу
- Книги и статьи
- Алгоритмические задачи
- Просмотр видео
- Прохождение курсов
- Изучить опыт других людей
- Второй заход
- Интервью номер раз
- Интервью номер два
- Интервью номер три
- Интервью номер четыре
- Интервью номер пять
- Заключение
Как устроиться на работу в Google
Работать где-то мечтают не все. Работать в компании Google мечтают многие, кто решил связать свою жизнь с IT.
Google — компания-гигант, одна из крупнейших IT-корпораций. Сотрудники такой компании нужны постоянно (новые области, текучка кадров).
Всё, что написано ниже, основано на личном опыте, а так же опыте тех людей, которым я могу доверять.
Шаг 1 — резюме.
В компании Google к резюме особое отношение. Получая миллионы заявок в год, компания выбирает несколько сотен сотрудников. Именно поэтому отличное резюме — первый шаг к работе мечты.
Что писать в резюме нужно обязательно:
Шаг 2 — поиск вакансий
После того, как вы написали отличное резюме для компании, стоит заняться поиском вакансий, на которые вы будете претендовать. Для этого стоит посетить google.com/jobs.
Выбор вы можете осуществить как по месту будущей работы (будут показаны все вакансии офиса), так и по ключевым словам (например, если вы хотите работы с русскоговорящей аудиторией — ищите russian).
В каждой вакансии существуют минимальные требования к кандидатам. Обратите на них внимание — если вы не подходите хотя бы по одному пункту, то стоит задуматься. Чем больше вы соответствуете этому блоку, тем больше шансов получить приглашение на собеседование.
В компании Google существует так же срочная потребность в кандидатах. Для таких вакансий в поиск нужно вбить «For immediate consideration». Вам отобразятся все «горящие» вакансии. Высылать своё резюме необходимо будет на e-mail, который так же указан на странице. Обратите внимание, что написано в строке Important.
Если вы укажете тему письма неверно, письмо будет отклонено. К сожалению, в компании работают люди, а не роботы, поэтому случаются накладки, которые медленно, но исправляются (я так отправлял на одну вакансию 6 раз резюме, с точно указанной темой, а оно отклонялось; через 3 недели починили).
Шаг 3 — отправка резюме
Тут всё просто — заполняете форму на сайте, и ждёте. Напишите обязательно CV, его и вправду читают сотрудники, которые потом будут проводить вам первое собеседование.
Если вы отправляете резюме на электронный адрес (горящая вакансия), то отправлять его рекомендуется в html.
Здесь есть небольшой хинт, который может повлиять на решение рекрутера. Хинт называется «отправка резюме сотрудником Google». Где взять или познакомиться с таким человеком? В социальных сетях (LinkedIn, Профессионалы). Если сможете договориться и подружиться, то при успешном исходе вы получите работу, а советчик — денежное поощрение.
Шаг 4 — подготовка к первому собеседованию
Если все три предыдущих шага были выполнены хорошо, то через некоторое время (у меня это было 1-3 дня) вам придёт письмо от рекрутера, в котором вам укажут предварительное время вашего собеседования (скрининг), а так же возможные темы для обсуждения. Не поленитесь прочитать так же о компании и её продуктах.
Шаг 5 — телефонное интервью
В телефонном интервью будут задавать простые вопросы, в основном на базовые понятия и мотивацию. Впрочем, эти вопросы задают 90% рекрутеров при первом этапе собеседований. Спрашивают ожидания, про предыдущие работы. Не поленитесь, в интернете есть подборки различных вопросов на разные вакансии, изучите их.
Шаг 6 — техническое интервью
Если рекрутер посчитал, что вы можете подойти для работы в компании — вам напишут письмо, в котором поздравят с прохождением на следующий этап, назначат дату.
О чём говорят на тех. интервью — вообще-то тайна, но некоторые люди, которые не прошли его, и не расслышали про NDA, выкладывают вопросы. Для разных вакансий они разные, в основном — на знание предметной области, но могут быть и на логику и соображалку.
Если шаг 6 пройден, и вы всё еще устраиваете компанию, вас пригласят на интервью в офис. При этом вам оплатят приезд в офис компании (либо локальный, либо в тот, где вы планируете работать). Интервью проводят 4-5 сотрудника Google, которые выясняют ваши компетенции. По вашему желанию вы можете встретиться с тем человеком, который рекомендовал вас на работу.
Шаг 8 — получение Job offer
Если все 5 кандидатов отозвались о вас, как об отличном работнике с достойным уровнем компетенции, компания предлагает вам работу. Детали Job offer, как и вопросы интервью защищены NDA. Но при переезде компания предлагает приятные компенсационные пакеты, за условия которых можно торговаться.
Общая информация, которая может быть полезна
Подумайте, ведь всего 8 шагов отделяют вас от работы мечты миллионов. Возможно, именно вас компании не хватает! Почему бы не попробовать?
Я работаю в Google. О том, почему устроиться в компанию мечты можно без образования
Абзал Сереков, 24 года, родной город — Кызылорда, software engineer
Место работы: Лондон, Великобритания
Я выбрал Google в качестве места работы, потому что это компания, которая имеет несколько миллиардов пользователей и это количество только растет.
Компания дает уникальную возможность создавать полезные проекты, улучшать жизнь, делать все процессы качественнее. Google считается одной из лучших компаний с технологической точки зрения. Тут работают одни из самых лучших инженеров в мире. Работая с ними, у меня есть возможность получать знания и опыт.
Также мне нравится, что тут нет конкретного графика работы — необязательно приходить в восемь утра и уходить в пять вечера. Здесь работа оценивается не по часам, а по эффективности и значимости вклада.
Здесь работа оценивается не по часам, а по эффективности и значимости вклада
Чтобы попасть на позицию software engineer, нужно изучать computer science, но я учился по специальности «робототехника». Напрямую образование мне не понадобилось. На самом деле, если занимаешься программированием в свободное время, то можно подавать резюме в Google. Необязательно иметь даже техническое образование.
Когда я пришел в компанию, мне дали список технологий, которые используются в Google и которые мне приходится использовать каждый день. Я прошелся по ним, изучил, настроил программу, где теперь каждый день пишу код.
Время от времени у нас проходят «тренировки». Под «тренировками» я подразумеваю мероприятия на различные темы вроде «Что такое базы данных?». Участвовать в них могут не только начинающие, но и все те, кто работает в Google десять лет и больше.
Также у нас был noogler orientation. Его проходят все, кто начинает работать в Google. Noogler — как бы new googler. Проходил он в главном офисе в Маунтин-Вью, в Калифорнии. В течение двух недель проходили различные лекции, нас знакомили с культурой компании, лайфхаками. Мы знакомились со многими «гуглерами» из других стран, это интересно.
О работе и обязанностях
Я работаю software engineer в Google Play. Наша команда занимается публикацией и доставлением приложения от разработчика до пользователя. Я занимаюсь инфраструктурой приложения Google Play: процесс установки, скачивания.
Вначале было тяжело, я многого не знал. На встречах почти ничего не понимал. Это ожидаемо для nooglerов, и со временем человек учится, узнает больше, работает автономно.
Я ощутил, что мне нужно знать глубины языка Java, на котором я не писал ранее. Также нужно знать, как работает Linux kernel. Я читаю книги и почти сразу применяю то, что изучил.
В работе в компании Google всегда к месту дружелюбие, ответственность, умение расставлять приоритеты и постоянно расти, развиваться.
Карьерный рост в компании определяется по уровню — с третьего до одиннадцатого. Сейчас я на третьем уровне. Уровень определяется влиянием, важностью проектов и тем, насколько ты автономен.
Пока конкретных личных планов нет, все локально. Я вижу смысл подняться до четвертого уровня.
Лариса Аркавава, 34 года, родной город — Минск, senior software engineer
Место работы: Маунтин-Вью, Калифорния, США
До того как прийти на работу, я два раза стажировалась в Google — в 2008 и в 2009 году. Стажировка подразумевает собой работу над проектом в течение трех-четырех месяцев. При этом стажер закреплен под конкретным сотрудником, которого называют «хост». Он помогает понять технологию и решить поставленную задачу. Это временное явление. Стажеру нужно окончить университет, чтобы потом он мог прийти на интервью. После этого можно рассчитывать на работу.
Чтобы устроиться на позицию программиста, нужно отучиться на программиста. Неважно, где ты учился — в Гарварде или в обычном университете. Всех ожидает обучение.
После второй стажировки мне предложили работать на полную ставку. И поскольку компания Google в те времена была мечтой программистов, я не думала и сразу согласилась поехать работать и жить в Штаты.
О работе и обязанностях
Я работаю программистом. В мои обязанности входит написание кодов, запуск проектов, создание дизайна проектов. Обязанности не особо сильно меняются со временем. Однако чем выше позиция сотрудника, тем больше административных заданий он имеет.
У Google много направлений, и работа непосредственно над поисковиком — не самое крупное
У Google много направлений, и работа непосредственно над поисковиком — не самое крупное. Есть еще YouTube, Карты, Реклама.
Я работаю в инфраструктуре над проектами, которые направлены на создание компонентов, которыми могут пользоваться другие команды. Используя наши компоненты и создавая поверх свои, им проще работать. Результаты моей работы не видно снаружи, на странице. Я работаю конкретно с базами данных.
У меня не было конкретных индивидуальных сложностей, которые, кроме меня, никто не переживал. Но мне понадобилось время, чтобы адаптироваться к новому месту работы.
Я перешла в новую команду и поэтому переживаю что-то схожее. Мне нужно понять, над какими проектами ведется работа, определить приоритеты. Предыдущий проект был большой, а сейчас нас двое.
У офиса в Калифорнии есть один недостаток — Google нанимает людей постоянно. Всем сотрудникам нужно где-то сидеть, и офис, который работает в формате open space, похож на большой муравейник. Там шумно, и к работе в таком пространстве нужно суметь приспособиться.
Для работы в Google важно уметь программировать и работать с людьми. Вся философия компании построена на культуре уважения друг к другу.
Вся философия компании построена на культуре уважения друг к другу
Рост в компании своеобразный, и программист, дорастая до определенного уровня, может стать техлидом. В его обязанности входит не только нетехническая поддержка команды, но и помощь в организации команды, встреч. Это нужные люди в команде.
У меня нет долгоиграющих планов. Я не хочу уходить из Google, меня все устраивает.
Шерзат Айтбаев, 23 года, родной город — Алматы, software engineer
Место работы: Нью-Йорк, США
Я учился в North American University в городе Хьюстон, штат Техас. Туда я поехал после окончания школы. Во время учебы я занимался проектами по специальности, потому что понимал, что в дальнейшем будет тяжело получить подходящую работу в США. Работодатель должен поддерживать визу, и поэтому я сразу целился на крупные компании.
Университет, в котором я учился, не топовый. Я приехал учиться туда, куда позволяли финансы.
По возможности старался узнать, что нужно сделать, чтобы найти хорошую работу, общался с разными людьми. Сначала я работал в нефтяной компании в Хьюстоне, это помогло мне пройти стажировку в Amazon. Она открыла мне двери в большие компании. Я рассмотрел несколько офферов и выбрал Google. Будучи школьником, я мечтал об этом, а приняв мечту в качестве цели, достиг ее.
Будучи школьником, я мечтал об этом, а приняв мечту в качестве цели, достиг ее
В самом начале, как только я прибыл на работу, я проходил небольшой ориентационный курс, который включал в себя элементы HR и часть, которая касалась работы программистов. Пару дней нам объясняли, как улаживать вопросы с документами, страховкой, какие есть привилегии, как платят зарплату. Далее около недели нам объясняли, как пользоваться инструментами разработки Google. У компании в техническом плане все свое. Тут у всего вокруг есть своя версия Google. И поэтому даже специалисту, который работает в сфере десять лет, нужно учить все заново. Вначале тяжело, потому что человек получает много новой информации, терминов. После этого всего человек идет в команду, которую он выбрал за месяц до начала работы.
Сначала новый работник получает небольшие задания. Посредством их выполнения он знакомится с системой, людьми, познает все вокруг. Через месяца два-три человек выполняет задачи, вносящие немаленький вклад в работу команды.
О работе и обязанностях
Я работаю в качестве программиста над продуктом, который называется Firebase. Это платформа для разработки разных инфраструктурных вещей. Это могут быть базы данных, аутентификация, вопросы монетизации. Наша цель — сделать продукт, который облегчит работу мобильным и web-разработчикам. Благодаря нашей платформе разработка проходит быстро и относительно недорого.
В команде нас десять человек. Часть команды работает в Нью-Йорке, часть — в Маунтин-Вью. Еженедельно у нас проходят встречи по видеоконференции. Однако компания позитивно смотрит на поездки сотрудников. Я бываю в Калифорнии раз в три-четыре месяца на различных мероприятиях при рабочем процессе. Бывает, над каким-то проектом удобно работать, общаясь вживую. Такие поездки помогают развитию взаимоотношений с коллегами, а это улучшает работу.
В Google негативно относятся к любого рода дискриминации, будь то дискриминация по возрасту, полу, национальности, расе, ориентации
В Google негативно относятся к любого рода дискриминации, будь то дискриминация по возрасту, полу, национальности, расе, ориентации. В любой момент, когда сотрудник может почувствовать, что его дискриминируют, он может обратиться к HR, и это чревато серьезным разговором.
В Google считается, что open workspace помогает коллаборации. Так, менеджеры и директора сидят за такими же столами, как и рядовые работники. Я чувствую себя комфортно, находясь в шумном офисе. Это мне не мешает.
Если посмотреть в общем, в Google 80 тысяч full-time работников. При этом у нас такая культура, что все друг друга уважают. Все работают на равных, несмотря на жизненные взгляды. К тому же, большая часть работников старается помочь обществу. Делая технические открытия, они готовы делиться ими с окружающими.
В компании все развиваются по различным «лестницам». У каждой роли своя «лестница», которая состоит из разных уровней. На каждом уровне человек имеет четкие критерии. Для того чтобы перейти на другой уровень, человек должен соответствовать требованиям следующего уровня. Философия в компании такая, что человек получает повышение, когда на текущий момент уже работает, соответствуя требованиям следующего уровня. Процесс повышения довольно честный.
Программист, дорастая до пятого уровня, может перейти на более менеджерскую позицию или остаться на «лестнице» программиста.
Пока мне тяжело сказать, как я продолжу путь. Меня привлекает что-то связанное с менеджерскими обязанностями. Раньше мне казалось, что в этой позиции нет ничего сложного, но, наблюдая за работой моего менеджера, я понимаю, как это тяжело: много решают личные качества, коммуникативные навыки. Пока я не знаю, будет ли такая работа доставлять мне больше удовольствия, чем написание кода. К тому же, оставаясь на «лестнице» программиста, можно дорасти до технического руководства по другим проектам. Думаю, это то, что нужно.
Я чувствую, что узнаю новые вещи, развиваюсь в профессиональном плане. Если я почувствую, что не расту, то задумаюсь, что делать дальше.
Как получить работу в Google
Около трёх миллионов людей в год по всему миру подают свои резюме на работу в Google. Принимаются только 7000 — 0.2%. (Dado Ruvic/Reuters)
Филиалы Google находятся в 42 городах Европы. По мнению издания Glassdoor, эта компания — лучшее место для работы в Англии. Понятно, что получить работу в ней очень сложно. Но свои шансы можно повысить.
Кит Моран, бывший руководитель Google по набору нетехнического персонала в Европе, Средней Азии и Африки, рассказал, что в среднем между первым контактом с рекрутером и предложением о работе проходит 8 недель. Иногда процесс может длиться и 3 месяца. Каждый кандидат проходит отбор сначала рекрутерами, потом командой и потенциальным начальником. Этот пугающий многих процесс осложнён большой конкуренцией. Именно поэтому многие задаются вопросом «Как можно выделиться?».
Вот 8 советов, которые увеличат ваши шансы на получение заветной работы в Google:
Если вы пытаетесь попасть на стажировку или на должность начального уровня, но не подходите по всем требованиям, просто будьте честны. Если вы покажете хороший результат, рекрутеры найдут путь вас пристроить.
Гастон Тоурн, в прошлом главный маркетолог Лондоского филиала, ныне директор по маркетингу Appear Here, рассказал, что раньше считал себя поэтом. Он даже думать не мог, что окажется в отделе маркетинга такой огромной компании: «Google обычно пытается заглянуть внутрь своих кандидатов, кто они на самом деле такие и что могут предложить».
Кит Моран сказал, что претенденты должны конкретно говорить о своих достижениях и что им следует изложить в общих чертах всю информацию. На руководящие должности критерии, конечно, более строгие. Если вам нужны определённые квалификации, повторите изученное и подготовьтесь к тому, что вам устроят тест.
2. Выделите своё резюме на фоне остальных.
Рекрутеры Google анализируют сотни тысяч различных писем. Сложное или непонятное резюме вам точно не поможет. Поэтому избегайте столбцов и старайтесь уложится в максимум три страницы. И, конечно, не забывайте, что документ должен быть в формате PDF. Важно отметить, что выделение ключевых пунктов сделает документ аккуратным, а слог энергичным.
Однако это не значит, что нельзя добавить капельку индивидуальности. Напротив, она поощряется. Подумайте о трёх или четырёх вещах, которые вас характеризуют, и выделите их на первой странице, чтобы рекрутеры могли сразу узнать вас получше. Но не выбирайте факты хаотично. Адаптируйте их под желаемую должность.
3. Не стоит чрезмерно подготавливаться к интервью: ожидайте неожиданного.
В процессе найма на работу в Google вы проходите 4 интервью. И это может занять много времени: возможно, придётся решать сложные проблемы, заниматься кодированием программ для инженеров или проводить презентации для маркетологов. И всё это до того как вы дойдёте хотя бы до первого из четырёх стандартных интервью. Для получения руководящей должности и вовсе придётся пройти 6 или 7 собеседований.
Многовероятно, что ваше интервью будет включать в себя какой-то элемент дружеской беседы. Формальный процесс принятия на должность выглядит стандартно. Но неформальный подход вашего наставника всегда будет индивидуальным.
У Google полно ресурсов, которые помогут подготовится к собеседованию. Но не стоит забывать про изучение работы людей, которые будут его проводить. Также убедитесь, что вы знаете всё о потенциальной должности и понимаете ценности компании.
Нейл Дикинс, основатель и директор кадрового агентства IC Resources, утверждает, что «чем больше у вас знаний о них, тем больше шансов предугадать вопросы, которые, по вашему мнению, они вам зададут».
Морган утверждает, что в Google также стоит ожидать неожиданности, а значит, нет нужды судорожно заучивать ответы на стандартный список вопросов. «Будьте готовы адаптироваться и быстро реагировать на собеседование», — сказал он.
4. Задайте себе 4 вопроса перед интервью.
Эксперты утверждают, что эти четыре вопроса всегда встречаются во время интервью в Google:
5. Поделитесь вашей самой яркой идеей.
Эксперты утверждают, что вам следует приходить на интервью, подготовив вашу самую грандиозную, самую яркую идею. Но перед тем как вы её озвучите, вспомните о правиле “10 раз”: представьте, что она в десять раз важнее и серьёзнее, чем сначала предполагали, а затем — в 10 масштабнее.
Google хочет, чтобы люди мыслили глобально. И если вы можете превратить всё, о чём вы говорите, в большую чёткую систему, то это показывает, что ваша идея хороша и вы знаете, как мыслить для Google.
6. Покажите своё увлечение, даже если это что-то необычное.
Если вы с нуля создаёте роботов или приложения в своём гараже по выходным, не бойтесь сказать об этом своему интервьюеру. Это поможет вам выделится и остаться в памяти.
«Просто убедитесь, что вы подчёркиваете любое из этих видов увлечений, которые у вас есть как у личности», — утверждает Дикинс.
Моран говорит, что кандидаты, «у которых есть интересы в разнообразных областях, которые выходят за рамки определенной роли или конкретного продукта» были теми, кто всегда выделялся. Поэтому не стоит бояться показать свою индивидуальность. Но при этом нужно быть скромным. По словам экспертов, скромность — это одно из значимых качеств для Google.
7. Задавайте вопросы, будьте любопытными!
«Задавайте вопросы во время неловких пауз во время интервью», — советует Моран. «Я думаю, что именно в такие моменты становится понятно, что люди действительно увлечены чем-то интересным». Спросите, например, о том, что происходит за закрытыми дверями.
Тоурн, бывший глава маркетинга в Лондонском филиале Google, предлагает кандидатам подготовить три каверзных, неожиданных вопроса, которые помогут «бросить вызов» интервьюеру. Поскольку технологическая индустрия меняется быстро, единственное, что поможет вам добиться успеха, — это быть любопытным, интересоваться новинками и задавать вопросы.
8. Сделайте себя видимым как онлайн, так и офлайн.
У Google есть специальная команда людей, которая ищет кандидатов с определенными навыками. В основном они используют платформу LinkedIn. Moран утверждает, что любой, кто надеется получить работу в Google, должен регулярно обновлять свой профиль в LinkedIn и убеждаться, что в нём есть ключевые слова, которые работодатели легко найдут.
Посещайте виртуальные мероприятия, форумы и семинары, организованные Google. Либо те, на которых будет присутствовать кто-то из компании. Представьтесь им. Неизвестно, когда можно будет использовать того или иного человека в качестве внутреннего реферала при заполнении заявления. По словам Морана, любой контакт с сотрудником Google за пределами вашего заявления на работу повышает шансы быть замеченным.
Я бы добавил на самый вверх выучить английский язык, причем это обязательно.
Хорошие рекомендации для соискателей. Спасибо
остальные советы странные и стремные. типа вопросы к интервью готовить не надо, просто расскажите о своем хобби, роботах в гараже и планах по завоеванию мира.
но вообще-то на тех позиции готовиться надо максимально хорошо, чтобы не завалиться на формальной хрени типа сортировки хаха
Шансы устроиться в Google есть, хоть и малы, но если компания посчитает, что ваши навыки им как-то пригодятся и вы подойдете для компании, то вас могут взять в штат.
Эта статья полезна не только для тех, кто стремится получить работу именно в Google, но и для многих других IT компаний и не только.
Каждый найдет для себя в этой статье то, что ему нужно.
Ну а статью «как осуществить мечту и попасть рядовым в армию РФ» мы можем написать специально для вас, раз вы так заинтересованы этим вопросом и вы лично вручите нам премию Тома Сойера.
Как подготовиться к собеседованию в Google и не пройти его. Дважды
Заголовок статьи звучит как epic fail, но на самом деле все не так однозначно. Да и в общем и целом эта история закончилась весьма позитивно, хоть и не в Google. Но это уже тема для другой статьи. В этой же статье я расскажу о трех вещах: каким образом проходил мой процесс подготовки, каким образом проходили интервью в Google и почему же на мой взгляд все не так однозначно, как может показаться.
Как все начиналось
Одним холодным кипрским зимним вечером мне вдруг пришла в голову мысль, что мои познания в классической Computer Science весьма далеки даже от средних, и с этим надо что-то делать. Если кстати вдруг кто-то еще не читал, почему вечер кипрский и холодный, то можно об этом узнать здесь. После некоторых размышлений было решено для начала пройти онлайн курс по алгоритмам и структурам данных. От одного из бывших коллег слышал про курс Роберта Седжвика (Robert Sedgewick) на Coursera. Курс состоит из двух частей (часть 1 и часть 2). Если вдруг ссылки поменяются, то можно всегда нагуглить по имени автора. Каждая из частей идет 6 недель. В начале недели выдаются лекции, а в течении недели еще нужно делать упражнения. Первая часть курса покрывает базовые структуры данных, основные виды сортировок и сложность алгоритмов. Вторая часть уже более продвинутая, начинается с графов и заканчивается такими вещами как Linear Programming и Intractability. Обдумав все вышеизложенное, я пришел к выводу, что это именно то, что мне нужно. Тут кстати пытливый читатель может спросить, а при чем же здесь Google. И действительно, до этого момента он был тут совсем не при чем. Но мне нужна была цель, так как заниматься 12 недель вечерами без цели несколько затруднительно. А какая может быть цель в получении новых знаний? Конечно, их применение на практике. В повседневной жизни это достаточно проблематично, а вот на собеседовании в крупную компанию запросто. Беглое гугление показало, что Google (уж простите за тавтологию) является одной из крупнейших компаний в Европе (а я рассматривал именно Европу), в которой проводят такие собеседования. А именно, их офис находится в Цюрихе, Швейцария. Итак решено — учимся и идем собеседоваться в Google.
Подготовка к первому заходу
12 недель прошли незаметно, и я закончил оба курса. Мои впечатления от курсов более чем положительные, и я могу их рекомендовать всем заинтересованным. Понравились же мне курсы по следующим причинам:
После окончания курсов я осознал, что многие знания это многие печали. Если раньше я просто знал, что ничего не знаю, то теперь начал осознавать, что именно я не знаю.
Так как был еще только май месяц, а собеседование я запланировал на осень, я решил продолжить свое образование. После просмотра требований к вакансии, было принято решение пойти параллельно по двум направлениям: продолжить изучение алгоритмов и пройти базовый курс по машинному обучению. Для первой цели я решил переключиться с курсов на книгу и выбрал монументальный труд Стивена Скиены (Steven Skiena) «Алгоритмы. Руководство по разработке» (The Algorithm Design Manual). Не такой монументальный, как у Кнута, но все же. Для второй цели я опять пошел на Coursera и записался на курс Эндрю Ына (Andrew Ng) Machine Learning.
Прошло еще 3 месяца, и я закончил курс и книгу.
Начнем с книги. Чтение оказалось достаточно интересное, хотя и непростое. В принципе, я бы книгу рекомендовал, но не вот так сразу. В общем и целом, книга дает более глубокий разбор того, что я узнал на курсах. Плюс к этому я открыл для себя (с формальной точки зрения) такие вещи как эвристики и динамическое программирование. Естественно, раньше мне доводилось их использовать, но как они называются я не знал. Так же в книге присутствует некоторое количество баек из жизни автора (War Story), которые несколько разбавляют академичность изложения. Вторую половину книги можно кстати опустить, там идет скорее описание существующих проблем и методов их решения. Полезно, если регулярно применяется на практике, иначе забудется сразу же.
Курс меня более чем порадовал. Автор явно знает свое дело и рассказывает интересно. Плюс изрядную часть, а именно линейную алгебру и основы нейронных сетей я помнил еще с университета, поэтому особых трудностей не испытал. Структура курса достаточно стандартная. Курс разбит на недели. Каждую неделю сначала идут лекции вперемешку с короткими тестами. После лекций выдается задание, которое нужно сделать, отправить и оно автоматически проверится. Вкратце, список преподаваемого в курсе следующий:
— cost function
— linear regression
— gradient descent
— feature scaling
— normal equation
— logistic regression
— multiclass classification (one vs all)
— neural networks
— backpropagation
— regularization
— bias/variance
— learning curves
— error metrics (precision, recall, F1)
— Support Vector Machines (large margin classification)
— K-means
— Principal Components Analysis
— anomaly detection
— collaborative filtering (recommeder system)
— stochastic, mini-batch, batch gradient descents
— online learning
— map reduce
— ceiling analysis
После прохождения курса, понимание всех этих тем присутствовало. Через 2 года уже почти все естественно забылось. Рекомендую тем, кто не знаком с машинным обучением и хочет получить хорошее понимание базовых вещей для движения дальше.
Первый заход
На дворе был уже сентябрь и пришло время задуматься о собеседовании. Так как подаваться через сайт дело достаточно гиблое, занялся поиском знакомых, работающих в Google. Выбор пал на datacompboy, так как он был единственным, кого я знал напрямую (пусть и не лично). Он согласился передать мое резюме, и вскоре я получил от рекрутера письмо, предлагающее забронировать слот у него в календаре для первого разговора.Через пару дней состоялся созвон. Пробовали общаться через Hangouts, но качество было ужасное, поэтому переключились на телефон. Сначала быстро обсудили стандартные как, зачем и почему, а потом перешли к техническому скринингу. Он состоял из десятка вопросов в духе «какая сложность вставки в hash map», «какие сбалансированные деревья вы знаете». Не сложно, если есть базовое знание этих вещей. Скрининг прошел хорошо и по результатам решили организовать первое интервью через недельку.
Интервью тоже было через Hangouts. Сначала минут 5 поговорили обо мне, потом перешли к задачке. Задача была на графы. Я быстро понял, что надо сделать, но выбрал не тот алгоритм. Когда начал писать код осознал это и переключился на другой вариант, который и дописал. Интервьюер задал несколько вопросов на тему сложности алгоритма, спросил, можно ли быстрее. Я как-то затупил и не смог. На этом время вышло и мы распрощались. Потом, минут через 10 до меня дошло, что вместо алгоритма Дейкстры, который я использовал, конкретно в этой задаче можно было бы использовать поиск в ширину, и это было бы быстрее. Через некоторое время позвонил рекрутер и сказал, что интервью в целом прошло хорошо и надо бы организовать еще одно. Договорились на еще через недельку.
В этот раз дела пошли хуже. Если в первый раз интервьюер был дружелюбный и общительный, то в этот раз какой-то мрачноватый. Задачку я сразу раскусить не смог, хотя те идеи что я выдавал в принципе могли привести к ее решению. В итоге после нескольких подсказок интервьюера до меня дошло решение. В этот раз это снова оказался поиск в ширину, только из нескольких точек. Решения я написал, во время уложился, но забыл про граничные случаи. Через какое-то время позвонил рекрутер и сообщил, что в этот раз интервьюер остался недоволен, так как по его мнению мне потребовалось слишком много подсказок (3 или 4 штуки) и я постоянно менял код во время написания. По результатам двух собеседований было принято решение дальше не идти, а отложить следующее интервью на год, если у меня будет такое желание. За сим и распрощались.
И этой истории я сделал несколько выводов:
Подготовка ко второму заходу
Обдумав ситуацию, я принял решение попробовать через год еще раз. И слегка подредактировал цель. Если раньше основной целью была учеба, а интервью в Google как далекая морковка, то теперь прохождение интервью было целью, а учеба средством.
Итак, был разработан новый план, в который входили следующие пункты:
Книги и статьи
Количество прочитанный статей я уже даже и не вспомню, читал их как на русском, так и на английском. Самым полезным сайтом оказался наверное вот этот. Тут собрано описание большого количества интересных алгоритмов с примерами кода.
Книг я прочитал 5: Algorithms, 4th edition (Sedgewick, Wayne), Introduction to Algorithms 3rd Edition (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4th edition (Gayle Laakmann), Programming Interviews Exposed 2nd edition (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Их можно разделить на 2 категории. В первую попадают книги Седжвика и Кормена. Это теория. Остальные это подготовка к интервью. Седжвик в книге рассказывает примерно то же самое, что и в своих курсах. Просто в письменном виде. Нет особого смысла читать внимательно, если вы проходили курс, но проглядеть стоит в любом случае. Если курс не смотрели, то имеет смысл почитать. Кормен мне показался чересчур занудным. Осилил честно говоря с трудом. Вынес оттуда только master theorem, да несколько редко используемых структур данных (Fibonacci heap, van Emde Boas tree, radix heap).
Книгу для подготовки к интервью стоит прочитать хотя бы одну. Они все построены примерно по одному принципу. Описывают процесс интервью в крупных технологических компаниях, дают базовые вещи из Computer Science, задачки на эти базовые вещи, решения задачек и разбор решений. Из приведенных трех я бы наверное рекомендовал Cracking the Coding Interview как основную, а остальные по желанию.
Алгоритмические задачи
Это наверное был самый интересный пункт подготовки. Можно, конечно, сесть и тупо решать задачи. Для этого есть много разных сайтов. Я в основном использовал три: Hackerrank, CodeChef и LeetCode. На CodeChef задачи разбиты по сложности, но не по темам. На Hackerrank и по сложности, и по темам.
Но как я сразу для себя выяснил, есть более интересный способ. И это соревнования (programming challenges или programming contests). Все три сайта их предоставляют. Правда с LeetCode есть проблема — неудобная временная зона. Поэтому я не участвовал на этом сайте. Hackerrank и CodeChef предоставляют достаточно большое количество различных соревнований, длительностью от 1 часа до 10 дней. У разных форматов разные правила, ну да это про это можно долго рассказывать. Основная суть, почему соревнования это хорошо, это внесение соревновательного (и снова тавтология) элемента в процесс обучения.
Всего я поучаствовал в 37 соревнованиях на Hackerrank. Из них 32 были рейтинговые, а 5 или спонсируемые (я даже получил 25$ в одном из них) или по фану. В рейтинговых я 10 раз входил в топ 4%, 11 раз в топ 12% и 5 раз в топ 25%. Лучшими результатами были 27/1459 в 3-х часовом и 22/9721 в недельном.
На CodeChef я перешел, когда на Hackerrank соревнования стали устраивать реже. Всего я успел поучаствовать в 5 соревнованиях. Лучшим результатом было 426/5019 в десятидневном соревновании.
Всего, на соревнованиях и просто так я решил чуть больше 1000 задач, что вписывалось в план. Сейчас к сожалению свободного времени на продолжение соревновательной деятельности нет, равно как и нет цели, под которую можно списать несвободное время. Но это было весело. Рекомендую тем, кто этим заинтересуется, найти единомышленников. Вдвоем или группой гораздо интереснее. Я этим развлекался с другом, поэтому может так хорошо и пошло.
Просмотр видео
Прочитав книжку Скиены, я в принципе заинтересовался тем, чем он занимается. Как и Седжвик, он является профессором в университете. В связи с этим, в сети можно найти видеозаписи его курсов. Я решил просмотреть курс COMP300E — Programming Challenges — 2009 HKUST. Не скажу, что мне сильно понравилось. Во-первых качество видео не очень. Во-вторых я не пробовал сам решать задачи, разбираемые в рамках курса. Так что вовлеченность была не очень высокая.
Также в процессе решения задачек, пытаясь найти правильный алгоритм, я натыкался на видео Tushar Roy. Он работал в Amazon, а сейчас работает в Apple. Как позже я для себя выяснил, у него есть канал на YouTube, где он выкладывает разбор различных алгоритмов. На момент написания статьи канал содержит 103 видео. И надо сказать, что разбор в его исполнении сделан очень прилично. Я пробовал смотреть других авторов, но как-то не зашло. Так что этот канал однозначно могу рекомендовать к просмотру.
Прохождение курсов
Тут я особо ничем не занимался. Просмотрел видео из Android Developer Nanodegree от Google и прошел курс от ИТМО How to Win Coding Competitions: Secrets of Champions. Nanodegree вполне себе, хотя ничего нового оттуда я естественно не узнал. Курс от ИТМО в плане теории немного скомканный, но задачки были интересные. Я бы не рекомендовал с него начинать, но в принципе время на него было потрачено не зря.
Изучить опыт других людей
Само собой множество людей пытались попасть в Google. Кто-то попал, кто-то нет. Некоторые писали об этом статьи. Из интересных вещей наверное отмечу вот эту и вот эту. В первом случае, человек подготовил для себя список того, что ему нужно выучить, чтобы стать Software Engineer и попасть в Google. Попал он в итоге в Amazon, но это уже не так важно. Второй мануал написан инженером Google, Ларисой Агарковой (Larrr). Помимо этого документа, можно также почитать ее блог.
Имеет смысл почитать отзывы о собеседованиях на Glassdoor. Они все более-менее похожи, но какую-то полезную информацию выудить можно.
Ссылки на другие мелкие статьи приводить не буду, вы их сами прекрасно сможете найти в Google.
Второй заход
И вот год прошел. Выдался он весьма насыщенным в плане учебы. Но к новой осени я подходил с гораздо более глубокими теоретическими знаниями и отработанными практическими навыками. До окончания назначенного мне срока отведенного на подготовку года оставалось еще несколько недель, как вдруг на почту упало письмо от рекрутера из Google, в котором он меня спрашивал, имею ли я все еще желание работать в Google и не против ли пообщаться с ним. Естественно, что я был не против. Договорились созвониться через неделю. Также у меня попросили обновленное резюме, к которому я присовокупил краткое описание того, что сделал за год на работе и в принципе.
После общения за жизнь решили, что через недельку будет Hangouts интервью, все как в прошлом году. Неделя прошла, пришло время интервью, но интервьюер не появился. Прошло 10 минут, я уже начал нервничать, как вдруг кто-то ворвался в чат. Как выяснилось чуть позже, мой интервьюер по какой-то причине не смог появиться и ему срочно нашли замену. Человек был несколько не готов как в плане настройки компа, так и в плане проведения интервью. Но затем все пошло хорошо. Задачку я решил быстро, описал где возможны подвохи, как их можно обойти. Обсудили несколько разных вариантов задачи, сложность алгоритма. Потом еще 5 минут пообщались, инженер рассказал свои впечатления от работы в Мюнхене (в Цюрихе видать срочной замены не нашли), на том и расстались.
В тот же день со мной связался рекрутер и сообщил, что собеседование прошло отлично и они готовы пригласить меня на собеседование в офис. На следующий день созвонились через Hangouts и обсудили подробности. Так как мне нужно было делать визу, решили назначить собеседование через месяц.
Пока готовил документы, попутно обсуждал с рекрутером предстоящее интервью. Стандарное интервью в Google состоит из 4 алгоритмических и одного System Design. Но, так как я устраивался как Android разработчик, мне было сказано, что часть интервью будет с Android спецификой. Какие именно и в чем будет специфика я из рекрутера так и не смог вытрясти. Насколько я понял, это ввели относительно недавно и он сам был не очень в курсе. Также меня записали на две тренировочные сессии: как проходить алгоритмическое интервью и как проходить System Design интервью. Сессии были средней степени полезности. Там мне тоже никто не смог рассказать, что же спрашивают у Android разработчиков. Поэтому моя подготовка в этот месяц свелась к следующему:
После того как все формальности с поездкой были улажены, прошло еще несколько дней и я собственно вылетел в Цюрих. Добрался без приключений. От аэропорта до города доехал на поезде — быстро и удобно. Немного поплутав по городу нашел отель и заселился. Так как отель был забронирован без еды, отужинал по соседству и завалился спать, ибо рейс был утренний и спать уже хотелось. На следующий день позавтракал в отеле (за отдельные деньги) и отправился в офис Google. Всего в Цюрихе у Google несколько офисов. Мое собеседование было не в центральном. И в общем-то офис выглядел достаточно обычно, так что не довелось мне посмотреть на все плюшки «нормального» офиса Google. Зарегистрировался у администратора и сел ждать. Через какое-то время вышел рекрутер и рассказал мне план на день, после чего отвел в комнату, где и должны были проходить интервью. Собственно в плане значились 3 интервью, обед и еще 2 интервью.
Интервью номер раз
Первое интервью было как раз по Android. Причем вообще никак не было связано с алгоритмами. Сюрприз, однако. Ну да ладно, так даже привычнее. Попросили сделать определенный UI компонент. Сначала обсудили, что и как. Предложил сделать решение на RxJava, описал, что именно и почему бы сделал. Сказали, что это конечно хорошо, но давайте сделаем средствами Android фреймворка. А заодно напишем код на доске. Причем не просто компонента, а всей Activity, использующей этот компонент. Вот к такому я был не готов. Одно дело писать на доске алгоритм на 30-50 строчек, а другое дело лапшу Android кода, пусть даже с сокращениями и комментариями в духе «ну, это я писать не буду, так как и так очевидно». Получился какой-то винегрет на 3 доски. Т.е. задачу-то я решил, но выглядело это стремно.
Интервью номер два
На этот раз интервью было по алгоритмам. И интервьюеров было двое. Один собственно интервьюер, а второй юный падаван (shadow interviewer). Нужно было придумать структуру данных с определенными свойствами. Сначала как обычно обсуждали проблему. Я задавал разные вопросы, интервьюер отвечал. Через какое-то время попросили написать несколько методов придуманной структуры на доске. В этот раз более-менее удалось, правда с несколькими мелкими ошибками, которые я исправил с подсказки интервьюера.
Интервью номер три
На это раз System Design, который вдруг тоже оказался Android. Нужно было разработать приложение с определенным функционалом. Обсудили требования к приложению, к серверу, к протоколу коммуникации. Далее я стал описывать, какие компоненты или библиотеки я бы использовал при построении приложения. А затем при упоминании Job Scheduler случился некоторый затык. Суть в том, что я никогда не использовал его на практике, так как в момент его выхода как раз переключился на поддержку приложений, где задач для его применения не было и в помине. При разработке последующих было тоже самое. То есть в теории я знаю что это за штука, когда и как применяется, но опыта в применении нет. И интервьюеру это похоже не сильно понравилось. Потом попросили написать код. Да, при разработке приложения сразу нужно писать код. Опять же Android код на доске. Получилось снова страшненько.
Должен был прийти еще один человек, но не пришел. И у Google бывают промашки. В итоге на обед пошел с предыдущим интервьюером, ее коллегой и чуть позже присоединился следующий интервьюер. Обед был вполне приличный. Опять же, так как это не главный офис в Цюрихе, столовая выглядела достаточно обычно, хотя и очень приятно.
Интервью номер четыре
Наконец-то алгоритмы в чистом виде. Первую задачку я решил достаточно быстро и сразу эффективно, правда промахнулся с одним граничным случаем, но по подсказке интервьюера (он дал этот самый граничный случай) нашел проблему и исправил. Само собой нужно было писать код на доске. Затем была дана похожая задача, но сложнее. Для нее я нашел пару неоптимальных решений и почти нашел оптимальное, не хватило 5-10 минут чтобы дожать мысль. Ну и код для нее я написать уже не успел.
Интервью номер пять
И снова Android интервью. Интересно, зачем я учил алгоритмы весь год?
Сначала было несколько простых вопросов. Потом интервьюер написал на доске код и попросил найти в нем проблемы. Нашел, объяснил, исправил. Обсудили. А дальше начались несколько неожиданные вопросы в духе «а что в классе Х делает метод У», «а что внутри у метода У», «а что делает класс Z». Что-то я конечно ответил, но потом сказал, что в работе в последнее время с этим не сталкивался и естественно не помню, кто, что и как в деталях делает. После этого интервьюер расспрашивал, что я делаю сейчас. И вопросы пошли на эту тему. Тут я уже отвечал гораздо лучше.
После окончания последнего интервью у меня забрали пропуск, пожелали удачи и отправили восвояси. Немного погулял по городу, поужинал и пошел в отель, где и завалился спать, так как рейс снова был рано с утра. На следующий день благополучно добрался до Кипра. Написал по просьбе рекрутера фидбек по интервью и заполнил в специальном сервисе форму на возврат потраченных денег. Из всех трат Google напрямую оплачивает только билеты. Отель, еда и проезд оплачиваются кандидатом. Затем заполняем форму, прикладываем чеки и отправляем в специальную контору. Они это обрабатывают и достаточно быстро перечисляют деньги на счет.
На то, чтобы обработать результаты интервью ушло полторы недели. После чего мне сообщили, что я был «a bit below the bar». То бишь немного не дотянул. Если конкретнее, то 2 интервью прошли хорошо, 2 немного не очень, а System Design очень не очень. Вот если бы хотя бы 3 прошли хорошо, то можно было бы побороться, а так без шансов. Предложили заходить еще через год.
Поначалу я конечно расстроился, так как на подготовку было затрачено много сил, и к моменту интервью у меня уже зрела мысль о том, чтобы покинуть Кипр. Устройство в Google и переезд в Швейцарию казались отличным вариантом.
Заключение
И тут мы подходим к заключительной части статьи. Да, я дважды не прошел интервью в Google. Это печально. Наверное, было бы интересно там поработать. Но, можно взглянуть на дело и с другой стороны.
Что я могу сказать напоследок. Если вы работаете в IT, подготовьте себя к интервью в Google (Amazon, Microsoft, Apple и т.д.). Возможно, когда-нибудь вы туда заходите попасть. Даже если не захотите, то поверьте, от такой подготовки вам хуже не станет. В том момент, когда вы поймете, что можете (пусть даже только при удачном стечении обстоятельств) пройти интервью в одну из этих компаний, перед вами будет открыто гораздо больше дорог, чем перед началом вашей подготовки. А все, что вам потребуется в пути это цель, настойчивость и время. Желаю успехов 🙂