Как я получил оффер от 5 топовых компаний Кремниевой Долины
//Подготовка
Когда я решился на этот эксперимент, я работал разработчиком в Groupon. Но так как подходы к разработке во всех компаниях разные, мне предстояло изучить много нового.
Я внимательно прочитал описания вакансий: трём компаниям требовался специалист по машинному обучению (LinkedIn, Google, Facebook), Saleforce искали специалиста по работе с Big Data, Airbnb требовался разработчик . Значит, мне предстояла подготовка по трём направлениям: разработка, системное проектирование и машинное обучение.
Так как я всё ещё работал 5/2, на подготовку ушло около 2-3 месяцев. Я расскажу, как я готовился по каждому из трёх направлений.
Разработка
Тестовые задачи по программированию - не лучший способ проявить себя как разработчика. Но на собеседовании вам точно придется решить несколько, поэтому стоит посвятить время тому, чтобы в них разобраться.
В основном я использовал Leetcode и Geeksforgeeks для подготовки, но Hackerrank и Lintcode - тоже хорошие ресурсы.
Несколько советов:
- Практикуйтесь. Большая часть задач решается именно практикой.
- Не тратьте время на все 600 задач на Leetcode: выделите по одной из каждого блока и проработайте их.
- Начинайте с самого сложного. Потом вы с легкостью разберетесь с оставшимся.
- Экономьте время: если застряли с одной задачей более чем на два часа, посмотрите решение в источниках.
- Используйте язык, с которым вы знакомы лучше всего. Так вы будете увереннее и обоснованнее отвечать на собеседовании.
Системное проектирование
Хорошая новость: эта область наиболее применима на практике, плохая новость: в нее входит очень много задач:объектно-ориентированное программирование, проектирование баз данных, масштабируемость. Звучит страшно, но подготовиться реально. Ниже подборка полезных онлайн-ресурсов.
- http://blog.gainlo.co
- http://horicky.blogspot.com
- https://www.hiredintech.com/classrooms/system-design/lesson/52
- http://www.lecloud.net/tagged/scalability
- http://tutorials.jenkov.com/software-architecture/index.html
- http://highscalability.com/
Машинное обучение
Собеседования по машинному обучению можно разделить на 2 части: теория и решение задач. Если у вас нет опыта в машинном обучении, рекомендую заняться чтением классики: the Elements of Statistical Learning и Pattern Recognition and Machine Learning.
Убедитесь, что вы знакомы с базовыми терминами машинного обучения: линейная и логистическая регрессия, переобучение, регуляризация по нормам 1 и 2 порядка, теорема Байеса, коллаборативная фильтрация, уменьшение размерности и т.д. Затем изучите базовые формулы (такие как теорема Байерса) и научитесь применять логистическую регрессию и метод опорных векторов. Овладейте несколькими несложными инструментами вроде дерева решений и метода k-средних. Если вы пишете в резюме о том, что владеете каким-либо из инструментов, будьте готовы ответить на вопросы по нему.
//Интервью
Телефонное интервью
Все телефонные интервью похожи. Единственное различие в продолжительности: от 45 минут в одних компаниях (LinkedIn) до часа в других (Facebook, Airbnb).
Ключ к успеху - способность быстро решить поставленную задачу. У вас всего одна попытка и ограниченное время. Озвучивайте ход мыслей и идеи: это позволит вам немного расслабиться, а интервьюеру лучше понять вас и направить. Коммуникация - самое важное при прохождении интервью.
Очные интервью
Каждая секция заняла около часа. Вопросы по разработки стандартные, а вот с машинным обучением пришлось попотеть. До собеседования HR выслала мне список вопросов, к которым мне следовало подготовиться, поэтому на самом собеседовании не было неожиданных задач. Я слышал, что в LinkedIn лучшая еда во всей Долине и, знаете… Это действительно так! Видно, что Microsoft финансирует в компанию, что помогает им создавать действительно крутой продукт и разрабатывать новые инструменты.
Saleforce Einstein
В компании чувствуется дух стартапа: видно, что команда старается и работает над проектом с удовольствием. Собеседования состояло из 4 секций, и это было сравнимо с двумя полноценными интервью. Смешно сказать, но после 4 секций мне не хотелось уходить! А с последним интервьюером мы так разговорились, что отправились вместе на прогулку.
Абсолютный лидер индустрии, здесь я вам вряд ли расскажу что-то новое. Но офис огромный. То есть он правда ОГРОМНЫЙ. Чтобы доехать на велосипеде от одной части офиса к другой, мне потребовалось 20 (!!) минут. Из минусов я заметил только слишком длинные очереди, чтобы пообедать. А в остальном - это идеальное место для разработчика! Идеальное!
Airbnb
Быстроразвивающаяся компания с уникальной корпоративной культурой и одним из самых красивых офисов в Кремниевой Долине.
Собеседование в Airbnb было одним из самых сложных и было не похоже ни на одно другое. Секции не были разделены по тематикам и интервьюеры были из разных отделов компании.
Мое собеседование проходило в Корпусе 20. На крыше расположен сад, а из окон открывается фантастический вид на океан (кстати, офис Цукерберга расположен в этом же здании).
Самым сложным было то, что интервьюеры не давали мне понять, правильно ли я отвечаю на вопросы. К тому же, это было пятое собеседование за неделю, и я уже чувствовал, что устал. Как вы понимаете, предложение о работе от Facebook было самым неожиданным!
Думаю вам интересно, на какой компании я остановился. Так что, если у вас остались вопросы по подготовке, вы можете найти меня в офисе Airbnb с начала ноября ;)
Источник: medium.com