Собеседование в Google — Часть 1

Собеседование в Google
Джейсон Клоусон с подарочным пакетом от Google

Джейсон Клоусон, разработчик программного обеспечения в Google, описывает свой опыт прохождения собеседования в инженерную команду доступности сервисов Google.

Первый контакт

На мой день рождения, 24 июня, со мной связалась рекрутер из Google и пригласила пройти собеседование в инженерную команду доступности сервисов (SRE team).

Спустя несколько дней состоялось собеседование по телефону. Интервьюер попросила меня оценить мои знания по различным языкам программирования, концептам Linux и некоторым другим техническим аспектам по 10 бальной шкале. 10 можно поставить лишь в том случае, если вы написали книгу … или изобрели технологию. Разумеется, я не оценил себя выше 6 баллов. Честно сказать, я не знал, как оценить себя по Java. Одни темы я знаю отлично, другие не очень.

Моя самооценка стала путеводителем для интервьюера. Исходя из моих ответов она задала мне остальные вопросы. Сказать по правде, я ответил не очень хорошо. В одном из вопросов, спрашивалось как подсчитать количество единиц в двоичной записи числа. Эта задача взята прямо из книги, которую необходимо прочитать. О ней я упомяну позже. Я нашел решение, но оно было далеко от оптимального.

Так или иначе, мне как-то удалось перейти к техническому телефонному интервью (подождите, разве это не было техническим?). Google имеет репутацию компании, в которой процесс собеседования очень трудный. После неуверенного phone screen собеседования, я волновался по поводу того, с чем мне еще предстоит столкнуться.

Техническое собеседование по телефону

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

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

В конечном итоге для решения потребовались базовые знания HashMap, map reduce и распределенных систем. Интервьюер позволила использовать сокращения, например называя метод, как sendTaskToServer (serverId, task), и мы обсудили реализацию.

Реальная сложность заключалось в разделении нагрузки и объединении результатов в правильный ответ. Я обнаружил, что эта задача очень интересная и почувствовал себя комфортно на этом этапе. Думаю, я бы не сделал лучше.

Интервьюер сказала, что я выполнил задание очень хорошо. Она спросила, есть ли у меня знакомые в Google, которые могут меня порекомендовать. Это значит, что если вы знаете кого-то в Google, и он может поручиться за вас, то второй техническое телефонное собеседование можно пропустить и перейти непосредственно к собеседованию на месте (onsite interview).

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

Собеседования на месте

К собеседованиям на месте я готовился в течение 2 недель. Рекрутер дала мне ссылку на Google Interview Resources. Этот ресурс можно использовать для подготовки. Также она настоятельно порекомендовала книгу: Cracking the Coding Interview: 150 Programming Questions and Solutions (в русском переводе эта книга вышла под названием «Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию»). Если собираетесь на собеседование в Google, Amazon, Netflix, Apple или в любую другую компанию, то обязательно прочтите эту книгу. Она поможет вам подготовится. Я приобрел ее и прочитал от корки до корки.

В первой главе книги рекомендуется готовиться к собеседованию как минимум месяц. У меня было 2 недели …. дерьмово. Каждый вечер в течение 2 недель я решал задачи, изучал обход вершин дерева (tree traversal), сортировку, нотацию «большого О» … Все это напоминало зубрежку к экзаменам в колледж. Я все это знал, просто не использовал годами.

Я вылетел из Денвера в Маунтин-Вью вместе со своей женой в качестве моральной поддержки. Мы решили после завершения собеседования отправится в отпуск. В зависимости от результатов собеседования — это будет поощрением или утешением.

Собеседование было назначено на следующие утро. Мы зарегистрировались в отеле. Прежде чем отправится спать я повторил изученный материал. Вместо традиционного подсчета овец для засыпания, я проводил манипуляции с красно-черными-деревьями в своей голове.

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

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

«Как дела?», — спросил он. Дрожащим голосом я ответил: «Невероятно нервничаю».

«Хорошо», — ответил он, — Если вы бы не нервничали, то нервничал бы я». Про себя я подумал: «Куда я влип. Взять бы вот этот Google велосипед и уехать отсюда далеко и никогда не возвращаться!»

Google bike

В соседнем здании рекрутер провел меня в комнату для собеседований и подарил пакет с подарками и дал график собеседований. В пакете находилась кружка с логотипом Google. Я нервно рассмеялся: «Ну, думаю, по крайней мере, возьму хоть кружку».

Рекрутер объяснил: «В общей сложности будет 6 собеседований. Два до ланча, одно во время и три после. Каждый интервьюер поставит свою оценку, которую комитет по найму персонала использует, когда будет решать брать меня на работу или нет. Исключение составит лишь собеседование во время ланча, оно оцениваться не будет, так как оно более неформальное, и о нём лишь оставят отзывы».

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

Это было одно из самых сложных собеседований. Большую часть собеседования мы говорили об алгоритмах на основе mock-объектах. Около 15 минут я писал код на белой доске. Думаю, справился.

Второй интервьюер спросил меня о Java параллелизме. Как создать Singleton (шаблон проектирования) потоко-безопасным способом. Его редко кто применяет правильно.

Я часто говорю, что одна из самых полезных структур данных из когда-либо изобретенных — это HashMap. Каждый должен знать, как HashMap работает и понимать, что это ключ к решению подобных задач на собеседовании. Я справился и был очень доволен результатом. Знаю, знаю, я не рассказываю вам о точных задачах, которые поставили передо мной. К сожалению я подписал Соглашение о неразглашении конфиденциальной информации :-).

Наконец, наступило время ланча. Здание, в котором мы собирались поесть, находилось на довольно приличном расстоянии. Кампус Google, в Маунтин-Вью состоит из множества зданий расположенных на территории в несколько квадратных миль. На улице была хорошая погода, поэтому я не возражал против прогулки. Это лучше, чем стоять у белой доски.

По дороге к кафе мы поговорили о разных вещах: опыте за плечами, технологии Google, моих предыдущих проектах и откуда я родом. Это была дружеская беседа.

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

После ланча меня сопроводили в другое здание — Google Maps. Здесь состоялись заключительные собеседования. Первое было связано с алгоритмом обхода дерева, а второе с HashMaps. Я справился хорошо с обоими собеседованиями. Исключение составила задача анализа времени прогона программы. Я не силен в этом.

Финальный этап собеседования по архитектуре системы был самым интересным. Передо мной поставили реальную задачу по масштабируемости.

Это было хорошее собеседование. Все завершилось. Я прошел его. Сожалений нет. На улице, возле здания Google Maps я размышлял о том, что только что сделал. Возможно, я прошел через самое строгое технического собеседование и считаю, что успешно с ним справился. Не знаю, хочу ли я получить предложение о работе, но я сделал все, что мог — и этого мне достаточно.

Собеседование в Google — Часть 2

Неделя нуглера в Нью-Йорке

Источник: www.jasonclawson.com, Автор: Джейсон Клоусон


Перевод выполнен abv24.com




Опубликовано 17.08.2014 в 10:48 пп · Автор abv24 · Ссылка
Рубрики: Социальные медиа · Теги: 

Один комментарий

Подписаться на комментарии по RSS

  1. Написал(-а) Виталий
    Июнь 18, 2015 в 11:33 дп
    Ссылка

    Красавчик! Захватывающая история. Прочитал перед телефонным собеседованием чтобы проникнуться атмосферой)

Подписаться на комментарии по RSS


@Mail.ru