Start-365.ru

Работа и Занятость
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Собеседование в гугл

Как пройти собеседование в Google: советы по подготовке

  • Переводы, 14 апреля 2018 в 12:56
  • Никита Прияцелюк

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

О чём нужно позаботиться перед собеседованием

  • Имейте копию зачётной книжки;
  • Выберите как минимум 3 дня и время (включая часовой пояс), в течение которого вы будете доступны для технического собеседования по телефону в формате дата-время-часовой пояс, для которого вы указали время;
  • Выберите язык программирования, который вы хотели бы использовать для собеседования: Java, C++, C или Python;
  • Предоставьте актуальные контактные данные, чтобы до вас могли дозвониться в день собеседования.

Советы по прохождению собеседования

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

Планируйте заранее

Инженеры Google, которые будут вас собеседовать, весьма ограничены во времени. Поэтому найдите время и в своём расписании тоже! Также держите под рукой ручку и лист бумаги на случай, если вам скажут что-нибудь записать.

Чего ожидать

Техническое собеседование может длиться до 45 минут. Интервьюера будут интересовать ваши знания принципов Computer Science (структуры данных, алгоритмы и т.д.) и как вы их можете применить в решении задач.

Ваши знания Computer Science оставляют желать лучшего? Тогда загляните в нашу статью, чтобы восполнить этот пробел.

Вопросы на собеседовании

На собеседовании может затрагиваться всё, что указано в вашем резюме (особенно если вы отметили, что вы в этом эксперт!), вайтбординг (это когда вас заставляют писать код на доске или листике), разработка сложных алгоритмов и анализ их производительности, логические задачи, системное проектирование и основы Computer Science — хеш-таблицы, стек, массивы и т.д. Из-за сложности и глобального масштаба проектов, в которых вы будете участвовать, основы Computer Science являются необходимыми для всех инженерных должностей в Google вне зависимости от вашего стажа.

Как добиться успеха

В Google ценят совместную работу и обмен идеями. Поэтому вам понадобится больше информации от интервьюера, чтобы проанализировать поставленный вопрос и развёрнуто на него ответить.

  • Это нормально задавать вопросы интервьюеру.
  • Когда вас просят решить задачу, сначала сформулируйте, как вы её понимаете.
  • Если вам что-то непонятно — попросите помочь или объяснить.
  • Если у вас есть какое-то предположение, проговорите его, чтобы убедиться в правильности своих суждений!
  • Опишите, как вы собираетесь решить каждую часть задачи.
  • Всегда давайте интервьюеру следить за ходом вашей мысли, так как для него это не менее важно, чем конечное решение. Кроме того, если вы вдруг зависнете, то он сможет помочь советом.
  • Наконец, слушайте — не пропустите подсказку мимо ушей, если интервьюер пытается вам помочь!

Кто нужен Google?

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

Интервьюерам важен подход к вопросу не меньше, чем сам ответ:

  • Слушал ли кандидат внимательно и понял ли он вопрос?
  • Задал ли он правильные вопросы, прежде чем приступить? (важно!)
  • Решил ли он задачу перебором? (нехорошо!)
  • Делаются ли какие-либо предположения без предварительной проверки? (нехорошо!)
  • Услышал ли кандидат подсказки и прислушался ли он к ним?
  • Кандидат медленно вникает/решает задачу? (нехорошо!)
  • Предпочитает ли кандидат найти несколько возможных решений, прежде чем выбрать лучшее?
  • Ищет ли он новые пути решения задачи?
  • Является ли кандидат изобретательным и гибким в своих решениях и открыт ли он для новых идей?
  • Возможен ли переход к решению более сложных задач в процессе собеседования?

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

Задавайте больше вопросов!

Удостоверьтесь, что вы имеете чёткое представление о Google как бизнесе — за пределами основных продуктов компании. Узнать, чем занимается Google, можно на сайте компании и в Википедии.

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

