Полное руководство по подготовке

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

Сегодня мы рассмотрим следующее:

  • Часть 1. Обзор интервью и часто задаваемые вопросы
  • Часть 2. Процесс собеседования в Google
  • Часть 3. Руководство по вопросам собеседования по кодированию
  • Часть 4. Руководство по вопросам поведенческого интервью.
  • Часть 5. Руководство по ресурсам

Часть 1. Обзор интервью в Google и часто задаваемые вопросы

Обзор собеседования в Google

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

Google обычно нанимает сотрудников на уровне T3, а T11 - это высота уровня. Т3 - инженер-программист начального уровня, работающий полный рабочий день, со степенью бакалавра или магистра. Средняя зарплата сотрудника T3 составляет 117 000 долларов в год. Google предпочитает следующие языки программирования: Java, C ++, C Go и Python.

Есть три типа проблем с кодированием, которые вы можете ожидать во время собеседования в Google.

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

В чем уникальность собеседований Google?

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

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

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

Комитет по найму. Google стремится беспристрастно рассматривать кандидатов, поэтому они используют комитет по найму для всех кандидатов.

Шкала оценок. Каждому интервьюеру выставляется оценка по шкале от 1 до 4 на основе четырех критериев приема на работу, где 3 - это пороговое значение для найма по сравнению с отсутствием найма.

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

Что Google ищет в кандидате?

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

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

Лидерские навыки. Google нанимает кандидатов с новыми лидерскими качествами. Для Google лидерство - это способность решать сложные проблемы и решать их, когда в вас есть необходимость, при этом обеспечивая соблюдение этических норм и правил безопасности. Google также ищет тех, кто дает другим возможность самоорганизовываться и способствовать открытому общению. Ознакомьтесь с 10 основными вопросами на собеседовании с руководством Google.

Технические навыки. Google нанимает кандидатов с самыми сильными способностями к программированию, и они оценивают технические навыки главным образом на основе концептуального понимания, а не запоминания. Они оценивают навыки программирования по следующим темам:

  • Алгоритмы
  • Сортировка
  • Структуры данных
  • Графики
  • Рекурсия
  • Объектно-ориентированное программирование
  • Обозначение Big-O
  • API
  • Как проверить свой код
  • Математика (например, программы n-select-k)

Часть 2. Процесс собеседования в Google

Шаг 1. Перед собеседованием

Подготовка. Подготовка к собеседованию по кодированию - длительный процесс. Я рекомендую подготовиться за три месяца вперед. Вам нужен план подготовки, чтобы не сбиться с пути. Взгляните на подробное собеседование по кодированию подготовительный план для 12-недельного плана, созданного настоящими менеджерами по найму. Обязательно используйте язык, который предпочитает Google, например C ++, Java, Python, Go или C.

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

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

Совет: используйте описание на основе показателей. Попробуйте формулу «Выполнено X, измеренное Y, делая Z». Например, если в вашем резюме указано «Уменьшение времени ответа на запрос сервера», перефразируйте его как «Уменьшение времени ответа на запрос сервера на 15 процентов за счет реструктуризации нашего API».

Шаг 2. Предварительный просмотр с сотрудником Google

Экран вашего телефона прослужит от 45 до 60 минут, скорее всего, в Google Hangouts. Сотрудник Google проверит вас с помощью вопросов по кодированию, связанных со структурами данных и алгоритмами. Вы решите их в Документах Google, используя около 20–30 строк кода.

Во время работы важно передавать свой мыслительный процесс; так они оценивают ваши общие когнитивные способности.

Вы можете ожидать открытого кода. Дополнительные вопросы для разъяснения - отличный способ продемонстрировать навыки решения проблем. Если вы закончите до истечения времени, поищите способы оптимизации и проверьте наличие ошибок. Всегда учитывайте угловые и краевые случаи.

Выездные интервью

Если вы пройдете предварительную проверку, вас пригласят на собеседование на месте. Вы встретитесь с четырьмя-шестью сотрудниками Google по 45 минут каждый.

Эти собеседования на месте будут в значительной степени сосредоточены на кодировании с упором на структуры данных и алгоритмы. Вы будете писать код либо на доске, либо на Chromebook, который вам предоставят. Рекомендуется заранее спросить об этом у рекрутера, чтобы вы могли правильно попрактиковаться.

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

Предложение / нет предложения

Вы получите оценку по шкале от 1 до 4, где три - порог найма или отказа от найма. После завершения собеседования отзывы будут отправлены в комитет по найму для принятия окончательного решения. Этот процесс может занять несколько недель, и если прошло слишком много времени, можно отправить дружеское электронное письмо.

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

