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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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

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

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

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

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

2020 год
2020 год
2021 год
2021 год

Что я понял

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

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

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

Выводы

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

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

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

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

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

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

Этот список оказался очень полезным для подготовки к собеседованиям в 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, я нацелен стать хорошим разработчиком ПО/развивать свою карьеру и создавать онлайн-контент, связанный с технологиями.

Источник: https://habr.com/ru/companies/sportmaster_lab/articles/751032/


Интересные статьи

Интересные статьи

Ругает VoIP, discord и др. за фатальный недостатокПару лет назад, когда все эти гитхабры для меня были птичьим пением, а делать мне было нечего - писал я значит небольшие проекты на python. Среди них ...
В этой статье я хочу написать про мой опыт взаимодействия с платформой LeetCode, и описать свою подготовку к интервью в FAANG подобные компании путем разбиения ее на уровни.А какой у вас уровень?
Настройка LEMP сервера с помощью docker для простых проектов. Часть первая: БазаМы продолжаем цикл обучающих статей для начинающих системных администраторов. В серии "Настройка LEMP сервера ...
Привет, Хабр. Недавно мне выпала возможность потестировать платежный терминал с возможностью бесконтактной оплаты. Ну а раз оплата бесконтактная, значит сигнал передается по радио,...
Всем привет! Все люди, получающие высшее образование, не отчислившись, все-таки доходят до стадии написания диплома. Не стал исключением и я. Хотелось реализовать что-то интересное и освоить д...