Если у вас есть вопросы о процессе собеседования, зарплате или вашей работе, задайте их вашему рекрутеру.

Готовимся техническому собеседованию

Основные пункты, по которым следует пройтись инженерам для успешного прохождения собеседования в Google:

  • Сложность алгоритмов. Очень важно понимать анализ сложности в нотации «О-большое». Попробуйте разобраться с этим на практике.
  • Сортировка. Знайте, как сортировать. Не пузырьком. Следует знать в деталях как минимум один алгоритм сортировки сложности O(n log n), желательно два, например, быструю сортировку и сортировку слиянием. Последняя может быть крайне полезна в ситуациях, когда использовать быструю сортировку нецелесообразно, поэтому обратите на неё внимание.
  • Хеш-таблицы. Пожалуй, самая важная структура данных, известная человечеству. Вы обязательно должны знать, как они работают. Будьте готовы во время собеседования предоставить свою реализацию с помощью массивов на вашем любимом языке.
  • Деревья. Имейте представление о деревьях, знайте базовые алгоритмы построения, обхода и управления деревьями. Ознакомьтесь с двоичными, n-ичнымии и префиксными деревьями. Также нужно знать хотя бы один вид сбалансированного двоичного дерева, будь то красно-чёрное, расширяющееся или АВЛ-дерево, и как его реализовать. Разберитесь в алгоритмах обхода дерева: поиске в ширину и глубину, и узнайте разницу между прямым, симметричным и обратным обходами.
  • Графы. Графы имеют большое значение в Google. Есть три основных способа представить граф в памяти: объекты и указатели, матрица и список смежности; ознакомьтесь с каждым представлением и его преимуществами и недостатками. Вы должны знать основные алгоритмы обхода графа: поиск в ширину и поиск в глубину. Знайте их вычислительную сложность, преимущества и недостатки и как их реализовать с помощью кода. По возможности попробуйте изучить более интересные экземпляры вроде алгоритма Дейкстры и A*.
  • Математика. Некоторые интервьюеры задают вопросы по основам дискретной математики. В Google на это обращают больше внимания, чем в других компаниях, из-за характера задач, с которыми там работают. Потратьте немного времени перед интервью на повторение (или изучение) основ комбинаторики и теории вероятностей. Вы должны знать о задачах сочетаний из n по k и ей подобных — чем больше, тем лучше.
  • Операционные системы. Ознакомьтесь с процессами, потоками и параллелизмом. Необходимо знать, что такое блокировка, мьютекс, семафор и монитор и как они работают. Узнайте, что такое взаимная блокировка и livelock и как их избежать. Имейте представление о том, какие ресурсы нужны процессам и потокам, как работает переключение контекста и как оно инициируется операционной системой и аппаратной частью. Не будет лишним немного знать о планировании выполнения задач. Мир быстро движется в сторону многоядерности, поэтому также не помешают знания основ «современных» концепций параллелизма.
  • Программирование. Нужно хорошо знать как минимум один язык программирования, желательно C++ или Java. C# тоже подойдёт, так как он довольно похож на Java. Вас попросят написать код если не на всех, то как минимум на нескольких собеседованиях. От вас будут ожидать глубоких знаний вашего любимого языка программирования.

Примеры тем на собеседовании

  • Программирование. Построение/обход структур данных, реализация системных подпрограмм, переход от больших наборов данных к одиночным значениям, преобразование одного набора данных в другой;
  • Разработка/анализ алгоритмов. «О-большое», сортировка и хеширование, обработка очень больших объёмов данных. Также смотрите темы, указанные в разделе «Программирование»;
  • Проектирование систем. Наборы функций, иерархия классов, проектирование систем при определённых ограничениях, простота и надёжность, компромиссы;
  • Открытые вопросы. Самые сложные задачи, которые вам встречались, лучшие/худшие встреченные проекты, анализ производительности и оптимизация, идеи для улучшения существующих продуктов.

