Главная » Хабрахабр » [Перевод] Как я успешно прошел шесть собеседований в Силиконовой долине

[Перевод] Как я успешно прошел шесть собеседований в Силиконовой долине

За шесть дней, в период с 13 по 20 августа 2018 года, я прошел собеседования в шести компаниях Силиконовой долины (LinkedIn, Yelp, Apple, Amazon, Facebook и Google) и получил от каждой предложение о работе.

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

Надеюсь, моя история вдохновит кого-нибудь, кто сейчас в том же положении (не совсем доволен текущей работой, мечтает переехать в область залива, но несколько недотягивает в плане подготовки), дерзнуть — кто знает, что готовит для них будущее.

Введение и статистика

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

Четыре из них (Reddit, Nest, Stripe, Uber) отказали мне сразу же после получения письма. Принимая все это во внимание, я отправил резюме в двадцать компаний. Простая арифметика подсказывает, что шесть компаний откликнулись и предложили мне побеседовать с рекрутером. Из оставшихся шестнадцати десять (Lyft, Airbnb, Dropbox, Instagram, YouTube, Square, Robinhood, Twitter, Snap, Slack) вообще не дали никакой обратной связи. В итоге я получил шесть приглашений на телефонное интервью, шесть — на собеседование в и офисе и шесть же предложений о работе.

Просмотрев свой календарь в Google, я прикидываю, что распределялось это все примерно так:

  • 7 встреч с рекрутерами за 10 дней
  • 7 технических собеседований за 11 дней
  • 29 интервью в офисе за 8 дней
  • 3 телефонных интервью по следам собеседований

Сложив эти цифры, можно подсчитать: я прошел 46 интервью за 73 дня (если считать промежутки между этапами). Было тяжело, и многие недели приходилось тратить все свои обеденные перерывы на встречи. Я стал приходить на работу спозаранку, чтобы иметь возможность уходить пораньше и проводить вечера за телефонными разговорами. Сложности создавало и то, что нужно было продолжать как следует выполнять свои обязанности на текущей работе — однако я всегда старался отдавать приоритет именно ей и переносил встречи, если того требовали обстоятельства. Отлынивать, чтобы удобнее было собеседоваться, я не собирался. Это неэтично, оставляет плохое впечатление, к тому же, может кончится тем, что и новое место не найдешь, и на старом испортишь себе репутацию.

Компании (в хронологическом порядке)

LinkedIn (Саннивейл, штат Калифорния)

Всё время нашего взаимодействия я был под впечатлением — и от корпоративной культуры, и от инженерных решений. LinkedIn, на самом деле, разрабатывает вполне симпатичные приложения, да и в open source сообщество они делают немалый вклад. Если сравнивать позиции в рейтинге престижа на рынке iOS в начале и в конце всего процесса, именно эта компания сильнее всего поднялась в моих глазах.

Yelp (Сан-Франциско, штат Калифорния)

Мне понравилась атмосфера у них в офисе. Приложение Yelp отлично смотрится: чувствуется тонкость выделки, говорящая о доскональном знании платформы iOS. По сравнению с другими компаниями из моего списка эта совсем маленькая, и это сказывается на всем — но сказывается положительно. Само здание очень красивое, и я был бы рад работать в одной команде с любым из тех людей, которые проводили собеседования. Команда кажется очень сработавшейся, а рабочие процессы разворачиваются крайне быстро.

Apple (Купертино, штат Калифорния)

Я их бешеный фанат с самого детства (ну, лет с двенадцати точно). Apple уже давно стал неотъемлемой частью iOS рынка (ха-ха). iPhone SDK стал мне подспорьем, чтобы сделать и выкатить первое моё приложение. Именно благодаря их компьютерам Mac я вообще увлекся программированием. Не знаю даже, что еще сказать на их счет. Когда они пригласили меня пройти собеседование в офисе, а потом стать частью команды — это было как во сне.

Amazon (Пало-Алто, штат Калифорния)

Однако должность и команда отвечали тем критериям, которые я установил для себя в начале. Я бы не назвал Amazon компанией ориентированной прежде всего на мобильную разработку, скорее наоборот. Так что в этом плане мне просто не повезло со временем. Тот офис в Пало-Алто, где я собеседовался, меня не впечатлил, но это временное прибежище и скоро они должны переехать в какое-то здание, более соответствующее стилю Amazon. Буквально от каждой компании я слышал: «У нас тут атмосфера совсем как в стартапах!», но у Amazon это действительно похоже на правду. Люди, с которыми я общался, показались мне весьма увлеченными своими проектами.

Facebook (Менло-Парк, штат Калифорния)

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

Google (Маунтин-Вью, штат Калифорния)

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

План подготовки

Внесу ясность: когда я стартовал, то был теоретически в состоянии решить большую часть заданий из раздела «Простые» на Leetcode минут за тридцать и примерно 25% заданий из раздела «Средней сложности», если не ставить ограничений по времени. Решать задания из раздела «Сложные» для меня тогда было всё равно что пытаться доказать равенство классов NP и P. Одним словом, мне предстояло много работы.

По воскресеньям с самого утра я вставал, шел в кафе и там прорешивал задачи для Objective-C. Чтобы подтянуть алгоритмы, я для начала обратился к книге Cracking the Coding Interview. После нескольких недель таких занятий я ощутил, что уже достаточно хорошо усвоил «основы», и перешел к следующему этапу. Проработав приличное количество задач из книги (где-то около тридцати пяти), я переходил на Leetcode и пересматривал задания, которые соответствовали пройденным главам.

Эта книга значительно сложнее, чем предыдущая. Вооружившись своими базовыми знаниями, я взялся за Elements of Programming Interviews. Если правильно помню, один был рассчитан на четыре недели обучения, и я прошел его почти полностью. Там приводятся рекомендуемые планы занятий, и я старался не слишком от них отклоняться. Причем под «критически важно» я подразумеваю не просто «полезно», а то, что это нужно рассматривать как обязательный элемент учебной программы. По моему мнению, критически важно поупражняться в прорешивании заданий на доске или провести с кем-нибудь репетицию интервью по телефону. Не сомневаюсь, что кто-то и без этого сможет получить работу, но я для себя не нашел лучшего способа отработать навыки.

Найти меня можно на CS Career Hackers — обращайтесь, глядишь, как-нибудь договоримся, если буду не очень занят. Если кому-то нужен партнер для репетиций собеседования на должности, связанные с iOS, то я буду рад помочь. Конечно, вам будет неловко. А если нет, есть и другие люди, которые охотно вас поддержат. Если бы всё получалось само собой, то и практиковаться смысла было не было, так ведь? В этом весь и смысл. Лично я поначалу чувствовал себя очень скованно, а потом в какой-то момент это прошло, так что тренировки более чем окупились. Если во время репетиций у доски или на телефоне, вы сильно смущаетесь или чувствуете себя не в своей тарелке, значит, вы делаете именно то, что нужно — приучаете себя заранее.

Все их я не перебрал, но перебрал достаточно. После месяца ежедневного прорешивания заданий (по два-три часа в будние дни, на выходных больше) я сосредоточился на разделе «Популярные вопросы на собеседованиях» на Leetcode. Стремиться заучить все решения не стоит, это невозможно. Для подготовки к интервью по алгоритмам главное — дойти до того уровня, когда можешь найти решение прямо по ходу интервью. Ведь и сам процесс разработки происходит по той же схеме. Практически все задания, с которыми я сталкивался в ту неделю собеседований, были для меня новыми — но вместе с тем, смахивающими на то, что я уже видел. Многие задачи в общих чертах повторяют друг друга, но каждый случай отличается особым набором ограничений.

