За пять дней, с 24 по 28 июля 2017 года, я прошел собеседования в LinkedIn, Salesforce Einstein, Google, Airbnb и Facebook; все пять компаний предложили мне работу. Это был замечательный опыт и я понимаю, как мне повезло, что мои усилия оправдали себя, поэтому решил написать об этом. Здесь я расскажу о том, как готовился к собеседованиям, как они проходили и какое впечатление произвели на меня компании.
Я отработал в Groupon почти три года. Это моя первая работа, там были и прекрасные люди, и отличные проекты. Мы делали всякие интересные штуки, вводили перемены внутри компании, публиковали материалы и все в таком духе. Но со временем я стал ощущать, что темп моего самообразования стал затухать (попросту говоря, замедляться), мне не хватало пищи для ума. К тому же, как и всякого разработчика ПО из Чикаго, меня тянуло в Область залива Сан-Франциско — ведь там столько известных компаний.
Жизнь коротка, а профессиональная жизнь еще короче. Обговорив все с женой и заручившись ее полной поддержкой, я решил сделать решительный шаг и в первый раз в жизни поменять работу.
Хотя меня интересовали должности, связанные с машинным обучением, вакансии, которые были доступны в компаниях, различались и номинально, и в плане того, как проводились собеседования. В трех искали инженера по машинному обучению (LinkedIn, Google, Facebook), в одной — инженера по работе с данными (Salesforce), еще в одной — просто разработчика ПО (Airbnb). Соответственно, мне нужно было освежить знания сразу в трех областях: машинное обучение, написание кода и проектирование систем.
Так как я при этом продолжал работать полный день, весь процесс подготовки растянулся на два или три месяца. Вот что я делал.
Код
Соглашусь, что написание кода в ходе собеседования — не лучший способ в полной мере оценить уровень разработчика, однако ничего лучше, чтобы определить, хороший ли вы программист, за короткий временной промежуток, пожалуй, еще не придумали. На мой взгляд, это неизбежное зло, через которое придется пройти, чтобы попасть на желаемое место.
Я практиковался в основном на Leetcode и Geeksforgeeks, хотя Hackerrank и Lintcode — тоже неплохие ресурсы. Несколько недель я повторял распространенные структуры данных и алгоритмы, затем подтянул те области, в которых был не слишком силен, и наконец, принялся за решение типовых заданий. Так как свободного времени у меня было немного, я обычно ограничивался двумя заданиями в день.
Вот несколько советов:
Проектирование систем
Эта область теснее связана с реальным опытом работы. На собеседованиях могут задавать разные типы вопросов, в частности об архитектуре системы, объектно-ориентированном дизайне, проектировании схемы базы данных, проектировании распределенных систем, масштабировании и многом другом.
В интернете можно найти много ресурсов, которые помогут с подготовкой. Я в основном читал статьи об опыте собеседований в сфере проектирования систем и построении крупномасштабных систем, а также практические кейсы.
Вот некоторые ресурсы, которые показались мне особенно полезными:
blog.gainlo.co
horicky.blogspot.com
www.hiredintech.com/classrooms/system-design/lesson/52
www.lecloud.net/tagged/scalability
tutorials.jenkov.com/software-architecture/index.html
highscalability.com
На собеседованиях могут затрагиваться разные темы, но в общем и целом лучше подходить к выполнению заданий, руководствуясь двумя общими правилами:
Подводя итог: лучший способ попрактиковаться в проектировани систем перед собеседованием — сесть и спроектировать какую-нибудь систему; ведь именно этим вам и предстоит заниматься изо дня в день на работе. Не скользите по верхам — глубоко изучите те инструменты, фреймворки и библиотеки, которыми пользуетесь. Скажем, если вы используете Hbase, вместо того, чтобы просто запустить DDL через клиент, постарайтесь вникнуть в общую архитектуру, например: как происходит считывание и запись, как HBase обеспечивает постоянство, зачем нужно полное и неполное уплотнение (minor/major compactions) и где в системе используются кэш LRU и Bloom Filter. Можно даже сравнить HBase с Cassandra, найти сходства и различия. В таком случае, когда вас попросят спроектировать распределенное хранилище, вы не почувствуете себя припертым к стенке.
Много интересного можно также найти на блогах: страницах независимых программистов, блогах инженеров из крупных компаний, а также в официальной документации проектов с открытым кодом.
Самое важное здесь — оставаться любознательным и не переоценивать свои знания. Уподобьтесь губке, которая впитывает в себя все, с чем соприкасается.
Машинное обучение
В собеседованиях в сфере машинного обучения можно выделить два аспекта: теория и проектирование продукта.
Если у вас нет опыта исследований в этой области и вы не оканчивали соответствующего курса с отличием, не помешает почитать специальную литературу. Классические труды вроде Elements of Statistical Learning и Pattern Recognition and Machine Learning — отличный вариант, но если вас интересует более узкая проблематика, можете подобрать что-то на нужную тему.
Убедитесь, что хорошо понимаете базовые концепты: дилемма смещения и разброса, переобучение, метод градиентного спуска, L1/L2 регуляризация, теорема Байеса, бэггинг/бустинг, коллаборативная фильтрация, сокращение размерности и так далее. Ознакомьтесь с самыми распространенными формулами, такими как теорема Байеса, а также с деривациями популярных моделей, например, логистической регрессией и методом опорных векторов. Поработайте с простыми моделями вроде дерева принятия решений и кластеризации методом K-средних. Если упоминаете какие-то модели в своем резюме, изучите их досконально, будьте готовы рассказать о плюсах и минусах.
Что касается дизайна продуктов, нужно представлять себе, как разворачивается процесс создания. Я действовал по такой схеме:
Здесь я снова хочу подчеркнуть, как важно оставаться любознательным и постоянно учиться чему-то новому. Попробуйте не просто использовать API для Spark MLlib или XGBoost и сказать: «Готово!» с чувством выполненного долга, но разобраться, почему стохастический градиентный спуск подходит для распределенного обучения, или понять, в чем отличие XGBoost от традиционного градиентного бустинга, то есть в чем специфика его функции потерь, зачем он вычисляет производную второго порядка, и все в таком духе.
Начал я с того, что отписался HR-менеджерам на LinkedIn и попросил рекомендации. После одной неудачной попытки попасть в звездный стартап (об этом расскажу потом), я тщательно готовился несколько месяцев и наконец, с помощью рекрутеров, набрал собеседований в компаниях из Силиконовой долины на целую неделю. Я прилетел туда в воскресенье и целых пять дней провел в общении с более чем 30 специалистами из лучших IT-компаний в мире. Мне очень повезло — все пять компаний предложили мне вакансии.
Телефонные интервью
Все интервью по телефону проходили стандартно. Отличалась только продолжительность: с кем-то, например, Google, мы говорили час, с другими (Facebook, Airbnb) — 45 минут.
Здесь на первый план выходит квалификация: вы ограничены очень жесткими временными рамками и второго шанса, скорее всего, не будет. Необходимо на лету определить тип задания и в общих чертах объяснить решение. Обязательно проговаривайте свои цели и ход мысли. Поначалу это может вас немного затормозить, но коммуникация играет самую значительную роль в ходе собеседования; чем больше ее — тем лучше. Не пытайтесь зачитать готовое решение, очень высока вероятность, что собеседник раскусит вашу хитрость.
Если вы претендуете на должность инженера по машинному обучению, вам могут предложить вопросы и из этой сферы. Будьте готовы к этому.
Чтобы оптимально распорядиться временем, я назначил три интервью на один и тот же день с интервалом в час. Преимущество здесь в том, при хорошем начале у вас может сработать эффект «поперло»; недостаток, соответственно, в том, что неудачное первое интервью также может повлиять на результаты следующих. Так что эта стратегия подойдет не всем.
Проходить отбор сразу в нескольких компаниях удобно в том отношении, что это дает некоторые льготы. Из-за того, что LinkedIn и Facebook пригласили меня на личную встречу уже после первого телефонного разговора, Airbnb и Salesforce тоже не стали проводить повторное интервью.
Google удивил меня еще больше: они разрешили мне вообще пропустить стадию телефонных интервью и сразу назначили встречу на свободный день, когда услышали, что на следующую неделю у меня уже запланировано четыре собеседования. Я понимал, что будет очень тяжело, но не отклонять же приглашение от Google!
Собеседования
LinkedIn
Это было мое первое собеседование «лицом к лицу»; оно проходило в филиале компании в Саннивейл. Офис очень приятный и люди держатся с профессионализмом, как и всегда.
На каждую сессию отводилось по часу. Вопросы по программированию были стандартными, а вот задания, связанные с машинным обучением, местами показались мне сложными. Но при этом отдел кадров заранее переслал мне материалы для подготовки — они очень пригодились и, в конечном счете, никакие из заданий не застали меня врасплох. До меня доходили слухи, что из всех компаний Силиконовой долины в LinkedIn кормят лучше всего, и судя по тому, что я видел, если даже это не на сто процентов правда, то все-таки недалеко от истины.
Сделка с Microsoft, похоже, разрешила финансовые сложности LinkedIn и дала им свободу заниматься по-настоящему классными проектами. Новые функции — видео, профессиональные рекламные объявления — выглядят интересно. Как компания, которая специализируется профессиональном росте, LinkedIn уделяет большое внимание и развитию собственных сотрудников. Многие команды (скажем, те, кто работает над релевантностью рекламы и отбором контента для ленты) сейчас набирают новых сотрудников, так что, если хотите к ним присоединиться, не тяните.
Salesforce Einstein
Проект-суперзвезда от команды суперзвезд. Команда собралась недавно и в ней еще ощущается атмосфера стартапа. Продукт разработан на стэке Scala, так что здесь реально соблюдается типобезопаность! Компания хорошо себя показывает на конференциях, достаточно вспомнить выступления Мэттью Товбина на Scala Days Chicago 2017 и Ли МакГуайер на Spark Summit West 2017.
Собеседование я проходил в их офисе в Пало-Алто. Команда сплоченная и поддерживает здоровый баланс между работой и личной жизнью. Все увлечены своим делом и получают от него удовольствие. Здесь собеседование состояло всего из четырех сессий и прошло быстрее, чем в других компаниях, но мне не хотелось уходить. После собеседования Мэттью даже сводил меня в музей «HP garage».
Google
Неоспоримый лидер индустрии, о котором даже сказать больше нечего — все и так всё знают. Но компания огромная. В смысле вообще просто ОГРОМНАЯ. Мне двадцать минут пришлось ехать на велосипеде, чтобы встретиться там с друзьями. Ну и очереди за едой бесконечные. А так прямо рай для разработчиков.
Я проходил собеседование в одном из зданий кампуса Mountain View, не знаю, в каком именно, потому что территория ОГРОМНАЯ.
Специалисты, с которыми я общался, выглядели очень умными людьми, а потом заговорили и оказались еще умнее. Здорово бы было с ними работать.
Что мне показалось необычным на собеседовании в Google — это то, как серьезно они относятся к анализу сложности алгоритмов. Хорошо усвойте, что такое Big O нотация!
Airbnb
Стремительно растущая компания-единорог с самобытной культурой и, пожалуй, самым красивым офисом в Силиконовой долине. Новые продукты, такие как Experiences и приложение для заказа столиков в ресторанах, нишевый рынок состоятельных людей и продвижение бренда в Китае — все это указывает на положительную перспективу. Хороший выбор для тех, кто не боится риска и хочет поучаствовать в быстро развивающемся проекте, еще не дошедшем до стадии первичного публичного предложения.
Сессия по программированию проходила не совсем обычно: пришлось работать не на доске, а в интегрированный среде разработки, так, чтобы код компилировался и дал нужный результат. Некоторые задания были очень сложными.
Также Airbnb были единственными, кто устроил мне особое интервью с членами разных команд. Это показывает, что компания серьезно относится к корпоративной культуре и одних технических навыков недостаточно, чтобы гарантированно занять место в компании. Лично я получил удовольствие от общения с сотрудниками из других отделов. Мы поболтали о том о сем и к концу сессии остались довольны друг другом.
В общем и целом, я бы сказал, что собеседование в Airbnb оказалось труднее остальных: и длиннее, и задания сложные, и сессии необычного формата. Если вы хотите туда устроиться, сначала ознакомьтесь с корпоративной культурой и ценностями.
Facebook
Еще один гигант, который продолжает активно расти, но остается компактнее и мобильнее, чем Google. Учитывая его линейку продуктов, которая доминирует на рынке социальных платформ, и крупные вложения в AI и VR, на мой взгляд, у Facebook огромный потенциал для развития в будущем. Тем, кто интересуется машинным обучением, эта компания подойдет идеально, ведь в ней работают такие звезды, как Yann LeCun и Yangqing Jia.
Собеседование мне назначили в Здании №20 — это то, где сад на крыше и окна выходят на океан. Офис Цукерберга расположен там же.
Не знаю, давали ли сотрудникам, которые проводили собеседование, какие-то инструкции на этот счет, но мне не говорили прямо, справился ли я с заданиями. Полагаю, что да.
К полудню четыре предыдущих напряженных дня стали сказываться: у меня разболелась голова. Я продержался все послеобеденные сессии, но чувствовал, что был не на высоте. Я даже удивился, когда узнал, что Facebook тоже готов предложить мне вакансию.
В целом, у меня осталось ощущение, что сотрудники верят в миссию компании и гордятся продуктами, которые создают. Facebook — хорошее место, чтобы строить карьеру: рыночная капитализация в полтриллиона и с постоянным приростом говорит сама за себя.
Это обширная тема, которую я не планировал раскрывать в своей статье, но могу указать на этот материал — он показался мне очень дельным.
Вот общие соображения, которые представляются мне важными:
Истории успеха всегда начинаются с поражений, и собеседования — не исключение. Еще в мае, перед тем, как предложить свою кандидатуру этим компаниям, я провалил собеседование с Databricks.
В апреле со мной связался один из их сотрудников, Xiangrui, и спросил, интересует ли меня возможность стать частью команды Spark MLlib. Я был на седьмом небе по трем причинам: 1) они программируют на Spark, а я очень люблю Scala; 2) у Databricks крутые инженеры; 3) Spark сейчас совершает переворот в мире больших данных. Такую возможность упускать было нельзя, и через несколько дней я начал проходить отбор.
Планка у них очень высокая и весь процесс занимает довольно много времени: сначала нужно заполнить опросник, потом пройти интервью по телефону, потом выполнить задание по написанию кода и, наконец, сходить на личную встречу.
Мне удалось дойти до этапа личной встречи и побывать у них в офисе в центре Сан-Франциско с видом на Трежер-Айленд.
Со мной общался специалист очень высокого класса, но при этом без всяких претензий. В ходе собеседования у меня часто появлялось чувство, что я дохожу до предела своих возможностей. Все шло более-менее гладко, пока на одной сессии я не прокололся по-крупному — не хватило знаний и подготовки, и все закончилось полным фиаско. Xiangrui был со мной очень любезен и проводил меня туда, куда я собирался после собеседования; было приятно с ним поговорить.
Несколько дней спустя я получил письмо с отказом. Этого следовало ожидать, но какое-то время меня одолевала досада. Пусть я и не смог устроиться в Databricks, но все-таки от всей души желаю им продолжать вносить свой огромный вклад в индустрию и достигать большего.
Процесс смены работы у меня продолжался долго — с мая, когда я пошел на первое собеседование, до конца сентября, когда наконец принял предложение — и протекал непросто. Готовиться было трудно, ведь мою основную работу никто не отменял. Несколько недель я жил по такому расписанию: выполнял задания для собеседований до часа ночи, потом вставал в 8:30 и целый день проводил, полностью погрузившись в рабочий процесс своей компании.
Пять дней подряд ходить на собеседования в разные компании тоже было серьезным стрессом и большим риском. Я бы не советовал следовать моему примеру, если время у вас не поджимает. С другой стороны, если удастся получить несколько предложений о работе сразу, у вас будет весомое преимущество при обсуждении условий.
Мне хотелось бы поблагодарить HR-менеджеров, которые ориентировали меня по ходу дела, всех людей, которые уделили мне время, и компании за то, что дали мне возможность пройти собеседование и предложили место в команде. И наконец — самое важное — я благодарен своей семье за любовь и поддержку: родителям, которые следят за каждым моим шагом, начиная с самого первого, любимой жене за все, что она для меня делает, и дочке за ее теплую улыбку. Спасибо и вам, что прочитали этот пост!
Как все началось
Я отработал в Groupon почти три года. Это моя первая работа, там были и прекрасные люди, и отличные проекты. Мы делали всякие интересные штуки, вводили перемены внутри компании, публиковали материалы и все в таком духе. Но со временем я стал ощущать, что темп моего самообразования стал затухать (попросту говоря, замедляться), мне не хватало пищи для ума. К тому же, как и всякого разработчика ПО из Чикаго, меня тянуло в Область залива Сан-Франциско — ведь там столько известных компаний.
Жизнь коротка, а профессиональная жизнь еще короче. Обговорив все с женой и заручившись ее полной поддержкой, я решил сделать решительный шаг и в первый раз в жизни поменять работу.
Подготовка
Хотя меня интересовали должности, связанные с машинным обучением, вакансии, которые были доступны в компаниях, различались и номинально, и в плане того, как проводились собеседования. В трех искали инженера по машинному обучению (LinkedIn, Google, Facebook), в одной — инженера по работе с данными (Salesforce), еще в одной — просто разработчика ПО (Airbnb). Соответственно, мне нужно было освежить знания сразу в трех областях: машинное обучение, написание кода и проектирование систем.
Так как я при этом продолжал работать полный день, весь процесс подготовки растянулся на два или три месяца. Вот что я делал.
Код
Соглашусь, что написание кода в ходе собеседования — не лучший способ в полной мере оценить уровень разработчика, однако ничего лучше, чтобы определить, хороший ли вы программист, за короткий временной промежуток, пожалуй, еще не придумали. На мой взгляд, это неизбежное зло, через которое придется пройти, чтобы попасть на желаемое место.
Я практиковался в основном на Leetcode и Geeksforgeeks, хотя Hackerrank и Lintcode — тоже неплохие ресурсы. Несколько недель я повторял распространенные структуры данных и алгоритмы, затем подтянул те области, в которых был не слишком силен, и наконец, принялся за решение типовых заданий. Так как свободного времени у меня было немного, я обычно ограничивался двумя заданиями в день.
Вот несколько советов:
- Тренируйтесь как можно больше. Без этого никак.
- Но вместо того, чтобы прорешивать все 600 заданий на Leetcode, старайтесь выбирать разные типы и тщательно разбираться в каждом. В общей сложности я выполнил около 70 заданий — просто ощутил, что этого хватит. Я смотрю на это так: если 70 заданий не принесли вам пользы, значит, вы неправильно подходили к их выполнению, и от 700 тоже не будет толку.
- Начинайте с самых сложных. После них все остальные будут казаться простыми.
- Если за два часа вы так и не смогли сдвинуться с мертвой точки, подсмотрите в решения. Тратить больше времени, как правило, не имеет смысла.
- Даже если вы успешно выполнили задание, все равно загляните в ответы. Мне нередко приходилось удивляться продуманности и элегантности предложенных там решений, особенно однострочников на Python.
- Используйте тот язык, который знаете лучше всего и который достаточно широко распространен, чтобы на собеседовании не возникло проблем с объяснениями.
Проектирование систем
Эта область теснее связана с реальным опытом работы. На собеседованиях могут задавать разные типы вопросов, в частности об архитектуре системы, объектно-ориентированном дизайне, проектировании схемы базы данных, проектировании распределенных систем, масштабировании и многом другом.
В интернете можно найти много ресурсов, которые помогут с подготовкой. Я в основном читал статьи об опыте собеседований в сфере проектирования систем и построении крупномасштабных систем, а также практические кейсы.
Вот некоторые ресурсы, которые показались мне особенно полезными:
blog.gainlo.co
horicky.blogspot.com
www.hiredintech.com/classrooms/system-design/lesson/52
www.lecloud.net/tagged/scalability
tutorials.jenkov.com/software-architecture/index.html
highscalability.com
На собеседованиях могут затрагиваться разные темы, но в общем и целом лучше подходить к выполнению заданий, руководствуясь двумя общими правилами:
- Сначала разберитесь с требованиями, затем набросайте общую схему и только потом углубляйтесь в детали. Не нужно сразу хвататься за детали, пока не поймете, что именно от вас хотят.
- Идеальных систем не бывает. Выбирайте, чем пожертвовать, исходя из того, какие перед вами поставили задачи.
Подводя итог: лучший способ попрактиковаться в проектировани систем перед собеседованием — сесть и спроектировать какую-нибудь систему; ведь именно этим вам и предстоит заниматься изо дня в день на работе. Не скользите по верхам — глубоко изучите те инструменты, фреймворки и библиотеки, которыми пользуетесь. Скажем, если вы используете Hbase, вместо того, чтобы просто запустить DDL через клиент, постарайтесь вникнуть в общую архитектуру, например: как происходит считывание и запись, как HBase обеспечивает постоянство, зачем нужно полное и неполное уплотнение (minor/major compactions) и где в системе используются кэш LRU и Bloom Filter. Можно даже сравнить HBase с Cassandra, найти сходства и различия. В таком случае, когда вас попросят спроектировать распределенное хранилище, вы не почувствуете себя припертым к стенке.
Много интересного можно также найти на блогах: страницах независимых программистов, блогах инженеров из крупных компаний, а также в официальной документации проектов с открытым кодом.
Самое важное здесь — оставаться любознательным и не переоценивать свои знания. Уподобьтесь губке, которая впитывает в себя все, с чем соприкасается.
Машинное обучение
В собеседованиях в сфере машинного обучения можно выделить два аспекта: теория и проектирование продукта.
Если у вас нет опыта исследований в этой области и вы не оканчивали соответствующего курса с отличием, не помешает почитать специальную литературу. Классические труды вроде Elements of Statistical Learning и Pattern Recognition and Machine Learning — отличный вариант, но если вас интересует более узкая проблематика, можете подобрать что-то на нужную тему.
Убедитесь, что хорошо понимаете базовые концепты: дилемма смещения и разброса, переобучение, метод градиентного спуска, L1/L2 регуляризация, теорема Байеса, бэггинг/бустинг, коллаборативная фильтрация, сокращение размерности и так далее. Ознакомьтесь с самыми распространенными формулами, такими как теорема Байеса, а также с деривациями популярных моделей, например, логистической регрессией и методом опорных векторов. Поработайте с простыми моделями вроде дерева принятия решений и кластеризации методом K-средних. Если упоминаете какие-то модели в своем резюме, изучите их досконально, будьте готовы рассказать о плюсах и минусах.
Что касается дизайна продуктов, нужно представлять себе, как разворачивается процесс создания. Я действовал по такой схеме:
- Определить цель: прогнозирование, рекомендация, кластеризация, поиск или что-то еще.
- Выбрать нужный алгоритм: с учителем или без учителя, классификация или регрессия, обобщенная линейная модель, дерево принятия решений или нейросеть и так далее. Подготовить аргументы в пользу своего выбора.
- Выбрать или создать нужные функции исходя из доступных данных.
- Выбрать метрики для оценки производительности модели.
- Факультативно: указать, как можно усовершенствовать эту модель, прежде чем передать ее в разработку.
Здесь я снова хочу подчеркнуть, как важно оставаться любознательным и постоянно учиться чему-то новому. Попробуйте не просто использовать API для Spark MLlib или XGBoost и сказать: «Готово!» с чувством выполненного долга, но разобраться, почему стохастический градиентный спуск подходит для распределенного обучения, или понять, в чем отличие XGBoost от традиционного градиентного бустинга, то есть в чем специфика его функции потерь, зачем он вычисляет производную второго порядка, и все в таком духе.
Как проходили собеседования
Начал я с того, что отписался HR-менеджерам на LinkedIn и попросил рекомендации. После одной неудачной попытки попасть в звездный стартап (об этом расскажу потом), я тщательно готовился несколько месяцев и наконец, с помощью рекрутеров, набрал собеседований в компаниях из Силиконовой долины на целую неделю. Я прилетел туда в воскресенье и целых пять дней провел в общении с более чем 30 специалистами из лучших IT-компаний в мире. Мне очень повезло — все пять компаний предложили мне вакансии.
Телефонные интервью
Все интервью по телефону проходили стандартно. Отличалась только продолжительность: с кем-то, например, Google, мы говорили час, с другими (Facebook, Airbnb) — 45 минут.
Здесь на первый план выходит квалификация: вы ограничены очень жесткими временными рамками и второго шанса, скорее всего, не будет. Необходимо на лету определить тип задания и в общих чертах объяснить решение. Обязательно проговаривайте свои цели и ход мысли. Поначалу это может вас немного затормозить, но коммуникация играет самую значительную роль в ходе собеседования; чем больше ее — тем лучше. Не пытайтесь зачитать готовое решение, очень высока вероятность, что собеседник раскусит вашу хитрость.
Если вы претендуете на должность инженера по машинному обучению, вам могут предложить вопросы и из этой сферы. Будьте готовы к этому.
Чтобы оптимально распорядиться временем, я назначил три интервью на один и тот же день с интервалом в час. Преимущество здесь в том, при хорошем начале у вас может сработать эффект «поперло»; недостаток, соответственно, в том, что неудачное первое интервью также может повлиять на результаты следующих. Так что эта стратегия подойдет не всем.
Проходить отбор сразу в нескольких компаниях удобно в том отношении, что это дает некоторые льготы. Из-за того, что LinkedIn и Facebook пригласили меня на личную встречу уже после первого телефонного разговора, Airbnb и Salesforce тоже не стали проводить повторное интервью.
Google удивил меня еще больше: они разрешили мне вообще пропустить стадию телефонных интервью и сразу назначили встречу на свободный день, когда услышали, что на следующую неделю у меня уже запланировано четыре собеседования. Я понимал, что будет очень тяжело, но не отклонять же приглашение от Google!
Собеседования
Это было мое первое собеседование «лицом к лицу»; оно проходило в филиале компании в Саннивейл. Офис очень приятный и люди держатся с профессионализмом, как и всегда.
На каждую сессию отводилось по часу. Вопросы по программированию были стандартными, а вот задания, связанные с машинным обучением, местами показались мне сложными. Но при этом отдел кадров заранее переслал мне материалы для подготовки — они очень пригодились и, в конечном счете, никакие из заданий не застали меня врасплох. До меня доходили слухи, что из всех компаний Силиконовой долины в LinkedIn кормят лучше всего, и судя по тому, что я видел, если даже это не на сто процентов правда, то все-таки недалеко от истины.
Сделка с Microsoft, похоже, разрешила финансовые сложности LinkedIn и дала им свободу заниматься по-настоящему классными проектами. Новые функции — видео, профессиональные рекламные объявления — выглядят интересно. Как компания, которая специализируется профессиональном росте, LinkedIn уделяет большое внимание и развитию собственных сотрудников. Многие команды (скажем, те, кто работает над релевантностью рекламы и отбором контента для ленты) сейчас набирают новых сотрудников, так что, если хотите к ним присоединиться, не тяните.
Salesforce Einstein
Проект-суперзвезда от команды суперзвезд. Команда собралась недавно и в ней еще ощущается атмосфера стартапа. Продукт разработан на стэке Scala, так что здесь реально соблюдается типобезопаность! Компания хорошо себя показывает на конференциях, достаточно вспомнить выступления Мэттью Товбина на Scala Days Chicago 2017 и Ли МакГуайер на Spark Summit West 2017.
Собеседование я проходил в их офисе в Пало-Алто. Команда сплоченная и поддерживает здоровый баланс между работой и личной жизнью. Все увлечены своим делом и получают от него удовольствие. Здесь собеседование состояло всего из четырех сессий и прошло быстрее, чем в других компаниях, но мне не хотелось уходить. После собеседования Мэттью даже сводил меня в музей «HP garage».
Неоспоримый лидер индустрии, о котором даже сказать больше нечего — все и так всё знают. Но компания огромная. В смысле вообще просто ОГРОМНАЯ. Мне двадцать минут пришлось ехать на велосипеде, чтобы встретиться там с друзьями. Ну и очереди за едой бесконечные. А так прямо рай для разработчиков.
Я проходил собеседование в одном из зданий кампуса Mountain View, не знаю, в каком именно, потому что территория ОГРОМНАЯ.
Специалисты, с которыми я общался, выглядели очень умными людьми, а потом заговорили и оказались еще умнее. Здорово бы было с ними работать.
Что мне показалось необычным на собеседовании в Google — это то, как серьезно они относятся к анализу сложности алгоритмов. Хорошо усвойте, что такое Big O нотация!
Airbnb
Стремительно растущая компания-единорог с самобытной культурой и, пожалуй, самым красивым офисом в Силиконовой долине. Новые продукты, такие как Experiences и приложение для заказа столиков в ресторанах, нишевый рынок состоятельных людей и продвижение бренда в Китае — все это указывает на положительную перспективу. Хороший выбор для тех, кто не боится риска и хочет поучаствовать в быстро развивающемся проекте, еще не дошедшем до стадии первичного публичного предложения.
Сессия по программированию проходила не совсем обычно: пришлось работать не на доске, а в интегрированный среде разработки, так, чтобы код компилировался и дал нужный результат. Некоторые задания были очень сложными.
Также Airbnb были единственными, кто устроил мне особое интервью с членами разных команд. Это показывает, что компания серьезно относится к корпоративной культуре и одних технических навыков недостаточно, чтобы гарантированно занять место в компании. Лично я получил удовольствие от общения с сотрудниками из других отделов. Мы поболтали о том о сем и к концу сессии остались довольны друг другом.
В общем и целом, я бы сказал, что собеседование в Airbnb оказалось труднее остальных: и длиннее, и задания сложные, и сессии необычного формата. Если вы хотите туда устроиться, сначала ознакомьтесь с корпоративной культурой и ценностями.
Еще один гигант, который продолжает активно расти, но остается компактнее и мобильнее, чем Google. Учитывая его линейку продуктов, которая доминирует на рынке социальных платформ, и крупные вложения в AI и VR, на мой взгляд, у Facebook огромный потенциал для развития в будущем. Тем, кто интересуется машинным обучением, эта компания подойдет идеально, ведь в ней работают такие звезды, как Yann LeCun и Yangqing Jia.
Собеседование мне назначили в Здании №20 — это то, где сад на крыше и окна выходят на океан. Офис Цукерберга расположен там же.
Не знаю, давали ли сотрудникам, которые проводили собеседование, какие-то инструкции на этот счет, но мне не говорили прямо, справился ли я с заданиями. Полагаю, что да.
К полудню четыре предыдущих напряженных дня стали сказываться: у меня разболелась голова. Я продержался все послеобеденные сессии, но чувствовал, что был не на высоте. Я даже удивился, когда узнал, что Facebook тоже готов предложить мне вакансию.
В целом, у меня осталось ощущение, что сотрудники верят в миссию компании и гордятся продуктами, которые создают. Facebook — хорошее место, чтобы строить карьеру: рыночная капитализация в полтриллиона и с постоянным приростом говорит сама за себя.
Обсуждение условий
Это обширная тема, которую я не планировал раскрывать в своей статье, но могу указать на этот материал — он показался мне очень дельным.
Вот общие соображения, которые представляются мне важными:
- Сохраняйте профессионализм
- Знайте свои преимущества
- Выказывайте искренний интерес к людям и проектам
- Проявляйте терпение и уверенность в себе
- Будьте целеустремленным, но не в ущерб вежливости
- Ни в коем случае не лгите
Провальное собеседование с Databricks
Истории успеха всегда начинаются с поражений, и собеседования — не исключение. Еще в мае, перед тем, как предложить свою кандидатуру этим компаниям, я провалил собеседование с Databricks.
В апреле со мной связался один из их сотрудников, Xiangrui, и спросил, интересует ли меня возможность стать частью команды Spark MLlib. Я был на седьмом небе по трем причинам: 1) они программируют на Spark, а я очень люблю Scala; 2) у Databricks крутые инженеры; 3) Spark сейчас совершает переворот в мире больших данных. Такую возможность упускать было нельзя, и через несколько дней я начал проходить отбор.
Планка у них очень высокая и весь процесс занимает довольно много времени: сначала нужно заполнить опросник, потом пройти интервью по телефону, потом выполнить задание по написанию кода и, наконец, сходить на личную встречу.
Мне удалось дойти до этапа личной встречи и побывать у них в офисе в центре Сан-Франциско с видом на Трежер-Айленд.
Со мной общался специалист очень высокого класса, но при этом без всяких претензий. В ходе собеседования у меня часто появлялось чувство, что я дохожу до предела своих возможностей. Все шло более-менее гладко, пока на одной сессии я не прокололся по-крупному — не хватило знаний и подготовки, и все закончилось полным фиаско. Xiangrui был со мной очень любезен и проводил меня туда, куда я собирался после собеседования; было приятно с ним поговорить.
Несколько дней спустя я получил письмо с отказом. Этого следовало ожидать, но какое-то время меня одолевала досада. Пусть я и не смог устроиться в Databricks, но все-таки от всей души желаю им продолжать вносить свой огромный вклад в индустрию и достигать большего.
Заключение
- Жизнь коротка. Профессиональная жизнь еще короче. Не упустите момент, когда нужно сделать шаг.
- Собеседование — это не только собеседование, но и возможность заняться нетворкингом и завести новые знакомства.
- Всегда будьте любознательны и готовы учиться чему-то новому.
- Итог обсуждения условий будет определять ваше удовлетворение от работы.
- Если вам предложили работу, значит, вы удовлетворяете минимальным требованиям. Максимальных требований не существует. Продолжайте совершенствоваться.
Процесс смены работы у меня продолжался долго — с мая, когда я пошел на первое собеседование, до конца сентября, когда наконец принял предложение — и протекал непросто. Готовиться было трудно, ведь мою основную работу никто не отменял. Несколько недель я жил по такому расписанию: выполнял задания для собеседований до часа ночи, потом вставал в 8:30 и целый день проводил, полностью погрузившись в рабочий процесс своей компании.
Пять дней подряд ходить на собеседования в разные компании тоже было серьезным стрессом и большим риском. Я бы не советовал следовать моему примеру, если время у вас не поджимает. С другой стороны, если удастся получить несколько предложений о работе сразу, у вас будет весомое преимущество при обсуждении условий.
Мне хотелось бы поблагодарить HR-менеджеров, которые ориентировали меня по ходу дела, всех людей, которые уделили мне время, и компании за то, что дали мне возможность пройти собеседование и предложили место в команде. И наконец — самое важное — я благодарен своей семье за любовь и поддержку: родителям, которые следят за каждым моим шагом, начиная с самого первого, любимой жене за все, что она для меня делает, и дочке за ее теплую улыбку. Спасибо и вам, что прочитали этот пост!
kefirfromperm
И даже нет ни одного язвительного комментария про «силиконовую долину».
vmm86
Я немного опоздал.)
Долина — Кремниевая, в не Силиконовая. Не стоит множить неправильные переводы.
mrobespierre
всё верно, поддержу: у англоговорящих есть объективные причины путать одно с другим, у русскоговорящих — нет. совсем.
khim
Почему неправильные? Вы же Маунтин-Вью как «Горновидово» или Алматы как «Яблоневый город» не переводите. Тут — та же ситуация.
Сказать, что «Крмениевая долина» — неправильный перевод нельзя (в конце-концов мы называем Great Britan Великобританией), но и Силиконовая долина — тоже нормально.
Inine
В рамках этой логики можно говорить «силикон-валли». А Силиконовая долина — это как раз перевод. Только неправильный.
khim
Увы и ах, но в большинстве случаев перевод делается именно так: название обьекта — транслитерируется, класс обьекта (город, река ущелье) — переводится. Иногда переводится и название (а есть и сложные случаи — Великобритания), но в целом — это редкость.
profesor08
Ну даже не знаю. Около ляма оба варианта.
skiedr
Кстати да, тот же Тянь Шань вообще идет без перевода.
Balek
"Дело в том, что Silicon Valley — не географической название (которое чаше всего транслитеруют, например: Hollywood — Голливуд), а образное выражение. Поэтому его нужно перевести (как это сделали, например, с поэтическим псевдонимом Голливуда: dream factory — фабрика грез). При этом следует учесть, что слово "silicon" обозначает "кремний", а вовсе не "силикон" (которому соответствует английское "silicone"). Понятно, что название Silocon Valley связано с применением кремниевых микросхем (а вовсе не силиконовых бюстов!)."
— предисловие переводчика к Just for Fun, Линус Торвальдс
sotnikdv
> Сказать, что «Крмениевая долина» — неправильный перевод нельзя
Это именно неправильный перевод. Либо переводчик спутал silicon и silicone, либо вообще не стал парится и написал, как слышал
Силиконовая долина — это про другую отрасль Калифорнии, порноиндустрию ;)
Касательно переводить — не переводить, «кремниевая долина» начиналась как идиома, по производителям чипов, потом стала именем собственным области залива. Поэтому ничего страшного в переводе ИМХО нет. Вот лет через 50, когда будет в чистом виде имя собственное и не более, переводить его будет так же странно, как м-р Браун писать как мистер Коричневый.
gaploid
Есть и такие и такие переводы. К примеру, есть Нью Йорк, но тут же есть и Новый Орлеан. Имена собственные не переводятся, но в случае с долиной, тогда искажается смысл, так как один химический элемент подменяется другим: Silicone(Силикон) и Silicon(Кремний). Что как мне кажется по отношению к месту где живут технари совсем не честно:) Кстати, есть еще и silicone valley, но это порно журнал.
Ezhyg
Ну-ка, ну-ка, какой порядковый номер у элемента «Силикон» и как он на латыни будет — Siliconium — Силикониум, Siliconeum — Силиконеум, Силиционеум..? :D
(вот это ^^^, кстати, называется «сарказм»)
А ещё есть «силикагель», а ещё есть «кремнезём», а ещё есть ...
Dreyk
понимаю, что это перевод, но я бы послушал про опыт менеджмента прохождения нескольких собеседований сразу. в русскоязычной среде почему-то считается табу говорить компании, что ты не только к ним пытаешься устроиться. типа ах так, ну и катись тогда. или например в одно место тебя взяли, а в другом еще думают — что отвечать первым и тд
HellMaster_HaiL
Не знаю о каком табу Вы говорите.
Я несколько раз менял работу в России, несколько раз возникали подобные ситуации. Всегда говорил честно: «У меня есть еще два предложения и два назначенных собеседования. Ваше предложение меня заинтересовало, но я бы хотел взять несколько дней для принятия решения». Как правило такая формулировка понятна, и HR уточнит время, когда с Вами связаться, или даже предложит еще раз встретиться, чтобы обсудить возможные варианты улучшения условий сотрудничества. Если на том конце сразу начинали вопить что-то вроде «Мы не готовы ждать, пока Вы там „навыбираетесь“ или „У нас горит
жопапроект, и нужен ответ именно сейчас“ и даже „Не стоит с нами торговаться!“, то их предложения отвергались сиюминутно. Вы подобным кампаниям абсолютно ни чем не обязаны, и, если их представители начинают себя вести неадекватно и что-то от Вас требовать еще на таких ранних этапах, то это явный и отчетливый признак того, что в такой организации лучше не работать.32bit_me
По моему опыту, наоборот. Если говоришь, что у тебя есть другие предложения, это сильно стимулирует потенциального работодателя.
senya_z
В общем случае именно так. Но бывают и исключения. Знаю случаи, когда после получения офера от Амазона, кандидат говорил рекрутеру, что есть еще офер от ФБ или Гугла, и Амазон офер отзывал, объясняя это тем, что кандидат на самом деле работать у них не хочет, а только использует их офер как рычаг в торговле с теми, куда он на самом деле хочет пойти работать.
32bit_me
В Амазон и Гугл я не нанимался, ничего не могу сказать…
Equin0x
На самом деле, амазоны просто пытаются сохранить лицо. HR-ы прекрасно знают, что у них самые низкие зарплаты в индустрии и их оффер будет смотреться весьма бледно на фоне почти любых других альтернатив.
mak_sim
Впервые слышу про такой подход. У нас в команде сейчас идёт активный набор сотрудников, и я участвую в собеседованиях. Так вот пока из примерно двух десятков кандидатов только несколько человек на вопрос "проходите ли другие собеседования, есть ли уже офферы?" отмечали отрицательно. И к этому нормально всё относятся. Скорее даже наоборот. Я расцениваю существующий оффер у кандидата как преимущество.
asm0dey
Для меня это просто спосб получить предложение лучше от компании. Никогда не скрываю если у меня есть другие предложения или я хожу по собеседованиям.
xDimus
Интересно какую компанию он все таки выбрал.
woworks
Airbnb
KawaiDesu
Как я и думал:
Из комментариев к оригинальной статье.
petrovichtim
А какие зарплаты то предложили во всех этих компаниях?
alexunder
В моем кармане офферы от Amazon, Oracle, VMWare, Google и Facebook. Спрашивайте, если что.
Aquahawk
Как я понимаю сейчас вы не работаете ни в одной из вышеперечисленных компаний, почему?
alexunder
Сделал себе месяц отпуска перед выходом в Google. Работал я в Microsoft.
g0dlike
А какие у вас критерии были, когда выбирали оффер?
Полагались ли вы только на Base+Bonus+RSU или еще какие-то причины при выборе?
alexunder
Деньги были важны, да. Ну а дальше субъективные вещи — желание работать именно в этой компании, возможность роста, возможность перехода между командами, life/work balance, выбор/смена локации. В итоге остались Facebook и Google и это был очень сложный выбор. Я решил, что пойду в Google, а через пару лет, если FB еще будет жив — можно и туда сходить. Субъективно показалось, что FB — более тусовочное, молодежное место.
senya_z
Судя по набору оферов, предположу, что живете вы в штате Вашингтон. Ну а раз работали в Майкрософт, то скорее всего живете на Истсайде. В этом плане Гугл у Фэйсбука выигрывает еще и наличием кампуса на Истсайде, что очень упрощает дорогу на работу — не надо стоять в пробке в Сиэтл. Ну и выбор продуктов, над которыми можно работать, в Гугла побольше чем у ФБ в этом регионе.
alexunder
Скажу только, что сейчас в Гугле на Истсайде проектов очень мало — единицы. А ФБ растет безумно — десятки, если не сотни проектов по всем мыслимым направлениям.
senya_z
Я работаю в Гугле на Истсайде и это не так. Проектов здесь не единицы. В единицы сейчас открыт набор. Но это не означает, что нельзя перейти в другой проект впоследствии. А в ФБ десятки-сотни — это в Калифорнии. В Сиэтле все не так радужно. Ну и послушайте знакомых, работающих в Сиэтловском офисе — о work-life-balance, составе большинства команд (в Сиэтле) и прочем подобном.
alexunder
Да, я имел ввиду команды, куда может канадидат попасть. Переход возможен, но вроде бы только через 1.5 («принято»). Про ФБ — речь именно о Сиэтле. Он растет непомерно. Вроде бы второе здание открывают скоро.
senya_z
В первые пару месяцев на переходы смотрят нормально. Ну выбрал человек команду не совсем подходящую, бывает. Да и после полугода-года переходы я видел неоднократно. Импакт, конечно, будет меньше, чем если бы полноценно работал в команде более долгое время, что скажется на ревью (бонус мог бы быть повыше, акций побольше и т.д.), но и в ФБ все точно так же будет — они на импакт тоже смотрят на своих ревью. ФБ растет, да. Открывают второй здание (у Гугла сейчас 4 здания в Керкленде и 4 в Сиэтле). Но проектов там не так чтобы много. Мои знакомые, работающие в ФБ-Сиэтле, не так чтобы прям в восторге от задач, которые приходится решать. Я как бы не агитирую ни за что — если хочется сходить и лично убедиться, то почему бы и нет? Просто указал на кое-какие расхождения представлений с реальностью.
domix32
Какая разница между Oracle м VMWare? В контексте собеседований конечно же.
alexunder
Обе компании набирают команды для работы над Cloud. Из всех собеседований опыт с VMWare у меня самый не релевантный, т.к. оно было последним и все спешили, так как поджимали сроки по остальным офферам. Была одна очная встреча — обсудили проект. Потом два собеседования по телефону и всё. У Oracle же было более стандартно — телефонка, онсайт. На онсайте пару задач на код, системный дизайн, дизайн классов и поведенческие вопросы. Лидер по таким вопросам Amazon, конечно. Oracle сманил многих разработчиков из Amazone AWS, поэтому и процесс найма очень похож на Amazon.
niksite
Все говорят, что офер в Гугл это месяцы собеседований. А в статье выше — офер сразу после первого же f2f. Где правда?
alexunder
Телефонка (час) + онсайт (день). Дальше ожидание решения комитета — 1.5 недели. Потом подбор команды 1-2 недели. Ожидание финальной подписи директора отдела — пара дней.
senya_z
Коммитет собирается раз в неделю. Когда очень много собеседований — два раза в неделю. Если все интервьюеры написали фидбэк в тот же день, а комитет — на следующий день, то о решении брать или нет можно узнать через 2 дня после интервью (рекрутер позвонит и скажет). сам же офер (цифры и прочее) дают после подбора команды и утверждения специальным комитетом по компенсациям (если торговались) — и это и правда может занять пару-тройку недель.
Valle
1) А это как вообще? Все же офферы имеют срок годности одну-две недели.
2) Случайный вопрос — за сколько времени в среднем на доске решаешь задачи на динамическое программирование типа gas station problem?
3) Как готовился? Я так понимаю это либо олимпиадное программирование либо серьезный вуз CS типа MIT либо сущестенное время на решение типовых задач из интервью либо все вместе?
alexunder
1 — зависит от ситуации. Амазон выставил оффер со сроком на вечер текущего дня. Потом отодвинул на неделю, а потом еще на одну — по просьбе. В Гугл и Фейсбук по слухам оффер действует полгода, но я лично не проверял. Ну то есть полагается, что если вы прошли собеседование в крупную контору (не завязаны на конкретную позицию), не дали отказ и через месяц-два решили продолжить общение — почему бы и нет?
2 — в среднем за 45 минут решается 2 задачи (или задача + усложнение), и 3-я обсуждается + немного общего разговора. Иногда можно и одну задачу решать с кодом на 20-30 минут. gas station problem — вроде бы решается за проход без памяти (константу) и DP. сложно сказать без эксперимента за сколько бы я её написал.
3 — подготовка довольно стандартная: набивать руку на leetcode; повторить Cracking the coding interview, e-maxx.ru, Cormen, Skiena — по ситуации, чтоб закрыть дырки, обнаруженные на leetcode. Не забыть подготовить system design (ссылки в этом посте ок). Освежить воспоминания обо всех проектах, указанных в резюме. Это, я бы сказал, необходимый объем. Дальше — дело случая. В плане собеседования выделяется гугл — отсутствие поведенческих повросов, а вместо них случайные «как работает GC», «что такое делегаты и где вы их используете», «как устроен TCP/IP» и т.п. — тут уж нет методички.
Про образование — наблюдения подсказывают, что скорее желание и труд определяют результат. Если говорить про ребят из России из моего окружения — в лидерах МГУ и НГУ.
Valle
Да, спасибо за ответы. Я провалил три онсайт интервью в гугле т.к. до конца не мог поверить что им действительно нужны такие глубины олимпиадного программирования (навскидку сказать что gas station problem это O(n) это действительно глубины). В первый раз слышу про e-maxx.ru, Cormen, Skiena, спасибо! Случайные вопросы гугла — это хорошо и правильно, хорошие программисты должны знать как работает тот же tcp-ip и к тому же это может быть просто показателем опыта. Все остальное в гуглоинтервью — это какая-то аномалия неадекватная, тот же фейсбук когда алгоритмы спрашивает то сильно все проще у него.
khim
Просто сама-то задачка несложная: любая станция плюс участок дают вам либо уменьшение запаса, либо увеличение. Начни с любой станции и езжай спокойно — вначале топлива в баке будет становиться больше, потом меньше. Если «пронесло» и удалось сделать круг — задача решена, если «не пронесло» и топливо кончилось, то пробовать те станции, где мы были бессмысленно — только хуже будет. Нужно пробовать новые станции. То есть тупо за один обход массива всё делается.
Где тут олимпиадничество? Никаких специальных знаний, никаких алгоритмов, тупо здравый смысл — и всё.
Valle
Ну возможно просто туповат ;-)
Valle
А стоп. Какой круг. Я имел ввиду линейное движение за минимальную цену бензина когда даны цены на заправках и объем бака…
faiwer
Так вы не про эту задачу? В ней:
Т.е. можно вообще ничем не заморачиваться. А просто 1 раз в лоб пробежать по станциям. Речи про минимальный маршрут не идёт.
khim
Добавьте ещё произвольный граф и получите усложнение NP-трудную задачу.
Какая точная формулировка-то? Под gas station problem могут скрываться много разных задач (от тривиальных — проехать по круговому треку притом, что на пит-стопах ограниченное количество топлива, а бак, наоборот, неограничен), до NP-трудных задач, как уже упоминалось.
Проехать от одного города до другого при произвольном графе — полиномиальная задача, но вроде как не O(N).
У меня ощущение, что проблема в том интервью, где упоминалась эта задача была не в том месте, где вы её не решили, а там, где вы ринулись её решать без уточнения условий.
senya_z
Кстати, именно попытка решить задачу без предварительных уточняющих вопросов, очень часто оказывается причиной заваленного интервью в гугл. и чем выше позиция, тем чаще.
khim
Везде нужен баланс. Когда идёте на интервью самое простое — представить, что вас уже взяли на работу и вот эту самую задачу ваш техлид просит вас написать для добавления в систему.
Если на объяснение всех ньюансов задачи, которая решается за час ему потребуется два часа, то вы ему такой в команде нафиг не нужны — лишняя пара рабочих рук с лихвой перекрывается парой не умеющих слушать ушей.
Однако если вы ринетесь решать задачу, не поняв до конца условие — так это ещё хуже: это значит что кому-то придётся решать оригинальную задачу в условиях цейтнота — а деньги, затраченные на вас можно будет считать потраченными впустую.
Так что задавать вопросы нужно до тех пор, пока вы не станете уверены, что поняли задачу правильно — но при этом задавать вопросов нужно как можно меньше. Да, это искусство — но какой же вы сеньор, если вы им не владеете?
senya_z
про «как можно меньше» — лично я никаких штрафных поинтов за уместные вопросы не даю, сколько бы их не было. количество не принципиально, если вопрос задан по существу и важен для решения поставленной задачи. да и никто из моих знакомых за вопросы по существу не снижает оценок.
khim
Впрочем, ещё раз повторю: проблема в «лишних» вопросах — не в вопросах, как таковых! Проблема — в затратах времени на общение с вами! И во время интервью и во время работы тоже.
Если вы можете несколько секунд подумать и обойтись без лишних вопросов — это прекрасно, но если вы, вместо того, чтобы задать вопрос, будете пять минут сидеть и «тупить»… то от этого точно никому хорошо не будет — задайте вопрос, получите ответ… так будет быстрее, а значит и лучше.
senya_z
разумеется — повторение одних и тех же вопросов снова и снова не входит в определение «сколько угодно, лишь бы по существу».
Valle
Если правильно помню, то найти минимальную стоимость поездки по прямой дороге с заправками, даны расстояния между заправками, цена бензина на них, объем бака, потребление бензина машиной, начальные условия.
khim
Я вообще не уверен, что в такой формулировке это O(n). То есть понятно, что нужно покупать на самых дешевых заправках, но их ещё найти нужно! А сортировка по цене — это уже O(N log N) как минимум.
faiwer
В качестве бредовой идеи: едем от заправки к заправке, и на каждой заправляемся по минимуму, чтобы впритык хватило до следующей. Но при этом записываем куда-нибудь резерв: сколько бы мы могли заправить ещё, на этой заправке, если бы в будущем это потребовалось. А потребоваться может если: на текущей заправке топливо дороже, чем можно было взять раньше. Или если топлива недостаточно (хотя этого пункта кажется в задаче нет). Т.е. ретроспективно заправляемся.
Но т.к. стоимость топлива от заправки к заправке варьируется, то нужно писать это в сортируемый список, а это уже не O(n) :(
Если по условию задачи можно ещё менять стартовую точку, то какая-то она мудрёная получается для очного собеседования, ИМХО. Там только на одну отладку пограничных моментов может уйма времени уйти.
Chamie
Заправляем полный бак на первой, запоминаем, сколько взяли и почём. Приехав на вторую:
1. Если бензин дороже, чем на первой, то доливаем доверху, количество и цену запоминаем, сколько и которого (по цене) у нас бензина.
2. Если бензин дешевле, чем на первой, то «заменяем» весь бак новым бензином т.е., вычитаем из той первой покупки количество бензина, оставшееся на момент прибытия на вторую заправку (т.к. мы могли его и не покупать).
И т.д. на следующих заправках, всё время заменяя более дорогой бензин более дешёвым и доливая доверху.
После прибытия в место назначения в баке у нас будет несколько (0..2, скорее всего) объёмов бензина разной цены, их цену вычитаем из соответствующих покупок.
khim
Да, похоже так будет работать. А поскольку бензин мы «используем» один раз (либо сжигая в двигателе, либо заменяя на более дешёвый), то общая сложность — O(N), несмотря на то, что на какой-нибудь станции мы можем O(N) операций сделать.
Хороший повод поговорить о разных видах сложности (амотризированная и прочие).
tym32167
Расскажите про Amazon подробнее, пожайлуйста. На какую должность собеседовались, как само собеседование проходило, вообще для несведущего — плюсы работы в Амазоне (у вас же была причина пройти там собеседование)?
PokimonFromGamedev
Берут обычно везде, вопрос только в $$$.
Статья конечно сказочная. Получить 5 офферов в ведущие компании имея 3 года опыта... Чувствуется некая недосказанность.
Или это не senior позиция?
vaniaPooh
Вот да, по крайней мере в переводе я не увидел информации о том, на какую позицию его взяли. Может в итоге он пошел работать уборщиком?
Bringoff
У него же ещё научная деятельность при университете до этого. Что в Data science очень неплохой такой аргумент.
mbait
Вопросы по машинному обучению не задают, если не PhD. По крайней мере, так было в Facebook и Google пол года назад. Всё те же олимпиадные задачки, что и в 2011, разве что некоторые со временем банят как нерелевантные (что, впрочем, не мешает собеседующим придумывать всякую отсебятину). В Google не берут на конкретную позицию, если нет pre-alloation. Рекрутер может наговорить чего-угодно, но по факту после успешного очного собеседования резюме рассылается внутри компании, и идёт поиск заинтересовавшихся команд. Он может длиться бесконечно долго. В Facebook лучше, там берут сразу, и поиск команды нужно осуществлять самому в первый месяц работы. А вот в стартапах могут вроверять всё, что угодно, там хаос и анархия.
alexunder
В Facebook сейчас два разных вида собеседований: general и machine learning — выбираешь сам. Последний PhD не требует, но опыт иметь не помешает. Команду можно выбирать 4 месяца, а есть случай что и около года, пробуя одну за другой.
mbait
Именно machine learning? Раньше было деление на программистов и data scientists. У последних могли проверять тервер и другие базовые предметы для машинного обучения. Хардкорные вопросы из узкой области задавались именно PhD, которые целились в конкретную команду.
BalinTomsk
В гугле разные уровни рекрутинга, я долго отбивался от рекрутиров, говоря что занимаюсь сложными проблемами и у меня академический девелопмент, они сделали интервью с усталым мужиком, который начал меня долбить нерешенными в компутер сайнс задачами, зачем это ему надо я не понял, на том и растались, а вот в местном китченеровском офисе можно прийти на онсайт интервью в любой день.
alexunder
Я бы добавил такую вещь — поройтесь в своих контактах и найдите друзей или друзей друзей, кто работает в интересующей Вас компании. Попросите этого человека Вас рекомендовать во внутренней системе компании — так Вы облегчите себе весь процесс.
Ну и разогрев — я бы посоветовал начинать с компаний, куда вы скорее всего не пойдете, а под конец оставить желаемые конторы. Делать работу над ошибками после собеседований. Но знайте — разогрев может быть опасен. Могут заманить Вас (и будут), так что до компании мечты Вы можете и не добраться.
x67
Я бы не за каждого друга поручился, не говоря уже о друзьях друзей. Кумовство в таком виде крайне неприемлемо.
senya_z
«Рекомендовать» в данном контексте означает лишь «положить резюме во внутреннюю базу». На вопросы о компетентности можно ответить «близко не работал, не знаком». Это поможет попасть на радар к рекрутеру и повысит шансы на получение интервью, не повлияв на шанс найма после интервью. Конечно, если заведомо известно, что человек не подходит, то рекомендовать не стоит. Но к «друзьям друзей» это вряд ли применимо — там скорее «понятия не имею, сами смотрите».
khim
Однако всё, что вы, тем самым, отсекаете — этап предварительного рассмотрения заявки, когда рекрутер звонит человеку, задает ему пяток вопросов из списка и решает — а стоит ли ему вообще звать вас на интервью.
Специалисты, с которыми вы будете говорить дальше знать о том, что вас кто-то порекомендовал — не будут.
Фактически это единственный способ человеку без «вышки» попасть на интервью: если у вас нет высшего образования, то ваше резюме, скорее всего, просто отложат в сторону и никто с вами говорить не будет — если только вы не пришли с рекомендацией «изнутри». Но от необходимости во время интервью писать код и обсуждать сложность его работы это не отменяет ни разу…
x67
Мне всегда казалось, что «рекомендовать» — значит в какой-то степени нести ответственность за свою рекомендацию. То есть ручаться за того, кого рекомендуешь.
Озвученный вами и senya_z формат часто может быть утопичен. Меня вот например рекомендовали (не по дружбе) и собеседования как такового не было. Вышки как требования кстати тоже во многих местах нет (не считая государственных контор, хотя и там могут закрыть глаза на отсутствие образования, если специалист того стоит). Ну и да, что значит «отложат в сторонку»? Такое чувство, что вы все как на подбор в гугл свои резюме шлете, а коварные эйчары не видя заветной абревиатуры PhD киношным жестом выкидывают ваши документы в корзину.
И даже если все так как вы говорите, вы просто положите резюме на стол руководителю или в стол эйчара, то если друг друга окажется таки болваном или неадекватным человеком, это будет именно вашим упущением. Не представляю руководителя, который увидит резюме подкидыш и не спросив «это откуда?» мигом пригласит кандидата на собеседование.
senya_z
контекст этой ветки был про гугл и фэйсбук. и там формат именно такой, утопичный, как вы его назвали. интервью все равно придется проходить. правда, если вы не просто «положили резюме в базу», а еще и «положительно охарактеризовали» кандидата, то при неоднозначных результатах интервью, характеристика может (иногда) склонить чашу весов в пользу кандидата. у меня были рефералы, которых я «положил в базу» и которых не позвали на интервью (скорее исключение), так что это не гарантирует получения интервью. но шансы на него увеличивает.
насчет образования — не уверен. мне доводилось работать и с людьми без высшего образования (человек интервьюировался в москве, и его, без диплома о высшем образовании по H1-B визе майкрософт привез в редмонд), и с людьми, чье образование было в области кино-индустрии и прочих неайтишных областях. то есть с образованием легче, но без него тоже можно (с соответствующим опытом работы).
erlyvideo
правильно. Тем более что у этого друга можно выяснить другую картину мира, а не ту бредятину, которую будут нести кадровики, выполняющие план.
3dcryx
Тут 2 фактора.
senya_z
По второму пункту — везения тут как бы нет. Человек работал в компании с именем (не из топ 5, но вполне себе в IT-мире известной) по очень модному и всем нужному профилю — машинное обучение. На людей, разбирающихся в этом, спрос сейчас огромный.
zionkv
Не могу выразить восхищения словами точнее, чем: «Братан, тебе череп не жмёт?»
saboteur_kiev
Обратил внимание, что автор статьи благодарит HR за участие в процессе. Всех HR.
А на территории СНГ HR в основном ругают.
Antelle
Потому что в таких компаниях, куда ходил автор, от процесса найма остаются очень приятные ощущения, даже если отказали или не принял оффер.
tyomitch
А мне не понравилось.
Ясно дают понять, что у них там конвейер с сотнями претендентов каждый день, и о человеческом отношении к каждому речи быть не может.
lovermann
Извините, но вы что ожидали? Что с каждым кандидатом будут проводить выходные за кофе, разбором деталей и т.д. Как бы каждый человек понимает, что при устройстве на работу он — ресурс. Это вполне нормально. Вы же тоже рассылаете резюме пачками, а не в 2 конторы, о которых знаете абсолютно всё (откуда?) и хотите работать исключительно и только там.
g0dlike
Да вообще-то всю жизнь у меня
Что я делаю не так?
tyomitch
У меня есть опыт собеседований и в мегамонстры типа Google и FB, и в конторки по 50-200 человек. В обоих случаях я ресурс, но отношение эйчаров в ситуациях «одна вакансия и сотня резюме» и «тысяча вакансий и миллион резюме» радикально разное.
decomeron
Читала и гадала, какую же компанию Вы выбрали и угадала. Не могли бы Вы написать, почему именно ее?
Очень завидую таким умным людям. Спасибо Вам что делаете мир лучше
AbstractGaze
Это перевод. А свой вопрос можете задать по ссылке оригинала (есть в начале перевода)
erlyvideo
> не отклонять же приглашение от Google!
ну черт знает, я трижды отказывал =) Всё сделал правильно.
lanseg
В Гугле три собеседования, потом почти месяц ждать решение, потом ещё месяц ждать оффер и месяц тебе команду могут искать.
Но, может, в США с этим быстрее.
senya_z
три — это нетипично. обычно это телефонное, за которым онсайт на 5 интервью с перерывом на обед. дальше все зависит от расторопности интервьюеров, рекрутера, менеджеров команд. может быть пара недель, может быть пара месяцев.
lanseg
Я посчитал первую беседу по телефону с HR. Тоже своеобразное собеседование.
Methos
блаблабла
как все хорошо, все вежливые, блабалабал, все замечаетенльные. все вежливые, балабала, все профессионалы, бавлабабаба
о чём статья то?
valeriyk
Поржал с «дериваций популярных моделей». Имелись в виду производные?
Arris
Перевод еще одной «истории успеха». Совершенно бесполезной, наравне с котиками в инстаграме. В чем соль то, чему эта статья может научить? От чего предостеречь? Какой опыт передаёт?
P.S. котики в инстаграме хоть чем-то полезны. А тут в чем польза?
lightman
Состоявшиеся рок-звёзды призывают потенциальных оных чутка подтянуть начитанность/общительность и рвануть к ним в топовые конторы, попутно зарабатывая в глазах своих коллег свою собственную галочку по общительности, растекаются в похвалах, чтобы не показаться неблагодарными, ну в общем все эти негласные ритуалы, как у них на там на Западе принято.
Остальные просто с интересом узнают, как там погода наверху/примеряют на себя/удивляются/завидуют. Как минимум +1 тема для завтрашнего обсуждения в курилке.