Окончательное руководство по получению должности инженера-программиста в компании FAANG

Окончательное руководство по получению должности инженера-программиста в компании FAANG

1 марта 2022 г.

[Примечание автора: почти 5000 слов, вы, вероятно, не захотите читать это на мобильном устройстве. Добавьте в закладки и вернитесь позже.]


Я инженер-программист, работал в Microsoft и Google. Некоторое время назад я отправился в 120-дневное путешествие по поиску работы, прошел более 30 собеседований и получил несколько предложений.


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


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


Моя цель — создать план и дорожную карту, которые может использовать любой кандидат при поиске следующей работы.


Целевая аудитория


  • Опытный инженер-программист

  • Подача заявки на роль индивидуального участника в крупных технологических компаниях (например, Google, Meta, Microsoft, Apple, Amazon и т. д.)

  • Ориентация на средний и старший инженерный уровень

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


Мотивация



Большинство людей, с которыми я общаюсь, ненавидят процесс поиска работы и собеседования. Основная причина, по которой я слышал, это «процесс несовершенен, и я хочу покончить с этим как можно скорее».


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


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


  • Уровень вашей компенсации. Я видел, как люди увеличивали свою компенсацию с 30% до 200%, когда меняли работу.

  • Повысьте уровень своей карьеры. Сообщив свою историю и успешно пройдя собеседование по проектированию системы, вы нацелитесь на уровни, равные вашей текущей работе или выше.

  • Найдите работу, которая вам действительно интересна.

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