Чему я научился

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

  • Не бросайте. Когда я искал первую свою серьезную работу после колледжа, меня хватило всего на неделю-другую занятий. Я рассудил так: видимо, мне просто это не дано. Ведь прошло уже больше недели, а практически никакого прогресса не наблюдается, так какой смысл и дальше тратить время впустую? Но на этот раз я решил, что выбора у меня нет. Спустя какое-то время картина начала складываться. Труда придется вложить немало, но именно желание учиться выделяет успешных соискателей на фоне прочих.
  • Тренировки — наше (почти) всё. Разумеется, здесь нужен и определенный уровень врожденных способностей, но практика (то есть обучение) способна изменить очень и очень многое. Людей нанимают не за то, с чем они родились. Их нанимают за то, что они способны выполнять успешно определенные обязанности, а где и когда они получили необходимые знания — не имеет значения.
  • Тренировки совместно с друзьями — наше остальное. Неважно, репетируете вы у доски или пользуетесь чем-то вроде Codeshare, суть в том, что когда на продолжительное время с чьей-то помощью погружаешься в атмосферу собеседования, оно уже далеко не так пугает. Если во время интервью мозг вдруг даст сбой и вы выдадите какую-нибудь глупость, это уже не выбьет вас из колеи. Ну а если вам удастся найти человека, который знает решения даже для тех заданий, которые вам непонятны, и может подтолкнуть вас в нужном направлении — будет вообще идеально. Серьезно, такие тренировки — на вес золота.
  • Охват решает. Можно тренироваться до одурения (и даже продуктивно) — и все равно не получить работу, потому что ваше резюме не попало к нужному человеку или на вас напал ступор у доски и вы не решили задачу вовремя. Лучшая гарантия — обеспечить себе максимум шансов. То есть посылать резюме всем, кто вас устраивает и кому вы подходите под требования, а не только наилучшему варианту. Я вот отобрал целый топ-двадцать компаний!
  • Решение — процесс, а не результат. Заучиванием ничего не добьешься. За неделю мне предложили около двадцати заданий по алгоритмам, и только одно из них было мне знакомо (о чем я сразу и сообщил, хотя многие сочли бы это лишним). Но я научился выявлять паттерны, и поэтому мне удавалось находить решения с ходу.
  • Не опускайте руки. Не раз и не два я застревал, и сотруднику, проводящему собеседование, приходилось подводить меня к правильному ответу. Это не помешало мне получить предложения о работе от всех компаний. Было и одно собеседование, которое я, по ощущениям, безнадежно завалил (четыре из пяти сессий, на мой взгляд, тянули только на однозначное «нет»), а на деле, они в итоге пригласили меня в команду. Короче, чего только не бывает в жизни.
  • Не спешите отметать задания. Когда я занимался с другом, он часто отмахивался от самых сложных заданий, говоря, что это мне не пригодится. Что интересно, из тех четырех типов задач, которые, по его словам, «точно не попадутся», два попались. Не совсем в том виде, в каком мы их прорешивали, но в очень похожем. Если в процессе обучения вы регулярно сталкиваетесь с каким-то концептом — проработайте его.
  • Не недооценивайте важность «мягких навыков». Думаю, большой частью своего успеха я обязан тому, что мои (вполне честные) ответы на вопросы соответствовали политике компании. У меня есть теория, что очень сильные разработчики иногда с трудом находят достойное место работы просто потому, что ведут себя грубо, лгут или не знают, как держаться в ситуациях, которые не имеют отношения к программированию. На мой взгляд, всё это — веские причины отказать кандидату. Поэтому отрабатывайте своё поведение так же, как и технические навыки.
  • Показывайте свои знания. На собеседованиях часто возникали ситуации, когда, отвечая на вопрос, я упоминал какое-то еще из своих умений с оговоркой, что за недостатком времени не могу подробно рассказать о внедрении этого решения. Разговор идёт о строках? Покажите в своём решении, что умеете работать с Unicode, или расскажите, как его поддерживать. Вызываете приватный метод? Объясните, как обстоят дела с методами в Objective-C. Обновляете данные в table view? Перечислите анимации, которые можете поддерживать. Если вы разбираетесь в чём-то слабо, поднимать эту тему, конечно, не стоит. Но вот если вам есть что сказать — воспользуйтесь возможностью выйти за узкие рамки, в которые загоняет вас исходный вопрос, и покажите своё преимущество перед теми, кто не сходит с проторенной дорожки.
  • Старайтесь не дотянуться до планки, а поднять ее. От впечатления, которое вы произведете на собеседовании, зависит не только то, предложат ли вам работу, но и то, на каких условиях ее предложат. Если в какой-то момент к вам придет уверенность, что ваших знаний для этой вакансии достаточно — отлично! Но не забывайте: между «более-менее дотягивает» и «абсолютно точно подходит» есть огромная разница. Вашей целью должно быть второе. Условия, которые мне предлагали изначально (то есть до переговоров), были очень и очень неплохими, и я думаю, собеседования сыграли здесь не последнюю роль.

В заключение

Ну, вот и всё! Марафон был тот ещё, но я ни о чем не жалею. Искренне надеюсь, что всё, что я тут написал, кому-нибудь поможет сойти с мёртвой точки в погоне за работой мечты. Если кому-то интересны советы, актуальные именно для iOS сегмента, могу поделиться, так что пишите в комментарии.

Если вас это обнадежит: это моя вторая работа после колледжа, у меня около двух с половиной лет опыта работы, никаких громких имён в резюме, я закончил очень скромный колледж, у которого на «ярмарке вакансий» никогда не появлялись крупные компании, я начал процесс подготовки в конце апреля, а резюме стал рассылать в июне-июле, и наконец, всего за несколько месяцев я получил работу, о которой мог только мечтать.

Если вы ищите, где бы попрактиковаться, или просто хотите пообщаться с людьми, которые находятся в вашем положении (или хорошо с ним знакомы, с любой стороны), пожалуйста, не проходите мимо. Напоследок хочу ещё раз прорекламировать сообщество CS Career Hackers. Удачи в подготовке! Мне оно попалось только через несколько месяцев после подписания контракта, но всё равно, там здорово.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Ложные срабатывания в PVS-Studio: как глубока кроличья нора

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

Онлайн контест по решению задачи из теории игр

Привет, Хабр! На факультативе по теории игр мы решаем различные интересные задачи, и я хотел бы поделиться с вами одной из таких. Меня зовут Миша, и я студент. Описание игры «Я люблю вархаммер, поэтому решил адаптировать условие» Играют двое. 1. ...