Полезные ресурсы при подготовке к собеседованию

  • Видео, где рекрутеры делятся советами;
  • Презентация инженеров из Google о том, как подготовиться к техническому собеседованию;
  • Канал Google с множеством полезных видео;
  • О процессе приёма на работу на Google Careers;
  • Статья о том, как отвечать на открытые вопросы Google.

Думаете о работе в Google и хотите больше узнать о том, как туда попасть? Тогда загляните в нашу статью — в ней описан опыт успешного трудоустройства разработчика из СНГ.

10 заковыристых вопросов на собеседовании в Google

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


1. За сколько денег вы помоете все окна в Сиэтле?

Это один из вопросов, где надо проявить хитрость и дать самый простой ОТВЕТ: «Допустим, 10 $ за окно».

2. Сколько настройщиков пианино во всём мире?

Всё зависит от того, какова потребность в услугах настройщиков. Если пианино надо настраивать раз в неделю, и это занимает один час, а настройщик работает 8 часов в день в течение 5 дней в неделю, то получается, что он может настраивать 40 пианино каждую неделю.

ОТВЕТ: «Один настройщик на каждые 40 пианино».

3. Почему крышка канализационного люка круглая?

Ответ: «Круглая форма крышки позволяет гарантировать то, что сама крышка не провалится в люк при её монтаже или демонтаже (прямоугольная же крышка легко входит в корпус люка по диагонали)».

4. Можете ли вы разработать план эвакуации из Сан Франциско?

Интересный конечно вопрос. А вариант ответа такой: «А какое бедствие запланировано на сегодня»?

5. Сколько раз за день стрелки часов пересекаются?

6. Вам надо проверить, правильно ли Боб записал ваш номер телефона,

но вы не можете спросить его об этом прямо. Вам надо написать ему записку и отдать Еве, которая отнесёт её Бобу и принесёт обратно ответ от него. Что вы напишите в записке, чтобы Боб понял, что вы от него хотите, а Ева не смогла узнать ваш номер телефона?

ОТВЕТ: Поскольку вы всего лишь «проверяете», то в записке просто «Попросите его позвонить вам в определённое время».
Если он позвонит, значит ваш номер у него записан правильно.

Есть и второй вариант ответа: «Надо использовать контрольную сумму. В записке попросите Боба сложить все цифры вашего телефонного номера и написать на листе результат. Когда Ева принесет его ответ, вам надо будет лишь проверить полученную сумму.»

7. Вы — капитан пиратского судна,

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

ОТВЕТ: «Надо разделить награбленное поровну между 51% всей команды».

8. У вас есть 8 мячиков одинакового размера,

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

ОТВЕТ: «Возьмите 6 из 8 мячей и положите по 3 на каждую чашу весов.

Если тяжёлого мячика в этой группе нет, то никакая чаша не перевесит. Теперь вам останется взвесить оставшиеся 2 мяча и решить задачу.

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

9. Объясните тремя предложениями, что такое база данных вашему 8-летнему племяннику?

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

ОТВЕТ может быть таким: «База данных — это компьютер, который помнит много информации о разных вещах. Люди пользуются им, если кому-то нужна эта информация. А теперь иди поиграй на улице».

10. Человек направил свой автомобиль на отель, но потерпел неудачу. Что случилось?

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

Джейсон Клоусон, разработчик программного обеспечения в 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. Я нервно рассмеялся: «Ну, думаю, по крайней мере, возьму хоть кружку».

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

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

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

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

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

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

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

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

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

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

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

Как пройти собеседование в Google: советы по подготовке

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

О чём нужно позаботиться перед собеседованием

  • Имейте копию зачётной книжки;
  • Выберите как минимум 3 дня и время (включая часовой пояс), в течение которого вы будете доступны для технического собеседования по телефону в формате дата-время-часовой пояс, для которого вы указали время;
  • Выберите язык программирования, который вы хотели бы использовать для собеседования: Java, C++, C или Python;
  • Предоставьте актуальные контактные данные, чтобы до вас могли дозвониться в день собеседования.

Советы по прохождению собеседования

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

Планируйте заранее

Инженеры Google, которые будут вас собеседовать, весьма ограничены во времени. Поэтому найдите время и в своём расписании тоже! Также держите под рукой ручку и лист бумаги на случай, если вам скажут что-нибудь записать.

Чего ожидать

Техническое собеседование может длиться до 45 минут. Интервьюера будут интересовать ваши знания принципов Computer Science (структуры данных, алгоритмы и т.д.) и как вы их можете применить в решении задач.

Вопросы на собеседовании

На собеседовании может затрагиваться всё, что указано в вашем резюме (особенно если вы отметили, что вы в этом эксперт!), вайтбординг (это когда вас заставляют писать код на доске или листике), разработка сложных алгоритмов и анализ их производительности, логические задачи, системное проектирование и основы Computer Science — хеш-таблицы, стек, массивы и т.д. Из-за сложности и глобального масштаба проектов, в которых вы будете участвовать, основы Computer Science являются необходимыми для всех инженерных должностей в Google вне зависимости от вашего стажа.

Как добиться успеха

В Google ценят совместную работу и обмен идеями. Поэтому вам понадобится больше информации от интервьюера, чтобы проанализировать поставленный вопрос и развёрнуто на него ответить.

  • Это нормально задавать вопросы интервьюеру.
  • Когда вас просят решить задачу, сначала сформулируйте, как вы её понимаете.
  • Если вам что-то непонятно — попросите помочь или объяснить.
  • Если у вас есть какое-то предположение, проговорите его, чтобы убедиться в правильности своих суждений!
  • Опишите, как вы собираетесь решить каждую часть задачи.
  • Всегда давайте интервьюеру следить за ходом вашей мысли, так как для него это не менее важно, чем конечное решение. Кроме того, если вы вдруг зависнете, то он сможет помочь советом.
  • Наконец, слушайте — не пропустите подсказку мимо ушей, если интервьюер пытается вам помочь!

Кто нужен Google?

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

Интервьюерам важен подход к вопросу не меньше, чем сам ответ:

  • Слушал ли кандидат внимательно и понял ли он вопрос?
  • Задал ли он правильные вопросы, прежде чем приступить? (важно!)
  • Решил ли он задачу перебором? (нехорошо!)
  • Делаются ли какие-либо предположения без предварительной проверки? (нехорошо!)
  • Услышал ли кандидат подсказки и прислушался ли он к ним?
  • Кандидат медленно вникает/решает задачу? (нехорошо!)
  • Предпочитает ли кандидат найти несколько возможных решений, прежде чем выбрать лучшее?
  • Ищет ли он новые пути решения задачи?
  • Является ли кандидат изобретательным и гибким в своих решениях и открыт ли он для новых идей?
  • Возможен ли переход к решению более сложных задач в процессе собеседования?

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

Задавайте больше вопросов!

Удостоверьтесь, что вы имеете чёткое представление о Google как бизнесе — за пределами основных продуктов компании. Узнать, чем занимается Google, можно на сайте компании и в Википедии.

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

Если у вас есть вопросы о процессе собеседования, зарплате или вашей работе, задайте их вашему рекрутеру.

Готовимся техническому собеседованию

