[Перевод] Как с помощью практики на LeetCode я получил несколько офферов

После рассказа о том, как я получил работу в Amazon, в этом посте на reddit мне задали множество вопросов о том, как мне помог LeetCode в подготовке к собеседованиям.

В статье я отвечу на эти вопросы.

Сколько времени это заняло?

Я начал готовиться за 2–3 месяца до собеседований в BigTech. В то время я тратил по 2–3 часа в день на подготовку.

Разбивка работы на leetcode по месяцам (2022 год)

Разбивка работы на leetcode по месяцам (2022 год)

Вот разбивка работы на leetcode по годам.

2020 год

2020 год

2021 год

2021 год

Что я понял

  • В рамках года я начал заниматься на leetcode более стабильно (от 30 минут до часа ежедневно), а не импульсивно по месяцу-два, как это было раньше.

Сколько заниматься LeetCode? Соотношение заданий easy/medium/hard

cnlinzmvgwzo42rqlbjzobp91py.png

Вот так выглядит моя разбивка сейчас; когда я завершил свои последние собеседования в апреле, у меня было пройдено около 450 вопросов.

Выводы

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

Что бы я сделал иначе

  • Наверно, идеальное соотношение — это 1: 3: 1. Большинство вопросов, задаваемых на собеседованиях, относятся к категории medium, поэтому если вы можете решать их уверенно, то достаточно хорошо готовы к собеседованию.

Решать задачи по темам, брать случайные или Blind 75

В контексте моих собеседований в Amazon/Atlassian/Canva/Google в этом году

Я решал ежедневные задачи LeetCode, а также выполнял верхние задачи из списка собеседований Amazon, которые доступны в premium-подписке LeetCode.

pajikm89h7fq8fbm_a1zvkxlp2a.png

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

(Вероятно, для этого не понадобится premium-подписка, потому что можно найти бесплатные списки задач компаний по тэгам, например,  amazon list free)

Полученные уроки

Когда я только начал пользоваться Leetcode, то отвечал на случайные вопросы. Это противоречит принципу продуманной практики. Самый эффективный подход заключался бы в том, чтобы решить примерно 20–40 easy, затем освоить список blind 75. После этого вы будете достаточно готовы к тому, чтобы приступать к собеседованиям, и я искренне считаю, что ещё примерно сто заданий, которые были постоянно сложными и повышали мои навыки, сделают вас столь же эффективным, как мои примерно 450 задач.

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

Какие ресурсы я использую для подготовки/структуры данных и алгоритмы?

Этот вопрос задавали очень часто.

75% моих знаний по структурам данных и алгоритмам (Data Structure and Algorithms, DSA) взято из университетского курса DSA благодаря тому, что я намеренно зубрил этот курс. Остальные знания я набрался гуглением непонятных мне аспектов при решении задач LeetCode; также я пользовался разделом ответов и обсуждений в задачах LeetCode.

А если я плохо учился на этом курсе в университете/колледже или учусь сам?

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

Идеальный процесс выглядел бы так: изучить новую структуру данных → выполнить несколько задач LeetCode с тэгами этой структуры данных → повторить.

И как ни очевидно это звучит, просто гуглите то, что вы не знаете или хотите знать.

Если говорить о темах, то какие из них показались вам наиболее важными?

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

Если вы уверенно сможете решать leetcode blind 75, то вашего уровня покрытия тоже будет достаточно.

Но чтобы ответить на этот вопрос, я воспользуюсь этим списком; вот моя разбивка большинства тем по важности:

УРОВЕНЬ 1 (ОБЯЗАТЕЛЬНО)

  • Массивы, строки, связанные списки, деревья, сортировка и поиск

УРОВЕНЬ 2 (спрашивают не так часто, как УРОВЕНЬ 1, но переходите к нему только тогда, когда решите достаточно много задач УРОВНЯ 1).

УРОВЕНЬ 3 (частично важный, включает в себя сочетания тем уровня 1, но я не считаю их столь же важными, как УРОВЕНЬ 1)

Действительно ли обязательно решать 450 задач, чтобы попасть в Amazon?

Конечно, нет. Это полностью ситуативно и зависит от ваших условий/возможностей/способа обучения.

Оглядываясь назад, если бы я знал, как практиковаться эффективно, то смог бы справиться за 150–200 задач LeetCode.

Отвечая на вопрос «когда я смогу приступать к собеседованиям», скажу: как только вы будете уверенно себя чувствовать с задачами уровня medium (для меня это было около 150–200 задач), вы должны начать проходить собеседования.

Выводы

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

  • Не откладывайте собеседования надолго. Как только вы решите 100–200 задач, нужно приступать к собеседованиям. Даже если вы не преуспеете, то получите опыт и обратную связь для дальнейшего развития.

Что я буду делать дальше

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

© Habrahabr.ru