Подготовка к собеседованию на позицию Software Engineer в крупную компанию

Кто готовился или уже прошел интервью в крупные компании - предлагаю поделиться опытом. Тысячи ребят из СНГ работают в Google/FB/Netflix и при этом коммьюнити абсолютно мертвое. Особенно в сравнении с китайцами и их 1point3acres.com, где они подробно описывают все детали и помогают друг другу. Менталитет у нас такой фиговый или что, но как-то это печально.

Наиболее близкая ко мне стратегия хорошо описана здесь Loading...

Пару моментов, что я бы добавил:

  • В начале я бы повторил/изучил algorithms and data structures если вы смутно представляете как работает HashMap или почему в QuickSort worst case это N2
  • Mock интервью поможет справиться с нервами, нужно обязательно провести несколько перед реальными собеседованиями

Не знаю по-поводу китайцев или индийцев… Но во многих случаях прохождение интервью имеет явные или неявные правила NDA (non-disclosure agreement). Поэтому делиться реальными деталями интервью это как бы может считаться нарушением закона.

По-поводу “интервью для программистов в целом”… У меня знакомый. Уже в Штатах порядка 20 лет. Работает в страховой компании. Недавно заикнулся, что “решает задачки по программированию”, и на мой вопрос “а нафига” ответил, что "сейчас даже очень опытных программистов заставляют на интервью решать задачи по всяким транспонированиям матриц, сортировок сложных массивов и т.д. Знание языков и опыт это одно, но “аптитюд” и поведение в случае нетривиальных ситуаций, это другое.

А на счет “мок интервью”… Будь вы в Штатах, я бы посоветовал просто подавать на все возможные позиции, чтобы проходить реальные интервью. Но так как вы в Москве, и ищете спонсора на рабочую визу, я скептически отношусь к возможности того, что кто-то будет реально тратить на вас время на полноценные многоуровневые интервью. С другой стороны вы вполне можете поискать позиции в других странах и проходить интервью там.

Подобный опыт интересен как раз. Он метит в FAANG? В моем понимании задачки спрашивают в больших ИТ-компаниях, в других местах требуют конкретный опыт в конкретной сфере. В компании, где 5 программистов пишут проект на Java, нужно найти именно Java-кодера, который придет и быстро начнет писать код в продакшн. Или leetcode-мода перекочевала и туда тоже?

Хороший совет, использовать реальные компании для подготовки. Находясь в Москве, можно практиковаться в Европе.

Еще как перекочевал. Мой приятель как раз недавно собеседовался в компанию с 5ю программистами(Cary, NC). И там его просили решать задачки. Просто задачки были проще чем “в больших ИТ-компаниях”. Он таки настоял чтобы его по джаве спросили…но после этого и после того как он позволил себе покритиковать выбор текущих технологий, команда сказала что он им не нравиться, хотя он ответил на все вопросы.

В другой конторе(тоже из 5 программистоа), его спрашивали как по джаве так просили решать задачки.

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

Почему в Европе? Вы разве в Европу собираетесь?

Есть один ньюанс - до технического интервью нужно еще дойти. Мой приятель работает на бодишоп в Сан-Франциско по H1B. Он достаточно крут и хочет перейти в Google, Oracle, etc…Но с начала года дальше разговоров с рекрутерами дело не идет. По его ощущениям дело 1) в английском(не таком уж и плохом) 2) в комунткативных навыках.

Вы можете начать тренировать общение с рекрутерами и телефонный скрининг будучи где угодно. Как делал я, сделал себе американский телефон(куча сервисов это позволяет), выставид в профиле linkedin американскую локацию и статус ищу работу.
За 5 дней ко мне пришли 10 рекрутеров и было 2 тел разноворв с рекрутерами. Но так я говорил что мне нужна виза(а мог бы и сказать что я green card holder) дальше этого не пошло.

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

По поводу алноритмической подготовки. Один мой знакомый работает в Facebook, второй получил офер от Google. Так вот они в один голос утверждают что им понадобился 1 год, чтобы подготовиться. Причет второй вначвле не мог написать даже “пузырек”.

Мне в соседней теме указали, что в Big 4 проще попасть Москва - Европа, чем сразу в штатых, нет проблем с H1B