Часть 3. Руководство по вопросам собеседования по кодированию

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

15 самых популярных вопросов на собеседовании по кодированию в Google

  1. Найдите K-й по величине элемент в числовом потоке.

Постановка задачи: спроектируйте класс для эффективного поиска K-го по величине элемента в потоке чисел. В классе должны быть следующие две вещи:

  • Конструктор класса должен принимать целочисленный массив, содержащий начальные числа из потока и целое число K.
  • Класс должен предоставить функцию add (int num), которая сохранит заданное число и вернет K-е наибольшее число.

2. Найдите K ближайших номеров.

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

3. Удалить узел с заданным ключом.

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

4. Скопировать связанный список с произвольным указателем.

Формулировка проблемы: вам дан связанный список, в котором узел имеет два указателя. Первый - это обычный указатель next. Второй указатель называется arbitrary_pointer, и он может указывать на любой узел в связанном списке.

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

5. Зеркальное отражение бинарных деревьев.

Формулировка проблемы: учитывая корневой узел двоичного дерева, поменяйте местами левые и правые дочерние элементы для каждого узла.

6. Найдите все пути для суммы.

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

7. Найдите длину самой длинной подстроки, в которой не более K различных символов.

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

8. Найдите самую длинную подстроку без повторяющихся символов.

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

9. Найдите раздел подмножества с равной суммой.

Постановка задачи: для данного набора положительных чисел найдите, можем ли мы разделить его на два подмножества так, чтобы сумма элементов в обоих подмножествах была равна.

10. Определите, действителен ли номер.

Формулировка проблемы: учитывая входную строку, определите, является ли она действительным числом или нет. Для простоты предположим, что во входных данных нет пробелов.

11. Распечатайте сбалансированные комбинации скобок.

Постановка задачи: выведите все комбинации фигурных скобок для заданного значения N, чтобы они были сбалансированы.

12. Учитывая количество задач, определите, можно ли их все запланировать.

Постановка задачи: есть N задач, помеченных от 0 до N-1. Каждая задача может иметь некоторые предварительные задачи, которые необходимо выполнить, прежде чем ее можно будет запланировать. Учитывая количество задач и список пар предварительных требований, выясните, можно ли запланировать все задачи.

13. Реализуйте кеш LRU.

Формулировка проблемы: «Наименее недавно использованные» (LRU) - это распространенная стратегия кэширования. Он определяет политику удаления элементов из кеша, чтобы освободить место для новых элементов, когда кеш заполнен, что означает, что сначала отбрасываются наименее использованные элементы.

14. Найдите высокий и низкий индекс.

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

15. Объедините перекрывающиеся интервалы.

Постановка задачи: вам предоставляется массив (список) пар интервалов в качестве входных данных, где каждый интервал имеет отметку времени начала и окончания. Входной массив сортируется по начальным отметкам времени. Вам необходимо объединить перекрывающиеся интервалы и вернуть выходной массив (список).

12-недельная дорожная карта подготовки

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

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

Неделя 1. Изучите основы своего языка программирования. Если вы освежите в памяти основы, у вас меньше шансов споткнуться во время собеседования. Ознакомьтесь с такими концепциями, как чтение ввода с консоли и объявление и использование 2D-массивов.

Неделя 2 и 3. Ознакомьтесь со структурами данных и алгоритмами. Это важно для кодирования интервью с Google.

Структуры данных, которые вам следует знать:

  • Массивы
  • Связанные списки
  • Стеки
  • Очереди
  • Деревья
  • Графики
  • Кучи
  • Хеш-наборы
  • Хеш-карты / таблицы

Алгоритмы, которые вам следует знать:

  • Поиск в ширину
  • Поиск в глубину
  • Бинарный поиск
  • Быстрая сортировка
  • Сортировка слиянием
  • A*
  • Динамическое программирование
  • Разделяй и властвуй

Неделя 4 и 5. Практикуйте структуру данных и алгоритмические задачи на таких сайтах, как Educative или Leetcode. Начните заниматься простыми задачами кодирования. Это поможет вам в дальнейшем решать более сложные вопросы.

Недели 6–8. Попрактикуйтесь в сложных задачах кодирования и начните рассчитывать время самостоятельно. Важно учитывать время выполнения и сложность памяти для каждого решения.

Недели 9 и 10. Изучите вопросы собеседования по проектированию системы. Теперь они являются неотъемлемой частью процесса собеседования и влияют на ваш уровень найма.

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

Неделя 12. Изучите вопросы объектно-ориентированного программирования и дизайна. Эти вопросы определяют ваше критическое мышление и навыки решения проблем на основе проектов.

