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

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

Начните с самых частых и любимых проблем LeetCode

Принцип Парето (также известный как правило 80/20) гласит, что для многих событий примерно 80% следствий возникают из-за 20% причин. Таким образом, одна из стратегий решения слишком большого количества вопросов LeetCode — начать с самых частых:

Другая стратегия заключается в том, чтобы начать с проблем, которые имеют хорошие отзывы. Хотя LeetCode — отличная платформа, не все проблемы одинаковы. Если вы откроете проблему, вы увидите, сколько людей проголосовали за или против проблемы. Держитесь подальше от проблем, у которых соотношение положительных и отрицательных голосов хуже 2:1. Еще один эффективный способ — начать с наиболее похожих вопросов:

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

Ниже приведен подход, который мы рекомендуем для ответа на эти вопросы:

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

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

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

Шаги, которые нужно предпринять для решения каждой проблемы с LeetCode

Для каждого вопроса LeetCode вы должны относиться к нему как к реальному вопросу интервью. Иногда вам требуются секунды, чтобы понять, как решить эту проблему. Иногда вы столкнетесь с проблемой, из-за которой застрянете (возможно, LeetCode пометил ее как «легкую» или «среднюю»). Это совершенно нормально. Возможно, для этого требуется алгоритм или структура данных, с которыми вы не знакомы, и вам не нужно рвать на себе волосы, пытаясь заново открыть или заново изобрести алгоритм или структуру данных.

Вот шаги, которые мы рекомендуем предпринять для каждой проблемы с LeetCode:

  1. Внимательно прочитайте вопрос и подумайте о крайних случаях.
  2. Придумайте базовое решение грубой силы.
  3. Попробуйте оптимизировать решение грубой силы с точки зрения временной и пространственной сложности.
  4. Если вы чувствуете, что застряли слишком долго (15 минут) и все еще не имеете ни малейшего представления, вы можете проверить «теги» или заголовки в «обсуждении» на LeetCode, они служат подсказками, которые помогут вам подумать о структурах данных и алгоритмах. которые помогут вам решить вопросы.
  5. Если у вас все еще есть проблемы с ответом на вопрос, вы можете просмотреть содержание обсуждения или найти заметки о решении в Google или Github.
  6. Напишите код на пустой странице или в google doc.
  7. Смоделируйте вручную процесс запуска кода с различными случаями, включая пример, указанный в вопросе. Кроме того, включите пограничные случаи, чтобы помочь вам определить потенциальные проблемы вашего кода.
  8. Отправьте свой код на LeetCode, чтобы убедиться, что он работает успешно.
  9. После того, как вы решите вопрос, не двигайтесь дальше. Узнайте больше способов ее решения, сравните различные решения и сделайте заметки о том, какие уроки вы извлекли из процесса.

Делайте заметки и суммируйте закономерности

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

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

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

Вот руководства, которые помогут вам распознать шаблоны из вопросов Leetcode:

Улучшите свои коммуникативные навыки

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

Вот что думает интервьюер из Google во время интервью:

( 📝 Введение: деконструкция вопросов Google для интервью)

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

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

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

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

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

  • 1. Уточните кодовый вопрос, заданный интервьюером. Например, вы можете задать такие вопросы, как: Содержит ли массив положительные/отрицательные значения? Возможно ли, что значения в массиве являются числами с плавающей запятой или все значения являются целыми числами? Массив отсортирован или не отсортирован? Можем ли мы считать, что входной массив непуст?
  • 2. Предложите один или два примера с входными данными и желаемыми выходными данными, чтобы подтвердить у интервьюера, что вы правильно поняли вопрос.
  • 3. Придумайте интуитивное, грубое решение, быстро обобщите решение простыми словами.
  • 4. Проанализируйте временную и пространственную сложность решения грубой силы. Объясните, почему решение не является оптимальным и как его можно улучшить. Обычно для решения брутфорса не требуется писать код, а необходимо перепроверить его у интервьюера.
  • 5. Предложите лучшее решение и объясните процесс и то, как вы пришли к этому решению.
  • 6. Напишите свой код на доске. Не забудьте объяснить код интервьюеру, пока вы пишете. Если возможно, разбейте решение на небольшие фрагменты кода.
  • 7. Запустите свой код вручную с примерами, предоставленными интервьюером. Попробуйте также другой пример.
  • 8. Не забывайте также тестировать свой код с пограничными случаями, чтобы избежать потенциальных ловушек.
  • 9. Спросите, есть ли у интервью дополнительные вопросы или комментарии относительно кода.

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

Несколько советов по общению с интервьюером:

  • Будьте дружелюбны и вежливы, честны и способны сказать: «Я не знаю», вместо того, чтобы пытаться их обмануть.
  • Никогда не пытайтесь перехитрить интервью и спорить с интервьюером.

Пробное интервью и самооценка

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

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

Заключительные слова

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

Помните, нервничать во время собеседования абсолютно нормально, все нервничают, даже интервьюеры, когда сами сдают тест на кодирование.

Единственное, что мы можем сделать, это «Практика, практика и еще раз практика». Это, вероятно, не воссоздает стресс собеседования, но поможет вам сформировать привычки, на которые можно положиться, когда вы испытываете стресс.

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

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