Основные пункты, по которым следует пройтись инженерам для успешного прохождения собеседования в Google:

  • Сложность алгоритмов. Очень важно понимать анализ сложности в нотации «О-большое». Попробуйте разобраться с этим на практике.
  • Сортировка. Знайте, как сортировать. Не пузырьком. Следует знать в деталях как минимум один алгоритм сортировки сложности O(n log n), желательно два, например, быструю сортировку и сортировку слиянием. Последняя может быть крайне полезна в ситуациях, когда использовать быструю сортировку нецелесообразно, поэтому обратите на неё внимание.
  • Хеш-таблицы. Пожалуй, самая важная структура данных, известная человечеству. Вы обязательно должны знать, как они работают. Будьте готовы во время собеседования предоставить свою реализацию с помощью массивов на вашем любимом языке.
  • Деревья. Имейте представление о деревьях, знайте базовые алгоритмы построения, обхода и управления деревьями. Ознакомьтесь с двоичными, n-ичнымии и префиксными деревьями. Также нужно знать хотя бы один вид сбалансированного двоичного дерева, будь то красно-чёрное, расширяющееся или АВЛ-дерево, и как его реализовать. Разберитесь в алгоритмах обхода дерева: поиске в ширину и глубину, и узнайте разницу между прямым, симметричным и обратным обходами.
  • Графы. Графы имеют большое значение в Google. Есть три основных способа представить граф в памяти: объекты и указатели, матрица и список смежности; ознакомьтесь с каждым представлением и его преимуществами и недостатками. Вы должны знать основные алгоритмы обхода графа: поиск в ширину и поиск в глубину. Знайте их вычислительную сложность, преимущества и недостатки и как их реализовать с помощью кода. По возможности попробуйте изучить более интересные экземпляры вроде алгоритма Дейкстры и A*.
  • Математика. Некоторые интервьюеры задают вопросы по основам дискретной математики. В Google на это обращают больше внимания, чем в других компаниях, из-за характера задач, с которыми там работают. Потратьте немного времени перед интервью на повторение (или изучение) основ комбинаторики и теории вероятностей. Вы должны знать о задачах сочетаний из n по k и ей подобных — чем больше, тем лучше.
  • Операционные системы. Ознакомьтесь с процессами, потоками и параллелизмом. Необходимо знать, что такое блокировка, мьютекс, семафор и монитор и как они работают. Узнайте, что такое взаимная блокировка и livelock и как их избежать. Имейте представление о том, какие ресурсы нужны процессам и потокам, как работает переключение контекста и как оно инициируется операционной системой и аппаратной частью. Не будет лишним немного знать о планировании выполнения задач. Мир быстро движется в сторону многоядерности, поэтому также не помешают знания основ «современных» концепций параллелизма.
  • Программирование. Нужно хорошо знать как минимум один язык программирования, желательно C++ или Java. C# тоже подойдёт, так как он довольно похож на Java. Вас попросят написать код если не на всех, то как минимум на нескольких собеседованиях. От вас будут ожидать глубоких знаний вашего любимого языка программирования.

Примеры тем на собеседовании

  • Программирование. Построение/обход структур данных, реализация системных подпрограмм, переход от больших наборов данных к одиночным значениям, преобразование одного набора данных в другой;
  • Разработка/анализ алгоритмов. «О-большое», сортировка и хеширование, обработка очень больших объёмов данных. Также смотрите темы, указанные в разделе «Программирование»;
  • Проектирование систем. Наборы функций, иерархия классов, проектирование систем при определённых ограничениях, простота и надёжность, компромиссы;
  • Открытые вопросы. Самые сложные задачи, которые вам встречались, лучшие/худшие встреченные проекты, анализ производительности и оптимизация, идеи для улучшения существующих продуктов.

Полезные ресурсы при подготовке к собеседованию

  • Видео, где рекрутеры делятся советами;
  • Презентация инженеров из Google о том, как подготовиться к техническому собеседованию;
  • Канал Google с множеством полезных видео;
  • О процессе приёма на работу на Google Careers;
  • Статья о том, как отвечать на открытые вопросы Google.

Думаете о работе в Google и хотите больше узнать о том, как там работается? Почитайте статьи, которые мы публиковали ранее: «Как белорус вернулся из Google и запустил ИТ-курсы» и «Бороться и проиграть, или почему я ушел из Google после четырех лет успешной работы«.

Читать еще:  Что одеть на собеседование женщине
Ссылка на основную публикацию
Adblock
detector