Советы по отработке задач программирования

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

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

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

Знайте распространенные ошибки. Когда дело доходит до собеседования в Google, есть три больших подводных камня: незнание большой сложности алгоритма, незнание ожиданий Google и непонимание решения ваших проблем. процесс. Помните об этих подводных камнях во время работы.

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

Часть 4. Руководство по вопросам поведенческого интервью.

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

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

Чего ожидать от поведенческого интервью в Google

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

  • Прошлый опыт
  • Гипотетические ситуации
  • На основе ценностей

Как подготовиться к поведенческому интервью

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

  • Предсказывайте будущее. Вы можете предвидеть большинство вопросов, которые вам будут задавать. У вас есть ресурсы для подготовки ответов. Ниже приведены десять общих вопросов.
  • План. Запишите свои ответы. Практикуйтесь стратегически. Не задавайте вопросов о поведении.
  • Составьте запасной план. Google рекомендует давать три ответа на каждый вопрос. Это поможет вам подготовить разнообразные и интересные ответы.
  • Объясните. Google просит вас объяснить свой мыслительный процесс и процесс принятия решений. Четкое изложение ваших предположений и процессов поможет вам выделиться.
  • Ориентируйтесь на данные. Google хочет получить ответы, которые напрямую касаются ощутимого роста, изменений или демонстрации навыков.
  • Уточните. Вы можете использовать открытые вопросы, чтобы лучше понять свою ценность как кандидата.
  • Улучшение. Google рекомендует всегда сосредоточиваться на улучшении. Вы можете начать с ответа методом грубой силы, а затем поработать над тем, как вы могли бы улучшить свой процесс.
  • Практика. Google рекомендует практиковаться вслух, чтобы получать более четкие ответы.

10 распространенных вопросов поведенческого интервью

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

  1. Опишите свой рабочий процесс для ____. Хотя на этот вопрос нет неправильных ответов, его можно использовать, чтобы оценить, как ваш опыт влияет на вашу повседневную жизнь как разработчика. Хороший ответ - это ваш рабочий процесс, инструменты и умение работать в команде.
  2. Расскажите мне о случае, когда вы рискнули и потерпели неудачу. Этот вопрос дает представление о том, как вы учитесь и подходите к трудностям. Хороший ответ демонстрирует честность и активное обучение перед лицом неудач.
  3. Чем вы гордитесь? Этот вопрос используется для создания разнообразных команд. Google ищет ваши особенности, чувство успеха и ваши ценности в долгосрочной перспективе. Хороший ответ смотрит не только на достижения, но и на то, что он значит для вас как личности.
  4. Что самое сложное, о чем вы много знаете? Расскажите мне об этом. В этом вопросе рассматриваются ваши навыки, коммуникативные навыки и способность объяснять сложность другим. Хороший ответ фокусируется не столько на информации, сколько на эффективности вашего стиля преподавания.
  5. Если вы присоединитесь, как вы повлияете на свою команду? Этот вопрос касается вашей способности вписаться в структуру других. Хороший ответ показывает, что вы исследовали ценности Google. Популярные ответы говорят о целях Google.
  6. Расскажите мне о неструктурированной среде, над которой вы работали. Этот вопрос определяет ваш стиль работы, определяя, что для вас означает неструктурированность. Хороший ответ соотносит ваш стиль работы с занимаемой должностью. Можете ли вы вписаться в заранее заданную структуру?
  7. Что вы хотите, чтобы я знал о вас, что мы не обсуждали? Хорошие ответы показывают, что у вас есть дополнительные навыки, которые могут быть полезны для Google. Они также будут искать навыки межличностного общения, чтобы увидеть, есть ли у вас нетехнический опыт, который принесет пользу их командам.
  8. Какой ваш любимый инструмент Google и как бы вы его улучшили? Этот вопрос оценивает ваши знания о Google, креативность и готовность повлиять на изменения. Хороший ответ основан на данных, но не слишком технических; обязательно сосредоточьтесь на том, почему вы хотите что-то изменить. Помните: это должно облегчить жизнь людям.
  9. Что для вас значит «быть гуглым»? Этот вопрос дает возможность продемонстрировать свои культурные особенности и ценности. В хорошем ответе не используется слишком много жаргона, но он говорит о ценностях, лежащих в основе культуры Google.
  10. Что вас пугает? Этот вопрос помогает выявить ваши слабые места и факторы стресса. Хороший ответ является рефлексивным и направлен не просто на преодоление ваших страхов, но на то, чтобы понять, как они влияют на вас как на работника.

Часть 5. Руководство по ресурсам

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

Ресурсы Google