Все разбито, шаг за шагом

Чтобы помочь мне понять вас, заполните этот опрос (анонимно)

Итак, вы видели, сколько компенсаций выплачивают компании FAANG. Вам нужны деньги, закуски и престиж, связанные с работой в одной из компаний FAANG. Теперь вы хотите попасть в один из них. Вещи сложные; с более чем 3 миллионами приложений в год уровень принятия Google составляет 0,2%. У вас в 20 раз больше шансов поступить в Гарвард.

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

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

Это случается и с опытными разработчиками. Вышеупомянутый человек работает в отрасли более 15 лет. Так что пройти собеседование не проблема. Но во время нашей первой сессии они сказали мне, что даже задачи Leetcode Easy-Medium казались им невозможными.

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

Шаг 1: основные структуры данных и алгоритмы (сюрприз)

Вероятно, это была ваша реакция на это. Все и их бабушки рекомендуют это в качестве первого шага. Чего они не говорят вам, так это того, как вы должны это делать. Какие структуры данных вам нужны больше всего? Сколько вам нужно учиться? Что касается графиков, нужно ли вам изучать такие вещи, как Network Flow, алгоритм Крускала и т. д.? Графические нейронные сети? Проблема с общим «Изучение DSA» заключается в том, что оно слишком расплывчато.

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

  1. Хэш-карты + наборы. Поймите идею хеширования и почему их поиски/вставки занимают постоянное время. Их изучение также поможет вам, потому что некоторые из более сложных вопросов требуют, чтобы вы написали свои собственные хэши для оптимизации. Часто появляется в вопросах манипулирования строками. Этот вопрос Microsoft — хороший пример
  2. Графики. Графики — одна из самых сложных тем. Они могут появиться в неожиданных местах. Понять, что такое графики. Узнайте, что они делают / почему они полезны. И посмотрите на обход.
  3. LinkedList, Arrays, Stacks и Queues: убедитесь, что вы можете создать их с нуля. Научитесь использовать очень хорошо. Изучите побочные эффекты (приоритетные очереди и т. д.)
  4. Куча: появляется время от времени. Хорошо знать основы.
  5. Деревья/Рекурсия. Я объединяю их вместе, потому что простые вопросы о дереве — идеальный инструмент для понимания рекурсии и решения вопросов с рекурсией. Потренируйтесь строить деревья с нуля и выполнять элементарные операции (размер, глубина, обход, вставка и т. д.). Это стандартный шаблон дерева для большинства вопросов:
def treeFunc(root, **other params):
    if(root==null):
        return baseCase/other relevant params
    val=operation(treeFunc(root.left), treeFunc(root.right))
    return val

Это не является исчерпывающим, очевидно. Но это хорошее начало (и ответит на большинство вопросов). Затем мы уточняем наше понимание следующим шагом.

Шаг 2: много практики

Далее мы хотим потренироваться. Много. В зависимости от ваших способностей мы будем смешивать простые, средние и сложные вопросы. В среднем вы хотите проводить не менее часа-1,5 часов каждый день. Это примерно 1-2 вопроса в день. Если вы хотите извлечь максимальную пользу из каждого отдельного вопроса, прочитайте эту статью на Medium. Я подробно расскажу о процедуре, чтобы узнать как можно больше из каждого вопроса. Не забывайте начинать с простых вопросов и продвигайтесь вверх.

Правильные ответы на вопросы помогут вам определить слабые места и получить дополнительную информацию о том, что можно улучшить.

Шаг 3: Пробное интервью (включите это в шаг 2)

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

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

Закрытие

Эта процедура относительно проста. Нет 3-4-часовых советов по гринду Leetcode, которые так распространены в Интернете. Потому что так должно быть. Важным моментом является последовательность и постоянное улучшение благодаря обратной связи. Возможность сделать это позволит вам получить экспоненциальные результаты при относительно скромных временных затратах.

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

Если вам понравилась эта статья, посмотрите мой другой контент. Я регулярно публикую сообщения на Medium, YouTube, Twitter и Substack (все ссылки ниже). Я занимаюсь искусственным интеллектом, машинным обучением, технологиями и разработкой программного обеспечения. Если вы готовитесь к собеседованиям по программированию, ознакомьтесь с: Собеседования по кодированию стали проще.

Для разовой поддержки моей работы следуют мои Venmo и Paypal. Любая сумма приветствуется и очень помогает:

Венмо: https://account.venmo.com/u/FNU-Devansh

Paypal: paypal.me/ISeeThings

Свяжитесь со мной

Если эта статья заставила вас обратиться ко мне, то этот раздел для вас. Вы можете связаться со мной на любой из платформ или ознакомиться с любым другим моим контентом. Если вы хотите обсудить репетиторство, напишите мне в LinkedIn, IG или Twitter. Если вы хотите поддержать мою работу, воспользуйтесь моей бесплатной реферальной ссылкой на Robinhood. Мы оба получаем бесплатный запас, и вы ничем не рискуете. Таким образом, если вы не используете его, вы просто потеряете бесплатные деньги.

Ознакомьтесь с другими моими статьями на Medium. : https://rb.gy/zn1aiu

Мой Ютуб: https://rb.gy/88iwdd

Свяжитесь со мной в LinkedIn. Подключаемся: https://rb.gy/m5ok2y

Мой Инстаграм: https://rb.gy/gmvuy9

Мой Твиттер: https://twitter.com/Machine01776819

Если вы готовитесь к программированию/техническим интервью: https://codinginterviewsmadesimple.substack.com/

Получите бесплатный сток на Robinhood: https://join.robinhood.com/fnud75