Как свалить из сраной рашки

Как свалить из сраной рашки

Доброжелатель

Короче, мне надоело в очередной раз в месенджере отвечать, как пройти интервью в западную компанию, и я решил написать эту заметку.



Интервью для меня были очень сложными, часть интервью я завалил просто потому, что не понимал, чего от меня хотят, и поэтому хочу поделиться каким-то базовыми соображениями, чтобы избавить вас от наступания на те же грабли, по которым прошёл я.

Куда податься

Три столпа мирового программирования — Google/Facebook/Microsoft. Стоит целиться в них. У них налажен процесс перевоза людей, визы, билеты, гостиницы, подъёмные, временные квартиры, переезд, разрешение на работу, это всё.

В компаниях поменьше с организацией может быть сложнее. Но и попать в них попроще.

У меня не получилось попасть на интервью ни в одну американскую компанию из-за квот по H1-B. Поэтому, вероятно, стоит сразу подаваться в европейские, японские, австралийские, канадские и прочие компании, находящиеся в странах с иммиграционным режимом попроще.

Ещё есть вариант — найти российскую компанию, которая увозит своих сотрудников работать за границу. Туда попасть ещё проще (в первую очередь из-за того, что придётся общаться с русскими людьми). Я знаю одну такую компанию, но наверняка их больше. Поспрашивайте знакомых. Только такие условия надо чётко оговаривать заранее.

В любую компанию лучше всего подаваться через знакомых. Так вы сильно повышаете шанс, что ваше резюме не затеряется у рекрутера, а рекрутер не отправит вас туда, куда вы не хотите.

Подготовка к интервью

CCI

Gayle Laakmann McDowell написала крутейшую книжку — Cracking the Coding Interview.

Это книжку нужно прочитать обязательно. В том числе, решить все задачи из этой книги.

Я, честно говоря, сначала думал, что это читерство, overfitting, и нечестно вообще. Но книжку всё равно прочитал. И вам советую. Поэтому постараюсь не повторять то, что в этой книжке написано.

Потом уже выяснил, что эту книжку официально рекомендуют к прочтению компании, которые нанимают. То есть прямо в приглашении к интервью пишут — прочитайте эту книжку.

Всё, что написано в этой книжке — правда.

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

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

При этом важно, чтобы интервьюер не подумал, что вы обманываете. Если интервьюер решит, что вы обманываете, вы получите strong no hire, и всё, конец, как бы хорошо вы не отвечали на других секциях.

leetcode

Для прохождения интервью надо уметь очень хорошо решать задачи. Я порешал чуть-чуть задач с hackerrank, и очень много с leetcode.

leetcode удобен тем, что там задачи классифицированы по сложности, по компаниям, по предметной области. То есть, если вы путаетесь в связанных списках, надо продолжать и продолжать решать задачи до тех пор, пока решения не будут получаться идеально.

Я решил пару сотен задач. Каждый день после работы по несколько часов я решал эти задачи. Нужно было решить тысячу.

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

Если вы целитесь в Google, то стоит уметь решать задачи уровня hard. Для MS/Facebook нужно уверенно решать medium.

Английский язык

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

Паспорт

Скорее всего вы будете проходить интервью в Соединённом Королевстве и в континентальной Европе. Если повезёт, то ещё в США и в Японии. Вам будет гораздо проще, если в тот момент, когда вам назначат интервью примерно в одно время, у вас будет два загранпаспорта. Вы сможете один паспорт оставить в визовом центре, пока поедете на интервью в другую страну.

Ну и плюс, в некоторых компаниях на момент выхода на работу надо иметь ещё одну визу для командировок. Эту визу будет опять же проще оформить имея два паспорта.

Поэтому второй паспорт лучше сделать заранее.

Планирование поездок

У меня есть чёткое убеждение, что лучше потратить два месяца на интенсивную подготовку, потом в течение пары недель провести несколько скайп-интервью, и потом в течение месяца съездить на онсайты.

Таймлайн такой: начинаете готовиться сейчас, через месяц отправляете резюме и продолжаете интенсивно готовиться, и ещё через месяц начинаете скайпы и сразу же за ними онсайты.

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

Не пренебрегайте возможностью пособеседоваться в компании, в которых вы не хотите работать, перед тем, как собеседоваться туда, куда вы собственно хотите попасть. Больше вы нигде не получите ценный опыт собеседований. Если вас будет мучать совесть, то успокойте её тем, что вы же можете передумать, когда вам сделают очень хороший офер.

И не упускайте возможность посмотреть мир. Например, до Японии лететь 10 часов, если вас приглашают на интервью, попросите купить вам билеты на субботу, а интервью назначить на понедельник. Тогда вы сможете и погулять по красивейшему Токио, и адаптироваться к другому часовому поясу. Провести 20 часов в самолёте и увидеть только офис — глупо.

Резюме

Про резюме в интернете написано много, отмечу кратко два момента.

— Не надо писать про языки программирования и конкретные технологии. Лучше писать общие слова — распределённые системы, базы данных, машинное обучение

— Про последние два проекта надо подробно написать, что делал, и чего достиг. Желательно с числами, например, ускорил время ответа на 30%, или пользователи стали проводить на сайте в два раза больше времени.

Интервью

Мне как русскому православному человеку было тяжело из-за культурной разницы.

Люди за границей, представьте себе, общаются совсем иначе.

Как дела?

Например. Интервьюер в начале интервью спрашивает, как дела?

Русский человек на русском интервью отвечает, отлично, давай решать задачи, и это правильный ответ.

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

На западе всё совсем иначе. У них small talk.

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

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

Однако очень важно, чтобы это всё было искренне. Если заученно повторять текст про красивый город и офис, то получится фальшиво и плохо. Лучше уж ничего не говорить.

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

Слишком простые задачи

Другая ошибка — это говорить что-либо о сложности задач.

На русском интервью, если задали простую задачу, и кандидат об этом сказал, ему ответят, молодец, вот тебе сразу +2 балла, переходим к следующей задаче.

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

Если вы ему ответите, что это слишком простая задача, человек расстроится. Так как вместо благодарности за его помощь вам, вы эту помощь отвергаете.

Я бы не писал об этом так подробно, если бы на интервью в одной компании сразу три иньервьюера написали мне, что я arrogant, хотя я изо всех сил старался притворяться культурным европейцем.

Обычные задачи

Важно понимать один базовый принцип. Интервьюер хочет идти писать свой код, а проводить интервью каждый день он не хочет. И уж тем более не хочет искать ошибки.

Поэтому, во-первых, нужно решать задачи без ошибок. Как ни банально это звучит.

Интервьюер скорее всего не будет даже пытаться внимательно смотреть на решение задачи, пока вы ему не скажете, всё, готово. Перепроверить решение — это ваша обязанность. Лучше это делать вслух.

Поэтому если после того, как вы скажете, что задача решена, интервьюер найдёт ошибку, то он очень расстроится.

Интервьюеры часто задают вопрос: а как бы вы стали тестировать этот алгоритм. Это вопрос не о том, какие бывают методологии и фреймворки тестирования.

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

Ну или этот вопрос может значить, что интервьюер нашёл ошибку, и ожидает, что вы её найдёте.

Сложные задачи

Тут один момент. Если вы знаете тупое экспоненциальное решение, но не можете придумать хорошее, то лучше написать тупое, чем не написать никакое. В принципе, в книжке про это написано, не буду повторяться.

Design

Одна из секций интервью — про дизайн (придумайте архитектуру сервиса Twitter). Для тех, кто работал с большими системами, эта секция обычно не составляет проблем. Иначе, не знаю, для меня эти вопросы всегда были самыми простыми.

Но есть важный момент. Эту секцию надо всегда начинать и заканчивать с цифр. То есть в начале интервью спросить (или предложить самому), какие требования (сколько запросов в секунду, какой объём базы и т. п.), а в конце обязательно сказать, сколько на это всё потребуется серверов в какой конфигурации (например, для фронтенда понадобится 20 серверов без дисков, с 50 Гб памяти, с большими процессорами и гигабитными сетевыми карточками).

Behavioral

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

Это очень важная и сложная секция, несмотря на то, что она кажется простой.

Сложнее всего эта секция происходит в компании Amazon, они там на интервью реально про свой leadership спрашивают больше, чем задачи.

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

Сложная часть собеседования — когда интервьюер спрашивает, что ты хочешь у него узнать. Это делает каждый интервьюер. Мне было проще (и на самом деле даже интересно) спрашивать, чем этот человек занимается, как у них там всё устроено, и дальше уже в зависимости от ответов.

Офер

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

Вот и всё. Если вы примете офер, вам напишут, что делать дальше.

Report Page