Стажировки в международных компаниях: как не завалить интервью и получить заветный оффер
Эта статья является переделанной и дополненной версией моего рассказа про стажировку в Google.
Привет, Хабр!
В этом посте я расскажу, что такое стажировка в зарубежной компании и как подготовиться к собеседованиям так, чтобы получить оффер.
Почему вы должны меня слушать? Не должны. Но за последние два года я побывал на стажировках в Google, Nvidia, Lyft Level5 и Amazon. Собеседуясь в компании в прошлом году, получил 7 офферов: от Amazon, Nvidia, Lyft, Stripe, Twitter, Facebook и Coinbase. Так что у меня есть кое-какой опыт в этом вопросе, который, возможно, окажется полезным.
О себе
Студент 2-го курса магистратуры «Программирование и анализ данных» Питерской Вышки. Закончил бакалаврскую программу «Прикладная математика и информатика» Академического университета, которая в 2018 году была перенесена в Питерскую Вышку. Во время учебы в бакалавриате часто решал контесты по спортивному программированию и участвовал в хакатонах. Затем катался по стажировкам в зарубежные компании.
Стажировка
Стажировка — работа для студентов на срок от нескольких месяцев до года. Такие программы позволяют работодателю понять, как стажер справляется со своими задачами, а стажеру — узнать новую компанию, получить опыт и, конечно же, подзаработать. Если за время стажировки студент проделал достойную работу, то ему предлагают полноценную вакансию.
Судя по отзывам, работу в зарубежной IT-компании проще получить после стажировки, чем проходя интервью на фулл-тайм вакансию. Большинство моих знакомых так и устроились в Google, Facebook, Microsoft.
Как получить оффер?
Обзор процесса
Допустим, вы определились, что хотите летом поехать в другую страну и получить новый опыт, вместо того чтобы копать грядки у бабушки. Воу! Все равно помогите бабуле! Тогда пора браться за дело.
Типичный процесс собеседования в зарубежную компанию выглядит следующим образом:
- Подаете заявку на стажировку
- Решаете контест на Hackerrank/TripleByte Quiz
- Проходите скрининговое интервью
- Затем вам назначают первое техническое интервью
- Затем второе, а может и третье
- Зовут на онсайт интервью
- Дают оффер , но это не точно…
Давайте раскрою каждый из пунктов более подробно.
Заявка на стажировку
Капитан подсказывает, что в первую очередь вы должны заполнить заявку на сайте компании. И скорее всего вы об этом догадывались. Но вот что ни капитан, ни вы могли не знать, так это то, что крупные фирмы используют реферальные системы, через которые сотрудники компании рекомендуют братьев по ремеслу — так кандидат выделяется из бесконечного потока остальных желающих.
Если у вас вдруг нет знакомых, которые работают в интересных вам конторах, то попробуйте найти их через друзей, которые вас представят. Если и таких нет, то откройте Linkedin, найдите любого сотрудника компании и попросите закинуть резюме.Он не напишет, что вы классный программист. И это логично! Ведь он вас не знает. Однако шанс получить ответ все равно будет выше. В противном случае, подайте заявку через сайт. Свой оффер в компанию Stripe я получил, не зная ни одного человека, работающего там. Но не расслабляйтесь: мне повезло, что они ответили.
Постарайтесь не сильно расстраиваться, когда на почту будут валиться стопки писем с содержанием вида «вы такой классный, но мы выбрали других кандидатов», или не будут отвечать вовсе, что еще хуже. Специально для вас я нарисовал воронку. Из 45 заявок я получил всего 29 ответов. Только 10 из них предложили пройти собеседования, а остальные содержали отказ.
Чувствуете совет, что витает в воздухе?
Контест на Hackerrank/TripleByte Quiz
Если резюме пережило первоначальный отсев, то через 1–2 недели вы получите письмо со следующим заданием. Скорее всего, вам предложат порешать алгоритмические задачи на Hackerrank или же пройти TripleByte Quiz, где вы будете отвечать на вопросы, касающиеся алгоритмов, разработки программного обеспечения и устройства низкоуровневых систем.
Обычно контест на Hackerrank простой. Часто он состоит из двух задач на алгоритмы и одной задачи на парсинг логов. Иногда еще просят написать пару SQL запросов.
Скрининговое интервью
Если испытание пройдено успешно, то дальше вас ждет скрининговое интервью, на котором предстоит побеседовать с рекрутером о ваших интересах и о проектах, которыми занимается компания. Если проявите заинтересованность, и ваш предыдущий опыт будет соответствовать требованиям, то всё пройдет гладко.
Выскажите все ваши пожелания насчет проекта. Во время такого разговора с рекрутером из Palantir, я понял, что мне будет неинтересно работать над их задачами. Поэтому мы больше не тратили время друг друга.
Если вы дожили до этого момента, то основная доля случайности уже позади! Но если облажаетесь дальше, то вините только себя ;)
Технические интервью
Дальше идут технические интервью, которые обычно проводят по Skype, Hangouts или Zoom. Заранее проверьте, что на вашем компьютере все работает. Во время собеседования и так будет над чем понервничать.
Формат технических интервью сильно зависит от позиции, на которую собеседуетесь. Кроме первого из них, которое все равно будет на решение алгоритмических задач. Здесь, если повезет, вас попросят писать код в онлайн редакторе кода, типа coderpad.io. Иногда в Google Docs. Но хуже этого я ничего не видел, так что не стоит переживать.
Также могут задать вопрос на объектно-ориентированный дизайн, чтобы посмотреть, как хорошо вы разбираетесь в проектировании программного обеспечения и какие шаблоны проектирования знаете. Например, могут попросить спроектировать простенький онлайн-магазин или твиттер. Поскольку в прошлом году я собеседовался на позиции, связанные с машинным обучением, то на собеседованиях мне задавали соответствующие вопросы: где-то нужно было ответить на вопрос по теории, где-то решить задачку по теорверу, а где-то задизайнить систему распознавания лиц.
В конце интервью вам наверняка предоставят возможность задать вопросы. Рекомендую отнестись к этому серьезно, ведь благодаря вопросам можно показать свою заинтересованность и продемонстрировать компетентность в теме. Я заготавливаю список вопросов. Вот пример некоторых из них:
- Как устроена работа над проектом?
- Каков вклад разработчика в итоговый продукт?
- Какую сложную задачу вам приходилось решать за последнее время?
- Почему вы сами решили пойти работать в эту компанию?
Поверьте, на последние два вопроса интервьюерам сложно ответить, но зато они отлично помогают понять, что творится внутри компании. Отмечу, что далеко не всегда вас собеседует человек, с которым предстоит работать в дальнейшем. Поэтому эти вопросы дают ориентировочное представление о происходящем в компании.
В случае успешного прохождения первого интервью вам предложат второе. От первого оно будет отличаться интервьюером и, соответственно, задачами. Формат, скорее всего, останется таким же. После прохождения второго интервью могут предложить и третье вау, вы далеко зашли.
Онсайт интервью
Если до этого момента вам не отказали, то вас ждет онсайт интервью, когда кандидата приглашают на собеседование в офис компании. Может быть и не ждет… Далеко не все компании проводят этот этап, но многие из тех, кто проводит, будут готовы оплатить перелет и жилье. Разве плохо придумано? Шикарно! Я вот всё еще не был в Лондоне… Но в некоторых случаях вам предложат пройти этот этап по скайпу. Я просил Twitter поступить так, потому что было много дедлайнов, и не было времени мотаться на другой материк.
Онсайт интервью состоит из нескольких технических интервью и одного поведенческого. Во время поведенческого интервью вы беседуете с менеджером о ваших проектах, о том, какие решения вы принимали в разных ситуациях, и тому подобном. То есть интервьюер пытается лучше понять личность кандидата и более детально разобраться в опыте работы.
Ну все, впереди только приятное волнение:3 Нервишки щекочутся, но сделать ничего не можешь. Если все прошло гладко, то бояться нечего — оффер прилетит. Если нет — печально, но такое случается. Во сколько мест вы подались? В два? Ну тогда на что вы надеялись?
Как готовиться?
Резюме
Это нулевой шаг. Просто даже не читайте дальше статью. Закройте вкладку и идите делайте нормальное резюме. Я серьезно. Пока я катался по стажировкам, много народу просило меня зареферить их в компанию на стажировку или фулл-тайм позицию. Часто резюме были плохо оформлены. Компании и так редко отзываются на заявки, а плохие резюме стремятся опустить этот процент до нуля. Когда-нибудь напишу отдельную статью про оформление резюме, но пока помните:
- Указывайте ВУЗ и годы обучения. GPA тоже желательно добавить.
- Убирайте всю воду и пишите конкретные достижения.
- Сделайте резюме простым, но опрятным.
- Попросите кого-нибудь проверить резюме на наличие ошибок в английском языке, если у вас с этим есть проблемы. Не копируйте перевод с Google Translate.
Почитайте вот этот пост и загляните еще в Cracking the Coding Interview. Там про это тоже есть.
Кодинг интервью
Мы еще не проходили никаких интервью. Я пока рассказал, как выглядит весь процесс в целом, и теперь нужно хорошо подготовиться к собеседованиям, чтобы не упустить шанс приятно и, возможно, с пользой провести лето.
Существуют такие ресурсы как Codeforces, Topcoder и Hackerrank, который я уже упомянул. На этих площадках можно найти большое количество алгоритмических задач, а также отсылать их решения на автоматическую проверку. Это все здорово, но оно вам не нужно. Многие задачи на этих ресурсах рассчитаны на длительное время решения, требуют знания продвинутых алгоритмов и структур данных, в то время как задачи на собеседованиях обычно не такие сложные и рассчитаны на 5–20 минут. Поэтому в нашем случае куда больше подойдет такой ресурс, как LeetCode, который и был создан как инструмент подготовки к техническим собеседованиям. Если вы решите 100–200 задач разной сложности, то с большой вероятностью у вас не возникнет проблем во время интервью. Из достойного еще есть Facebook Code Lab, на котором можно выбрать длительность сессии, например, 60 минут, и система подберет вам набор задачек, на решение которых в среднем уходит не более часа.
Но если вы вдруг оказались задротом, который просиживает свою молодость на Codeforces я был одним из них, то вообще здорово. Рад за вас. У вас должно все получиться ;)
Еще многие советуют прочитать Cracking the Coding Interview. Сам же я выборочно читал лишь некоторые её части. Но стоит отметить, что я много решал алгоритмических задачек в свои школьные годы. Не решал гномиков? Тогда лучше почитай.
Также если у вас в жизни не было или было мало технических собеседований в зарубежные компании, то обязательно пройдите парочку. Но чем больше, тем лучше. Вы будете увереннее себя чувствовать во время интервью и меньше нервничать. Организуйте пробные собеседования на Pramp или даже попросите об этом друга.
Свои первые интервью я проваливал ровно потому, что у меня не было такой практики. Не наступайте на эти грабли. Я уже сделал это за вас. Не благодарите.
Поведенческие интервью
Как я уже упомянул, во время поведенческого собеседования интервьюер пытается подробно узнать про ваш опыт и понять ваш характер. Что если вы отличный разработчик, но дикий эгоист, с которым невозможно работать в команде? Думаете просто работать с Джорджем Хоцем? Я не знаю, но подозреваю, что сложно. Знаю людей, которые отказались. Вот и интервьюер хочет понять это про вас. Например, могут спросить, в чем заключается ваша слабая сторона. Помимо вопросов такого рода, вас попросят рассказать про проекты, в которых вы играли ключевую роль, про проблемы, с которыми довелось встретиться, и их решения. Иногда такие вопросы задают и в начале технического собеседования. Как готовиться к таким интервью, хорошо написано в одной из глав в Cracking the Coding Interview.
Главные выводы
- Сделайте нормальное резюме
- Найдите того, кто может вас зареферить
- Подавайтесь везде, куда можно податься
- Решайте литкод
- Поделитесь ссылкой на статью с нуждающимися
P.S. Я веду Telegram канал, где я рассказываю об опыте прохождения стажировок, делюсь впечатлениями о местах, которые посещаю, и высказываю свои мысли.
P.P. S. Завел себе YouTube канальчик, на котором буду рассказывать полезные штуки.
P.P. P.S. Ну если уж совсем нечего делать, то можете посмотреть вот это интервью на канале ProgBlog