Неожиданно! Но на это можно и как на плюс смотреть. Условно надо не на два разных типа собсеседований готовиться, а к одному. Все “стандартизировано”.

Как я понимаю, обычно у компании есть свои 5-7-10-N принципов. То, как вы принимали решения в определенных ситуациях должны совпадать с тем, как компания видит это. Например, Netflix сравнивает себя с “professional sport team”. Если вы рекрутеру скажите, что ищите stability и seniority, то на следующий этап вас точно не пригласят.

Попросите их рассказать о стратегии подготовки. Можно и 3 года готовиться, но безрезультатно.

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

Уже. Стратегия одна - решать задачки на leetcode. Все. Про чтение книжек по алгоритмам и по поведенческим вопросам не упоминаю - маст хэв.

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

По отзывам человека из Амазона, индийцы “прорвавшиеся” туда технически неграмотны, просто они натренировались решать задачки(он конечно не может утверждать за весь Амазон, но в его проекте так).

Так что задачки, задачки и еще раз задачки.

По поводу 3х лет. Речь про работающих фултайт, семейных людей. Можно наверное и быстрее года. Но ежели за 3 года нет результатов(а я знаю и таких) то наверное лучше сидеть ровно и ни о каких позициях Software Engineer в крупных компаниях не мечтать ибо за 3 года, не то чтобы подготовиться к собеседованию, можно получить degree в другой сфере и найти работу.

Терзают подозрения, что в них вообще мало кто разбирается. Ну, то что сами интервьюверуемым выкатывают, это всё. :slight_smile:

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

С другой стороны, другой мой приятель на телефонном интервью в IBM решал задачку, чтобы не соврать, по завершению процессов. Т.е. дан список процессов, нужно их остановить. У процесса могут быть дочернии процессы. По сути обход графа. Но так как мой приятель не силен в алгоритмах(нет, задачку он решил) решение не особо понравилось и на интервью его не позвали.

Нет, тут DFS n-арного дерева. И лучше сразу произвести впечатление итеративным решением. :slight_smile: Задание отличное, на практике встречается.

Все у кого аналог Computer Science в дипломе, проходили это в универе. У меня и структуры данных были, и даже dynamic programmig. Другое дело что за много лет подзабылось.

Мне кажется, не все так просто. Как минимум, на 2й (E4 Facebook, L4 Google) уровень уже как минимум один раунд это System Design. Так же на собеседованиях смотрят на то, как ты подходишь к проблеме. А если ты привык молча кодить и решать “походу дела”, это будет явно проблемой.

Деревно это частный случай графа (связанного и без циклов), выражение “обход графа” не совсем уж неправильное :wink:
Хотя обход дерева, безусловно, проще (не надо запоминать посещенные вершины).

На blind чел пишет, что это связанно с их системой образования. Они учатся больше сдавать экзамены, чем решать проблемы.

Вот подозреваю тот товарищ так и сделал. Это и не понравилось. Частные случаи потому и акцентируются, потому что их реализации эффективнее.

Правильно тут пишут - leetcode + system design. При решении задач важен не сам факт решения, а скорость с которой приходишь к результату (не к алгоритму, а к конечной реализации). Если ты решаешь задачу средней сложности больше часа, то это в большинстве случаев неудовлетворительно.
Вчера было очередное еженедельное соревнование на leetcode, 4 задачи и 1.5 часа времени. У меня ушло час и 29 минут на решение, а у первого места всего 13 минут. Первые 200 мест в пределах 45 минут.
Тренироваться надо пока решения (желательно оптимальные) не станут очевидными при первом же прочтении условия (как минимум для средней сложности задач), и сам код типовых решений не будет выходить на автомате. Год тренировок тут выглядит вполне в тему.

Можно попробовать https://interviewing.io/ (Free, anonymous technical interview practice with engineers from Google, Facebook, and more)

Сам ни разу не пользовался, но идея интересная.

1 лайк

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

Там вроде можно записаться в список ожидания. Рано или поздно придёт приглашение.

Слишком хорошо чтобы быть правдой.

Вопрос скорее к работодателям - а какая польза от такого программиста?