Не верите мне, что вы могли бы получить более высокую оплату? Вы можете посмотреть некоторый анализ, сделанный Мэтью Дином в этой статье [здесь] (https://marker.medium.com/why-dont-tech-companies-pay-their-engineers-to-stay-b9c7e4b751e9).


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


Обзор процесса собеседования


Процесс собеседования будет выглядеть примерно так:


Звонок рекрутеру → экран телефона → собеседование на месте (4–6 сессий) → этап предложения


звонок рекрутера


Обычно это 15-30-минутный разговор с рекрутером, чтобы обсудить ваш интерес к компании. Прежде чем разговаривать с рекрутерами, у вас уже должны быть четкие представления о ваших целях на следующую работу. (Который вы перечислили как часть вашей истории). Этот звонок направлен на то, чтобы сообщить об этих целях и вашей истории, а также обсудить потенциальную взаимную совместимость.


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


После этого звонка вы перейдете к экранам телефонов.


Экран телефона


Это собеседование обычно представляет собой видеозвонок продолжительностью от 45 до 60 минут с инженером-программистом, где вы должны показать свой экран и код в реальном времени в текстовом редакторе. Скорее всего, вы будете работать над проблемой DS/Algo. И для большинства компаний этот раунд является отборочным, поскольку цель состоит в том, чтобы решить, должна ли компания приглашать вас на место (в свой кампус) для интервью. Примечание. Вы должны уточнить у своего рекрутера, чего ожидать.


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


Интервью на месте


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


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


Этап предложения


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


Недельное расписание


Я взял на себя смелость составить 15-недельный график, предполагая, что вы будете последовательно готовиться и проходить собеседования неполный рабочий день. Вы можете сократить или удлинить этот график в зависимости от ситуации. SWE График поиска работы и подготовки к собеседованию


Неделя 1: Наращивание и понимание процесса


  • Набросайте свою историю и отполируйте свое резюме, чтобы обозначить целевой уровень и масштаб

  • Исследовательские компании, в которых вы могли бы заинтересоваться

  • Поймите процесс собеседования и получите представление о диапазонах компанов из level.fyi

  • Обновление «открыто для поиска новой работы» с уровнем конфиденциальности как рекрутеры только в LinkedIn.

Неделя 2–4: основы DS и алгоритмов


  • Просмотрите раздел сети, рефералов и рекрутеров.

  • Имейте список дел для подготовки алгоритмов и ежедневно вычеркивайте что-то из списка.

  • Стратегически решать 2 алгоритмические задачи каждый день.

  • Поговорите с рекрутерами и спланируйте телефонные звонки на неделю 7 или 8.

Неделя 5–7: Основы системного проектирования


  • Подготовьтесь к Todo System Design и ежедневно вычеркивайте что-то из списка.

  • Продолжайте решать 2 алгоритмические задачи каждый день.

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

Неделя 8–9: Технические телефонные разговоры и пробные интервью.


  • Заполните экраны телефонов для большинства компаний

  • Начните пробные интервью на pamp.io как по дизайну системы, так и по алгоритмам.

  • Продолжайте изучать дизайн системы на основе обратной связи.

  • Набросайте свои примеры STAR для поведенческих раундов.

  • Начните планировать собеседования на месте.

Неделя 10–13: Лучшее место на месте


  • Сохраняйте спокойствие и сосредоточенность, и удачи

  • Попросите рекрутера дать отзыв через день после любого собеседования на месте.

Неделя 14–15: Этап предложения


  • Ознакомьтесь с разделом стадии предложения в блоге.

  • Как только вы подпишете, пришлите мне заметки о том, как можно улучшить план.

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


Начните здесь


Я рекомендую следовать еженедельному расписанию, копируя этот документ Google и отмечая пункты по мере их выполнения.


Твоя история


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


  • Почему вы присоединились к вашей последней компании?

  • Чем вы занимались на своей последней работе?

  • Почему вы уезжаете? И почему сейчас?

  • Чем бы вы хотели заниматься на новой работе?

  • Что еще вы ищете в вашей новой работе?

Сейчас это может выглядеть не так, но многое на следующих шагах будет зависеть от того, как вы ответите на эти вопросы. Вот пример моей истории, когда я начал искать работу. Определите и отсортируйте компании. Основываясь на своей истории и целях, составьте список из 7-10 компаний, с которыми вы хотите взять интервью. Вы найдете некоторые компании, которые более интересны, чем другие. Рассортируйте список по двум блокам: резервные и целевые компании. Эти ведра пригодятся при планировании интервью на месте.


Выравнивание и компенсация


Получите представление об уровнях и компенсациях из level.fyi. Если вы не уверены, на какой уровень вам следует ориентироваться, подумайте о том, чтобы поговорить со своими связями в этой компании, прежде чем подавать заявку, чтобы понять свой целевой уровень.


Слово в резюме


Убедитесь, что вы сделали чистое и отточенное резюме. В идеале большинство пунктов списка в вашем резюме должны соответствовать формату XYZ.


"Выполнено [X] по [Y], выполнив [Z]"


Связанные ресурсы:




  • [Статья: Формула успешного резюме] (https://www.linkedin.com/pulse/20140929001534-24454816-my-personal-formula-for-a-better-resume/)

Сеть и Linkedin


Я полагаю, что большинство моих читателей уже есть в LinkedIn и имеют звездный профиль LinkedIn. -лиза-к-макдональд/). Если нет, первое, что вы должны сделать, это создать звездный профиль LinkedIn.


Я уделяю особое внимание профилю в LinkedIn, потому что во время поиска работы со мной связались более 35 рекрутеров в LinkedIn, в результате чего я начал переговоры с 6 компаниями.


Пока мы обсуждаем эту тему, я бы порекомендовал всем вам пойти и включить открытые возможности с настройкой конфиденциальности в качестве только рекрутеров в вашей LinkedIn. Вы можете найти шаги [здесь] (https://www.linkedin.com/help/linkedin/answer/a507508/let-recruiters-know-you-re-open-to-work?lang=en). [Убедитесь, что конфиденциальность установлена ​​только для рекрутеров, а не для всех.]


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


Советы по разговору с рекрутером


Дуайт: Я хочу интервью


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


Сделайте своего рекрутера частью своей команды и работайте с ним, чтобы получить желаемый пакет.


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


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


Кроме того, посмотрите раздел переговоров в этой статье, если вам нужна дополнительная информация.


Точка зрения интервьюера


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


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


Например, когда я провожу собеседование, я ищу следующие сигналы:


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


Сигнал кодирования: Этот сигнал определяет, насколько глубоко этот кандидат понимает и насколько эффективно он на самом деле кодирует? Это анализируется во время интервью по решению проблем.


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


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


Есть еще несколько сигналов, на которые обращают внимание разные компании. Например, такие компании, как Google и Amazon, ищут сигнал, объясняющий навигацию в условиях неопределенности.


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


Структуры данных, алгоритмы и решение проблем Подготовка к интервью


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


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


  • Понимание ожидания интервью.

  • Понимание основ DS и алгоритмов.

  • Учимся придерживаться структурированного подхода к общению.

Решение проблем Интервью Ожидание


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


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


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


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


Связанные ресурсы:





Структура данных и основы алгоритма


Мои рекомендации


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


  • Первый шаг — понять структуру решения проблем. Интервью Cracking the Code (CTCI) — лучший ресурс для этого. Прочтите главы с 1 по 7. В этих главах подробно описана схема решения алгоритма интервью. Усвойте эти главы и применяйте эту методологию при решении любого вопроса об алгоритме на собеседовании.

  • Просмотрите основы, прочитав следующие главы либо в CTCI, либо в EPI. Вот некоторые из тем, которые приходят мне в голову: строки, массивы, связанные списки, стеки, очереди, кучи, деревья, хеш-таблицы и карты, поиск и сортировка, рекурсия, динамическое программирование, жадные алгоритмы, графики и обходы графов.

  • Глубокое погружение в алгоритмы:

  • Если вам нужно начать заново или вы давно не просматривали алгоритмы:

  • [Coursera — Алгоритмы, часть 1] (https://www.coursera.org/learn/algorithms-part1) — Следите за лекциями и кодируйте алгоритм, ds in a word doc после каждой лекции. [Рекомендую смотреть в 2 раза]

  • [Coursera — Алгоритмы, часть 2] (https://www.coursera.org/learn/algorithms-part2) — это необязательно, так как только несколько компаний (например, Google и Directi) ожидают продвинутых концепций алгоритмов.

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



Другие ресурсы по DS, Algo и основам кодирования


  • [bigocheatsheet] (https://www.bigocheatsheet.com/)


  • [Книга: Интервью по основам программирования] (https://www.amazon.in/gp/product/9382359443/)

  • [Университет кодирования] (https://github.com/jwasham/coding-interview-university)

  • [Курс: Udacity — Введение в алгоритмы] (https://www.udacity.com/course/intro-to-algorithms--cs215)

  • [Учебный курс MIT Open — Introduction to Algorithms] (https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-spring-2008/) (не очень эффективный)

  • Руководства по стилю Google для: C++, Python, Java

Практика кодирования


Когда вы практикуетесь, не используйте IDE. Вы должны быть в состоянии писать разборчивый, компилируемый код без посторонней помощи относительно компоновки или написания имен классов/методов стандартной библиотеки. Я предлагаю решить алгоритмические/DS-задачи в текстовом документе или на бумаге, чтобы имитировать настоящее собеседование.


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


Мои рекомендации


Если вы новичок в кодировании DS и алгоритмов, пройдите [курс интервью по битовому программированию] (https://www.interviewbit.com/courses/programming/)


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


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


для этого я подписался на https://www.dailycodingproblem.com/


Другие ресурсы для дополнительной практики:



  • [HackerRank] (https://www.hackerrank.com/dashboard)



Подготовка к собеседованию по системному дизайну


Ваш интервьюер по проектированию системы, скорее всего, будет старшим инженером, который задаст вам открытый вопрос, например «Внедрите систему бронирования авиабилетов» или «Создайте ленту для Instagram».


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


Интервью по системному дизайну


Не делайте дизайн системы, как этот мем


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


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


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


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


Дизайн высокого уровня


Структура интервью HLD


Лично я разделяю это интервью на 3 этапа.


  • Сбор требований

  • Технический дизайн и компромиссы

  • Глубокое погружение и другие возможные улучшения

Это лучше объясняется в [этом пошаговом руководстве] (https://www.educative.io/courses/grokking-the-system-design-interview/B8nMkqBWONo).


Ожидание знания HLD


Базы данных


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


Распределенные вычисления и масштабирование


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


Интернет и сетевые темы


Большинство компаний ожидают, что наши инженеры будут знакомы с основами работы Интернета. Возможно, вы захотите освежить в памяти, как работают браузеры на высоком уровне, от поиска DNS и TCP/IP до соединений через сокеты. Им не нужна квалификация сетевого инженера, но требуется четкое понимание основ работы Интернета.


Рекомендуемое обучение


Попробуйте решить вопросы в [интервью о проектировании систем] (https://www.educative.io/courses/grokking-the-system-design-interview), а затем просмотрите предоставленные ими решения. Этот ресурс — действительно отличный способ узнать и усвоить, как вести отличные дискуссии по проектированию системы.


[Курс: Hired in Tech — System Design] (https://www.hiredintech.com/classrooms/system-design/lesson/52) также является отличным ресурсом, если вам нужно больше знаний.


Контрольно-пропускной пункт готовности к пробному собеседованию HLD


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


  • Когда бы вы предпочли базу данных SQL, а не отсутствие SQL?

  • Какие существуют типы хранилищ данных для хранения изображения? На что следует обращать внимание при выборе хранилища данных изображений?

  • Долгий опрос против веб-сокетов.

  • Каков отличный способ ускорить повторные вызовы чтения?

  • Недостатки кэширования.

  • Что такое CDN? Когда следует использовать CDN?

  • Что такое теорема CAP?

  • Какова относительная производительность для жесткого диска, твердотельного накопителя, оперативной памяти и сетевых вызовов.

  • Что такое доступность и надежность? Как бы вы измерили их для системы?

  • Что происходит за кулисами, когда вы открываете ссылку в браузере? Знаете ли вы, что означают эти термины: TCP/IP, поиск DNS?

Другие ресурсы: [высокая масштабируемость — примеры] (http://highscalability.com/blog/category/example)


Низкоуровневый дизайн


Примечание. Не все компании проводят этот раунд, поэтому проверьте, задают ли эти вопросы интересующие вас компании. Я столкнулся с вопросом LLD в Google и Amazon.


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


Ресурсы:


  • [Гуру рефакторинга — Шаблоны проектирования] (https://refactoring.guru/design-patterns)

  • [Книга: Head First объектно-ориентированный анализ и проектирование] (https://amzn.to/3gtH4au)

Контрольная точка готовности к пробному интервью LLD


  • Что такое параллелизм? Вы понимаете сплоченность и последовательность?

  • Знаете ли вы, как использовать по крайней мере следующие шаблоны проектирования:

  • Шаблон стратегии

  • Образец наблюдателя

  • Заводской метод

  • Одноэлементный шаблон

  • Наследование против агрегации

Имитационные интервью


Имитационный бой покемонов


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


  • pramp.com — бесплатные пробные интервью для решения проблем и проектирования системы HLD


Общие советы по собеседованию


К настоящему моменту вы уже должны были собрать все советы, которыми я планирую поделиться, изучив CTCI и дизайн системы Grokking. Вот некоторые важные вещи, если у вас не было достаточно времени, чтобы пройти через них:


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

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

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

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

Другие ресурсы: Рекрутеры Google делятся советами по проведению технических собеседований (30 мин.)


Интервью о поведении и опыте


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


Интервьюер хочет понять две вещи:


  • Вы соответствуете культуре?

  • Какой уровень вам подходит?

Я рекомендую подготовить 5-6 сильных примеров работы и историй, которые имеют общие точки данных с сильными положительными сигналами. Это гарантирует, что вы сможете ответить на вопрос интервью, сохраняя при этом отличный поток информации. Эти рабочие примеры не обязательно должны быть причудливыми или сложными. Самое главное, чтобы пример был хорошо воспринят и понят интервьюером. Кроме того, хорошо подготовленные истории убедительны, и интервьюер может увидеть, что вы чувствуете, и может находить отклик в них. Кроме того, истории — отличный способ проиллюстрировать свой опыт, что имеет решающее значение при выборе уровня.


Вот пример вопроса, где вы можете продемонстрировать свой опыт применения одержимости клиентом: Расскажите о случае, когда вы сделали все возможное для клиента?


Есть несколько способов ответить на поставленный выше вопрос; Я рекомендую следовать методу STAR, отвечая на любые вопросы, связанные с принципами лидерства. STAR расшифровывается как «Ситуация — Задача — Действие — Результаты». Подробнее читайте в [методе STAR] (https://in.indeed.com/career-advice/interviewing/how-to-use-the-star-interview-response- техника).


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


Совет: это список всех вопросов, к которым я подготовился, и я абсолютно потрясен каждым собеседованием о поведении и опыте.


Ресурсы: Мой пост в блоге — [Вопросы для собеседования о принципах лидерства Amazon] (https://jinesh.codes/blog/ace-amazon-lp-questions/) [Метод STAR] (https://in.indeed.com/ карьерный совет/интервьюирование/как-использовать-метод-реакции-собеседования со звездой)


Стадия предложения


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


Данные, чтобы прояснить это: я встретился с 7 разными менеджерами в Google, прежде чем принять решение о своей команде. После встречи с ними у меня были последующие встречи/беседы с теми, кто меня заинтересовал. Итак, это было в основном обратное интервью. Есть преимущество, если ваш менеджер действительно хочет вас; у рекрутера есть союзник, который сделает вам более подходящее предложение.


Примечание. В некоторых компаниях, таких как Amazon, вы встретитесь только с менеджером по команде/найму для должности, на которую вы претендуете. Это связано с тем, что найм в основном определяется командой, а не уровнем всей компании для этих компаний.


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


Переговоры о лучшем предложении


Покажите мне деньги


Час или два изучения переговоров могут принести вам дополнительную прибавку к зарплате на 10-30%. Я бы сказал, что определенно стоит вашего времени!


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


  • [Десять правил ведения переговоров о предложении о работе] (https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/)


После того, как вы прочитали вышеперечисленные статьи, вот несколько моментов, которые я хочу еще раз подчеркнуть:


  • Знайте свою ценность и целевой уровень (используйте level.fyi)

  • Лучше вести переговоры по электронной почте, чем по телефону.

  • Лучшие переговорщики — это те, кто готов уйти

Другой отличный (но длинный) ресурс: [Переговоры о зарплате] (https://www.kalzumeus.com/2012/01/23/salary-negotiation/)


После подписания Оферты


Вы сделали это!


  • Вечеринка, вечеринка и еще раз вечеринка! Вы это заслужили.

  • Отправьте заметку всем участникам (возможно, даже оставайтесь на связи в LinkedIn)

  • Сообщите другим компаниям, что вы решили пойти другим путем.

  • Напишите мне сообщение с любыми отзывами/улучшениями по этому плану.

Совет по расставанию


  • Поговорите со своим рекрутером. Они могут помочь вам с уникальными идеями и ресурсами, чтобы добиться успеха на собеседованиях.

  • Будьте добры к себе. Процесс собеседования вызывает стресс, и легко винить себя, когда что-то идет не так. Помните, что это не конец. Есть много других компаний и будьте добры к себе.

  • Всегда будь позитивным и стильным.

  • Будьте любопытны, чтобы узнать и задать вопросы.

Сводный список рекомендуемых ресурсов


  • [Интервью о взломе кода] (https://amzn.to/3v02Qv7) (CTCI)

  • [Coursera — Алгоритмы, часть 1] (https://www.coursera.org/learn/algorithms-part1)



  • [Интервью о системном дизайне] (https://www.educative.io/courses/grokking-the-system-design-interview)

  • pramp.com — бесплатные пробные интервью


  • [Метод STAR] (https://in.indeed.com/career-advice/interviewing/how-to-use-the-star-interview-response-technique)

  • [Десять правил ведения переговоров о предложении о работе] (https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/)


Майкл: Думаю, это все


  • Впервые опубликовано [здесь] (https://jinesh.codes/blog/get-a-job-at-big-tech/)*


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE