[recovery mode] Мой опыт подготовки к трудоустройству в Google
От переводчика: сегодня публикуем для вас статью Праякты Татавадкар, она разработчик с небольшим стажем, но знания и опыт позволили ей получить работу в Google (со второй попытки), стать членом команды разработчиков YouTube.
Google была для меня компанией мечты с самого начала пути. Когда я успешно прошла собеседование, ко мне стали обращаться многие знакомые и друзья с просьбой поделиться опытом. Беседуя с ними, я определила самые важные для большинства вещи, которыми теперь делюсь в этой статье.
Skillbox рекомендует: Прикладной онлайн-курс «Аналитик данных Python».
Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».
Сразу скажу, что в 2014-м я уже пыталась устроиться в Google, но с треском провалила собеседование. В течение нескольких лет я училась, работала, приобретала новый опыт и знания, которые и помогли мне получить оффер.
Мотивация
В течение трех с половиной лет я работала программистом в стартапе, также сотрудничала с еще парой финтех-компаний. Каждая из работ давала мне тонны опыта, который в итоге помог относительно легко устроиться в Google.
Я поняла одну вещь: когда впереди замаячит новая возможность, я буду готовиться к предстоящим изменениям, не отвлекаясь на второстепенное. Подготовка помогла получить работу в Google, хотя мне и казалось, что вероятность была меньше 1%. Но где-то в глубине своей души я была уверена, что попробовать стоит.
Кандидаты часто не понимают, насколько важно изучить особенности компании, в которой хочешь работать. Игнорировать этот момент не стоит.
Выделяем этапы подготовки к собеседованию
Мой опыт позволяет говорить о пяти важных вещах, которые необходимы в процессе подготовки. Программирование, дизайн, знание языка, предыдущие проекты и резюме — это самые важные, но не единственные элементы подготовки.
Программирование
Все компании, в которых я проходила собеседования, проводили меня минимум через два раунда чисто алгоритмических вопросов, где вам дают проблему, которую нужно решить — иногда для этого приходится писать код.
Пример: напишите код для вывода значений от 1 до 10 в консоли (конечно, я упрощаю).
Структура
В зависимости от уровня собеседования, мне давали разные задачи в плане создания проекта программной платформы. В большинстве случаев показывали абстрактную систему, для которой нужно было разработать структуру.
Пример: если бы вам пришлось написать сайт социальной сети с нуля, как бы вы спроектировали систему?
Этот этап собеседования был отдельным, вопросы о проектировании приложений задавали в рамках других этапов.
Проверка знания языка
На большинстве интервью от вас ожидают знания языка, чаще того, работать с которым вам наиболее удобно. В некоторых случаях задают базовые вопросы, в других — углубляются в суть.
Пример: что такое наследование в Java?
Предыдущие проекты/Резюме
Это один из этапов, к которому я иногда забывала готовиться, и совершенно напрасно. Собеседование — это не только вопросы о программировании и проектировании приложений. Это еще и попытка узнать, насколько вы хороши в качестве командного игрока. Нужно рассказать, как вы работали с другими членами прошлой команды. Вопросы здесь могут быть весьма специфичными.
Пример: расскажите немного о проекте, которым вы гордитесь.
Информация о компании
Как я уже говорила, этап подготовки к собеседованию, который включает изучение деталей о компании, в которую вы устраиваетесь, часто игнорируют соискатели. Вам могут задавать прямые и косвенные вопросы о самой компании — потенциальном работодателе.
Пример: почему вы хотите работать именно в XYZ?
Подготовка к интервью
Я готовилась к интервью тщательно, получая информацию из самых разных источников. Ниже перечислены некоторые из них.
Курсы Udemy
Помню начало подготовки: я приобрела три курса Udemy. Они помогли мне в базовых вещах. Кстати, я не закончила ни один из них, но прошла большую часть каждого курса. Я выбрала именно эти курсы, поскольку понимала, что формат видео позволит подготовиться быстрее, чем текст. Лучше всего, когда кто-то поясняет сложные места, в которых вы не можете разобраться самостоятельно. Курсы помогли вспомнить, как решаются упражнения, которые были частью лекций.
Курсы LeetCode Premium
Я заплатила за эти курсы около $70, и они стоили каждого вложенного пенни. Они помогли мне практиковаться в программировании, в изучении сложных технических вещей, важных для обучения и работы.
Видео с YouTube
YouTube был другом, который помогал в процессе подготовки. Не только в учебе, но и в отдыхе от учебы. Идея была в том, чтобы искать видео, помогающие разобраться в вещах, которые мне не давались. Не нужно было проходить какой-то курс, достаточно посмотреть лишь короткое видео с объяснением. Часто я смотрела одни ролики и в процессе наталкивалась на другие, не менее полезные.
Я даже представить не могла, что через два месяца стану работать в команде YT! Чудеса случаются.
Другие ресурсы
Также рекомендую ресурсы от Gayle Laakmann McDowell:
Cracking the coding interview
Пошаговое объяснение собеседования в виде диаграммы.
Подготовка к этапу по дизайну систем:
Hired in tech course
Собеседование по дизайну, плейлист от Рамона Лопеса.
Я начала интенсивную подготовку к этапу по программированию за один месяц до самого собеседования, и закончила изучение, решив 60–70 задач, в основном то, что чаще всего спрашивают на собеседованиях.
Подготовка к «программистскому» этапу продолжительностью в один месяц
Я уже говорила, как мне помогли курсы LeetCode. На них обучают программировать, помогая решать задачи, которые чаще всего встречаются на собеседованиях, и раскрывая суть вопросов, задаваемых на интервью с соискателем. Справедливости ради скажу, что ни один из этих вопросов не попался мне лично, кроме того, то, о чем спрашивали меня на собеседовании, вообще не встречается в сети. Но замечу, что концепция самих вопросов очень похожа на то, что можно найти в интернете или на курсах. Все это имеет отношение к решению проблем, идентификации паттернов и другим вопросам.
В процессе подготовки я решала две и больше задач ежедневно. Проблемы могут различаться, их решение занимает от получаса до часа. Все зависит от сложности вопроса. Уровень курсов разделялся на легкий, средний, сложный, company specific. Даже задачи среднего уровня были для меня довольно сложными. Их решение занимало по часу. Мой совет — если через час вы не смогли найти решение, просто посмотрите в ответ.
В целом, я сосредоточилась на решении легких и средних задач. Сложных я решила не более десяти. В затруднительных местах приходил на помощь YouTube, я искала решение именно там.
Я старалась решать и задачи из секции company specific. И здесь сделала ошибку, работая лишь с задачами от Google. Я начала именно с них, а не с вопросов и задач «простой» секции. Они были чрезвычайно сложными, я не справлялась. В итоге расстроилась, моя мотивация снизилась, и некоторое время я просто ничего не делала. Совет — начните с простых вопросов, переходите к задачам средней сложности, и уж только потом приступайте к специфическим упражнениям.
Общие советы
Не подвергайте себя стрессу. В процессе подготовки я жила полноценной жизнью, работала с прежней эффективностью в предыдущей компании и не слишком нервничала.
Выделяйте небольшое количество времени ежедневно, но занимайтесь подготовкой один-два месяца, полностью используя выделенное время.
Выходные — наши лучшие друзья! Используйте их на всю катушку. Что касается меня, то я провела два выходных дня за подготовкой, пройдя сразу много курсов и решив несколько сложных задач. Эти выходные дали мне толчок, который помог в будущем.
HR тоже ваш друг. Перед интервью не постесняйтесь спросить о формате интервью, материалах, которые стоит использовать, общих советах.
Начинаете с общей подготовки, включая курсы, YouTube, чтение статей. Специфические материалы оставляйте на десерт.
Не занимайтесь лишь кодингом. Решайте и другие задачи, включая проектирование систем. Смотрите тематические видео. Наслаждайтесь процессом обучения.
На самом собеседовании можно попросить ноутбук. Я так сделала во время своего собеседования. Просто писать на доске решения — это как-то странно. В целом, лучше на бумаге/доске показать ход решения, а практическую реализацию уже выполнить на компьютере.
Ищите тематическую информацию в сети, делайте это время от времени.
Подумайте о худшем развитии событий. Я представила себе ситуацию, когда мне не удается устроиться в Google. В принципе, в этом случае ничего страшного не происходит, можно работать в прежней компании или попробовать пройти собеседование в любой другой. Это успокоило меня и сделало жизнь проще.
Keep calm and code on.
Skillbox рекомендует: