0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>3 фев 2023</li>
2
<ul><li>3 фев 2023</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Нина Торгунакова из "Злых марсиан" за год нащёлкала 400 алгоритмических задач и рассказала, как извлечь из этого занятия максимальную пользу.</p>
4
</ul><p>Нина Торгунакова из "Злых марсиан" за год нащёлкала 400 алгоритмических задач и рассказала, как извлечь из этого занятия максимальную пользу.</p>
5
<p>Журналист, коммерческий автор и редактор. Пишет про IT, цифровой маркетинг и бизнес. Сайт:<a>darovska.com</a>.</p>
5
<p>Журналист, коммерческий автор и редактор. Пишет про IT, цифровой маркетинг и бизнес. Сайт:<a>darovska.com</a>.</p>
6
<p>Фронтенд-разработчик в "<a>Злых марсианах</a>", любит спорт и pole dance, ведёт канал<a>strip_programmer</a>. КМС по пулевой стрельбе, переводит статьи о разработке, LeetCode warrior.</p>
6
<p>Фронтенд-разработчик в "<a>Злых марсианах</a>", любит спорт и pole dance, ведёт канал<a>strip_programmer</a>. КМС по пулевой стрельбе, переводит статьи о разработке, LeetCode warrior.</p>
7
<p><a>LeetCode</a> - это онлайн-платформа с алгоритмическими задачами по программированию, своего рода тренажёр для подготовки к техническим собеседованиям. Считается, что если регулярно с ним заниматься, то через 6-12 месяцев ваши шансы устроиться в какой-нибудь бигтех по типу "Яндекса" заметно вырастут.</p>
7
<p><a>LeetCode</a> - это онлайн-платформа с алгоритмическими задачами по программированию, своего рода тренажёр для подготовки к техническим собеседованиям. Считается, что если регулярно с ним заниматься, то через 6-12 месяцев ваши шансы устроиться в какой-нибудь бигтех по типу "Яндекса" заметно вырастут.</p>
8
<p>Тем не менее большинство пришедших на платформу забрасывают занятия уже через неделю - подобная статистика есть, например, на <a>ежегодном Advent of Code</a>. Я же решала задачи на LeetCode больше года - получила неимоверное удовольствие, прокачала важные навыки. Вот как это было.</p>
8
<p>Тем не менее большинство пришедших на платформу забрасывают занятия уже через неделю - подобная статистика есть, например, на <a>ежегодном Advent of Code</a>. Я же решала задачи на LeetCode больше года - получила неимоверное удовольствие, прокачала важные навыки. Вот как это было.</p>
9
<p>Идея попробовать LeetCode время от времени появлялась у меня ещё с университета: мне всегда нравились алгоритмы. Но в полноценное, осознанное желание она переросла осенью 2021 года. Для решения одной из рабочих задач потребовались операции с хеш-таблицами, и я поняла, что слишком долго думаю, как обработать структуру данных. Следовательно, решила я, в моих познаниях есть определённые пробелы, которые нужно восполнить.</p>
9
<p>Идея попробовать LeetCode время от времени появлялась у меня ещё с университета: мне всегда нравились алгоритмы. Но в полноценное, осознанное желание она переросла осенью 2021 года. Для решения одной из рабочих задач потребовались операции с хеш-таблицами, и я поняла, что слишком долго думаю, как обработать структуру данных. Следовательно, решила я, в моих познаниях есть определённые пробелы, которые нужно восполнить.</p>
10
<p>С таким настроем я и приступила к челленджу: в течение целого года практически ежедневно разбирала минимум по одному примеру из LeetCode. С тех пор их количество перевалило за четыре сотни.</p>
10
<p>С таким настроем я и приступила к челленджу: в течение целого года практически ежедневно разбирала минимум по одному примеру из LeetCode. С тех пор их количество перевалило за четыре сотни.</p>
11
Из треда Нины Торгунаковой<em>Скриншот: личный архив Нины Торгунаковой</em><p>Я хотела, чтобы это вошло в привычку, так что правило "один день - одна задачка" старалась соблюдать неукоснительно. Если вдруг по каким-то причинам сделать это не получалось - всегда навёрстывала отставание в следующие дни.</p>
11
Из треда Нины Торгунаковой<em>Скриншот: личный архив Нины Торгунаковой</em><p>Я хотела, чтобы это вошло в привычку, так что правило "один день - одна задачка" старалась соблюдать неукоснительно. Если вдруг по каким-то причинам сделать это не получалось - всегда навёрстывала отставание в следующие дни.</p>
12
<p>Постепенно втянулась, поняла, что пользы от LeetCode гораздо больше, чем я изначально предполагала, и даже описала свой опыт в <a>треде в Twitter</a>, на который меня вдохновили коллеги из "<a>Злых марсиан</a>" и особенно<a>Андрей Ситник</a>. В частности, я попыталась развенчать расхожий миф, что такие задачки годятся только для подготовки к собеседованию.</p>
12
<p>Постепенно втянулась, поняла, что пользы от LeetCode гораздо больше, чем я изначально предполагала, и даже описала свой опыт в <a>треде в Twitter</a>, на который меня вдохновили коллеги из "<a>Злых марсиан</a>" и особенно<a>Андрей Ситник</a>. В частности, я попыталась развенчать расхожий миф, что такие задачки годятся только для подготовки к собеседованию.</p>
13
<p>На самом деле это лишь вершина айсберга. Подобная практика в первую очередь тренирует скорость, с которой вы соображаете, когда пишете код. А ещё позволяет правильно формулировать уточняющие вопросы заказчикам и коллегам. Мне кажется, многим из нас не хватает этого навыка.</p>
13
<p>На самом деле это лишь вершина айсберга. Подобная практика в первую очередь тренирует скорость, с которой вы соображаете, когда пишете код. А ещё позволяет правильно формулировать уточняющие вопросы заказчикам и коллегам. Мне кажется, многим из нас не хватает этого навыка.</p>
14
<p>В IT-среде часто ругают LeetCode: мол, всё равно в реальной работе кейсы оттуда не встречаются, само по себе знание алгоритмов не помогает писать хороший код, а незнание - плохой и так далее.</p>
14
<p>В IT-среде часто ругают LeetCode: мол, всё равно в реальной работе кейсы оттуда не встречаются, само по себе знание алгоритмов не помогает писать хороший код, а незнание - плохой и так далее.</p>
15
<p>Но ведь LeetCode - это просто инструмент: он не плохой и не хороший, не полезный и не вредный. Всё зависит от того, как вы будете его использовать.</p>
15
<p>Но ведь LeetCode - это просто инструмент: он не плохой и не хороший, не полезный и не вредный. Всё зависит от того, как вы будете его использовать.</p>
16
<p>Первым делом советую заглянуть в <a>Beginner’s Guide</a>в разделе<a>Explore</a> - там подробно объясняется, как всё устроено на сайте и с чего лучше всего начать.</p>
16
<p>Первым делом советую заглянуть в <a>Beginner’s Guide</a>в разделе<a>Explore</a> - там подробно объясняется, как всё устроено на сайте и с чего лучше всего начать.</p>
17
<p>У каждой задачи есть свой уровень: лёгкий, средний или сложный. Чтобы правильно подобрать уровень по себе, нужно понимать, в каких темах вы более-менее сильны, а в каких совсем плаваете.</p>
17
<p>У каждой задачи есть свой уровень: лёгкий, средний или сложный. Чтобы правильно подобрать уровень по себе, нужно понимать, в каких темах вы более-менее сильны, а в каких совсем плаваете.</p>
18
<p>Лично у меня поначалу знаний было немного, пробелы - практически везде, поэтому по всем темам я выбирала самые лёгкие задания. Наращивала сложность постепенно. Начинала с базовых вещей - строки, массивы - и потихоньку двигалась к более сложным: деревьям, динамическому программированию и так далее.</p>
18
<p>Лично у меня поначалу знаний было немного, пробелы - практически везде, поэтому по всем темам я выбирала самые лёгкие задания. Наращивала сложность постепенно. Начинала с базовых вещей - строки, массивы - и потихоньку двигалась к более сложным: деревьям, динамическому программированию и так далее.</p>
19
Так выглядели мои первые решённые задачи<em>Скриншот: личный архив Нины Торгунаковой</em><p>Чтобы увеличить сложность решаемой задачи, полезно не только повышать уровень (например, с easy переходить на medium), но и понижать acceptance задачи, то есть процент её принятия. Он позволяет понять соотношение правильных решений ко всем отправленным.</p>
19
Так выглядели мои первые решённые задачи<em>Скриншот: личный архив Нины Торгунаковой</em><p>Чтобы увеличить сложность решаемой задачи, полезно не только повышать уровень (например, с easy переходить на medium), но и понижать acceptance задачи, то есть процент её принятия. Он позволяет понять соотношение правильных решений ко всем отправленным.</p>
20
<p>В некоторых случаях этот параметр даже более показателен, чем уровень сложности. Действительно, некоторые формально "средние" задания на практике может одолеть меньше пользователей, чем формально "хардовые".</p>
20
<p>В некоторых случаях этот параметр даже более показателен, чем уровень сложности. Действительно, некоторые формально "средние" задания на практике может одолеть меньше пользователей, чем формально "хардовые".</p>
21
<em>Скриншот:<a>LeetCode</a></em><p>В разделе<a>Explore</a>можно найти также курс по каждой теме, внутри которого уровень задач нарастает постепенно. Как только я открыла для себя эту фичу, стала придерживаться именно такого порядка.</p>
21
<em>Скриншот:<a>LeetCode</a></em><p>В разделе<a>Explore</a>можно найти также курс по каждой теме, внутри которого уровень задач нарастает постепенно. Как только я открыла для себя эту фичу, стала придерживаться именно такого порядка.</p>
22
<em>Скриншот:<a>LeetCode</a></em><p>Но после создания аккаунта на LeetCode можно остаться и в разделе<a>All</a>. В нём над кнопками All topics, Algorithms, Database есть хештеги, их можно развернуть и посмотреть количество задач в каждом из них.</p>
22
<em>Скриншот:<a>LeetCode</a></em><p>Но после создания аккаунта на LeetCode можно остаться и в разделе<a>All</a>. В нём над кнопками All topics, Algorithms, Database есть хештеги, их можно развернуть и посмотреть количество задач в каждом из них.</p>
23
<p>Необязательно хватать сразу весь топик. Лучше отфильтровать задачи по хештегам, например Sorting или String, и затем отсортировать по возрастанию сложности.</p>
23
<p>Необязательно хватать сразу весь топик. Лучше отфильтровать задачи по хештегам, например Sorting или String, и затем отсортировать по возрастанию сложности.</p>
24
<em>Скриншот:<a>LeetCode</a></em><p>Ориентируйтесь на собственную интуицию: если вы почувствовали, что задачки даются слишком легко, смело повышайте сложность. И наоборот: если пошло со скрипом - значит, вы слегка переоценили свои возможности и лучше откатиться на предыдущий уровень или более высокий процент acceptance.</p>
24
<em>Скриншот:<a>LeetCode</a></em><p>Ориентируйтесь на собственную интуицию: если вы почувствовали, что задачки даются слишком легко, смело повышайте сложность. И наоборот: если пошло со скрипом - значит, вы слегка переоценили свои возможности и лучше откатиться на предыдущий уровень или более высокий процент acceptance.</p>
25
<p>Тем, у кого есть премиум-аккаунт, по каждой теме доступны ещё и списки задач, которые чаще всего дают на собеседованиях. У меня был обычный аккаунт, и мне всего хватало для обучения. К тому же в разделах Explore есть много полезных и популярных на собеседованиях задач.</p>
25
<p>Тем, у кого есть премиум-аккаунт, по каждой теме доступны ещё и списки задач, которые чаще всего дают на собеседованиях. У меня был обычный аккаунт, и мне всего хватало для обучения. К тому же в разделах Explore есть много полезных и популярных на собеседованиях задач.</p>
26
<p>Вы также можете формировать подборки самостоятельно - например, чтобы добавить любимые задачи в избранные или отложить до лучших времён то, что сейчас решить не получилось.</p>
26
<p>Вы также можете формировать подборки самостоятельно - например, чтобы добавить любимые задачи в избранные или отложить до лучших времён то, что сейчас решить не получилось.</p>
27
<p>А в разделе<a>All</a>очень просто отыскать самые лёгкие задачи для старта. Там есть удобная сортировка: сначала по сложности, потом по acceptance. Всё, что окажется вверху, - это и есть начальный уровень.</p>
27
<p>А в разделе<a>All</a>очень просто отыскать самые лёгкие задачи для старта. Там есть удобная сортировка: сначала по сложности, потом по acceptance. Всё, что окажется вверху, - это и есть начальный уровень.</p>
28
<p>Даже у опытных разработчиков, которых базовыми задачами не удивить, скорее всего, найдутся слабые места. Например, для некоторых теория игр или двусвязные списки - тёмный лес. В таком случае на LeetCode можно найти задачи по этой теме и закрыть существующие пробелы.</p>
28
<p>Даже у опытных разработчиков, которых базовыми задачами не удивить, скорее всего, найдутся слабые места. Например, для некоторых теория игр или двусвязные списки - тёмный лес. В таком случае на LeetCode можно найти задачи по этой теме и закрыть существующие пробелы.</p>
29
<p>Рекомендую идти по порядку, начиная с простых задач. Сперва смотрите объяснения - что это за структура или концепция, на чём она основана. Прочтите материалы, а потом начинайте решать. Когда справитесь с первой лёгкой задачей, можете считать, что примерно поняли принцип, по которому надо работать с такими структурами. Но не останавливайтесь на этом, обязательно повышайте уровень сложности.</p>
29
<p>Рекомендую идти по порядку, начиная с простых задач. Сперва смотрите объяснения - что это за структура или концепция, на чём она основана. Прочтите материалы, а потом начинайте решать. Когда справитесь с первой лёгкой задачей, можете считать, что примерно поняли принцип, по которому надо работать с такими структурами. Но не останавливайтесь на этом, обязательно повышайте уровень сложности.</p>
30
<p>Если решаете все лёгкие задачи и б<strong>о</strong>льшую часть средних, то можете спокойно переходить к другой теме. Останавливаться на сложных задачах необязательно. Они могут потребовать много времени и концентрации, но, по статистике, на собеседованиях их попадётся не больше 20%. Даже продвинутые компании обычно берут задачи medium-уровня - про это хорошо написано на сайте<a>Leetcode Therapy</a>.</p>
30
<p>Если решаете все лёгкие задачи и б<strong>о</strong>льшую часть средних, то можете спокойно переходить к другой теме. Останавливаться на сложных задачах необязательно. Они могут потребовать много времени и концентрации, но, по статистике, на собеседованиях их попадётся не больше 20%. Даже продвинутые компании обычно берут задачи medium-уровня - про это хорошо написано на сайте<a>Leetcode Therapy</a>.</p>
31
<p>Я не считаю, что уровень hard бесполезен. Но для базового понимания разных структур и алгоритмов среднего будет достаточно. Если захочется углубиться, то задачи со звёздочкой можно будет порешать позже.</p>
31
<p>Я не считаю, что уровень hard бесполезен. Но для базового понимания разных структур и алгоритмов среднего будет достаточно. Если захочется углубиться, то задачи со звёздочкой можно будет порешать позже.</p>
32
<p>Самая типичная ошибка: многие сразу начинают решать так называемые задачи дня,<strong>Daily LeetCoding Challenge.</strong>Такая задача всегда закреплена первой в общей таблице. Но брать их я рекомендую, только если ваша алгоритмическая подготовка уже на очень хорошем уровне. Я сама клюнула на удочку после нескольких месяцев тренировок - и это был самый непродуктивный период за всё время обучения. Иногда таски попадались настолько сложные, что их решение затягивалось на часы, а это совершенно непродуктивно.</p>
32
<p>Самая типичная ошибка: многие сразу начинают решать так называемые задачи дня,<strong>Daily LeetCoding Challenge.</strong>Такая задача всегда закреплена первой в общей таблице. Но брать их я рекомендую, только если ваша алгоритмическая подготовка уже на очень хорошем уровне. Я сама клюнула на удочку после нескольких месяцев тренировок - и это был самый непродуктивный период за всё время обучения. Иногда таски попадались настолько сложные, что их решение затягивалось на часы, а это совершенно непродуктивно.</p>
33
Пример daily-задачи<em>Скриншот:<a>LeetCode</a></em><p>Дело в том, что Daily LeetCoding Challenge, как и следует из названия, - скорее состязание, чем обучение. Поэтому решать daily-задачи без хорошего бэкграунда вредно для психики и скорее только приведёт к выгоранию. Оно вам надо?</p>
33
Пример daily-задачи<em>Скриншот:<a>LeetCode</a></em><p>Дело в том, что Daily LeetCoding Challenge, как и следует из названия, - скорее состязание, чем обучение. Поэтому решать daily-задачи без хорошего бэкграунда вредно для психики и скорее только приведёт к выгоранию. Оно вам надо?</p>
34
<p>Ещё больший мазохизм для новичка - перейти в раздел<a>Contest</a>, где вам отведут час на три задачи. Причём соревноваться с вами будут профессиональные спортивные программисты из Китая, которые за одну минуту решают что угодно. Это самый верный способ потерять веру в себя, поэтому идти туда нужно очень подготовленным.</p>
34
<p>Ещё больший мазохизм для новичка - перейти в раздел<a>Contest</a>, где вам отведут час на три задачи. Причём соревноваться с вами будут профессиональные спортивные программисты из Китая, которые за одну минуту решают что угодно. Это самый верный способ потерять веру в себя, поэтому идти туда нужно очень подготовленным.</p>
35
<p><strong>Лайфхак №1:</strong>при чтении условия сразу думайте о граничных случаях. Проанализируйте, как ограничения, перечисленные в задаче, могут повлиять на алгоритм. Переберите в уме подходы, с помощью которых её можно решить. Так победите.</p>
35
<p><strong>Лайфхак №1:</strong>при чтении условия сразу думайте о граничных случаях. Проанализируйте, как ограничения, перечисленные в задаче, могут повлиять на алгоритм. Переберите в уме подходы, с помощью которых её можно решить. Так победите.</p>
36
<p><strong>Лайфхак №2:</strong>долго сидеть над одной задачей - контрпродуктивно. Работа с LeetCode не предполагает больших и чересчур сложных решений. Это скорее маленькие таски, рассчитанные на максимум 100 строк, даже если вы пишете код на С++. Поэтому рекомендую посвящать LeetCode не больше 45-60 минут в день.</p>
36
<p><strong>Лайфхак №2:</strong>долго сидеть над одной задачей - контрпродуктивно. Работа с LeetCode не предполагает больших и чересчур сложных решений. Это скорее маленькие таски, рассчитанные на максимум 100 строк, даже если вы пишете код на С++. Поэтому рекомендую посвящать LeetCode не больше 45-60 минут в день.</p>
37
<p><strong>Лайфхак №3:</strong>если вы долго не можете нащупать решение - скорее всего, вы движетесь в неверном направлении. Это не страшно, я тоже иногда не могу что-то решить в течение получаса. В таком случае я перехожу в раздел<a>Discuss</a>и читаю, что пишут люди, которые работают на моём языке программирования. Почему задача может не решаться быстро? Проблем обычно бывает несколько.</p>
37
<p><strong>Лайфхак №3:</strong>если вы долго не можете нащупать решение - скорее всего, вы движетесь в неверном направлении. Это не страшно, я тоже иногда не могу что-то решить в течение получаса. В таком случае я перехожу в раздел<a>Discuss</a>и читаю, что пишут люди, которые работают на моём языке программирования. Почему задача может не решаться быстро? Проблем обычно бывает несколько.</p>
38
<p><strong>Вы действительно не знаете решение и пошли по ложному пути.</strong>Тогда задачу лучше отложить и понять, что конкретно вы не знаете.</p>
38
<p><strong>Вы действительно не знаете решение и пошли по ложному пути.</strong>Тогда задачу лучше отложить и понять, что конкретно вы не знаете.</p>
39
<p><strong>Совет:</strong>выпишите вопросы в план, почитайте статьи и нужные главы в учебнике или в разделе Explore. Затем, спустя некоторое время, вернитесь к задаче.</p>
39
<p><strong>Совет:</strong>выпишите вопросы в план, почитайте статьи и нужные главы в учебнике или в разделе Explore. Затем, спустя некоторое время, вернитесь к задаче.</p>
40
<p><strong>Вы относитесь к LeetCode как к соревнованию или генеральной репетиции собеседования.</strong>Но если интервью с лайвкодингом не ждёт вас буквально через неделю, проще смотреть на LeetCode как на обычный обучающий сервис. Задачи нужны вам для того, чтобы понять, в каких темах вы плаваете, почитать об этом, разобраться в деталях и вернуться для закрепления.</p>
40
<p><strong>Вы относитесь к LeetCode как к соревнованию или генеральной репетиции собеседования.</strong>Но если интервью с лайвкодингом не ждёт вас буквально через неделю, проще смотреть на LeetCode как на обычный обучающий сервис. Задачи нужны вам для того, чтобы понять, в каких темах вы плаваете, почитать об этом, разобраться в деталях и вернуться для закрепления.</p>
41
<p><strong>Совет:</strong>на LeetCode есть раздел "Подборки", куда можно добавить задачу, чтобы она не потерялась, и попытаться решить её позже. Соответствующая кнопка называется<strong>My List</strong>и отмечена в меню профиля сердечком или папкой со звёздочкой.</p>
41
<p><strong>Совет:</strong>на LeetCode есть раздел "Подборки", куда можно добавить задачу, чтобы она не потерялась, и попытаться решить её позже. Соответствующая кнопка называется<strong>My List</strong>и отмечена в меню профиля сердечком или папкой со звёздочкой.</p>
42
<p><strong>В какой-нибудь строчке спряталась глупая ошибка, или одно действие не пришло в голову.</strong>Часто это становится понятно после просмотра готового решения. В этом случае можно исправить своё решение или добавить в него недостающий фрагмент и обдумать, почему вы этого не сделали сразу.</p>
42
<p><strong>В какой-нибудь строчке спряталась глупая ошибка, или одно действие не пришло в голову.</strong>Часто это становится понятно после просмотра готового решения. В этом случае можно исправить своё решение или добавить в него недостающий фрагмент и обдумать, почему вы этого не сделали сразу.</p>
43
<p><strong>Совет:</strong> решения многих задач на сайте можно посмотреть даже без премиум-подписки. Подглядывать в ответы полезно - это нормальный процесс обучения. Если вам немного не хватило знаний, в этом нет ничего зазорного, главное - знать свои слабые места.</p>
43
<p><strong>Совет:</strong> решения многих задач на сайте можно посмотреть даже без премиум-подписки. Подглядывать в ответы полезно - это нормальный процесс обучения. Если вам немного не хватило знаний, в этом нет ничего зазорного, главное - знать свои слабые места.</p>
44
<p><strong>Вы берёте задачи хаотично.</strong>Очень легко выгореть, если заниматься слишком много и особенно если пытаться решить подряд несколько слишком сложных задач. Проблема обычно в том, что вы не идёте по пути постепенного возрастания сложности.</p>
44
<p><strong>Вы берёте задачи хаотично.</strong>Очень легко выгореть, если заниматься слишком много и особенно если пытаться решить подряд несколько слишком сложных задач. Проблема обычно в том, что вы не идёте по пути постепенного возрастания сложности.</p>
45
<p><strong>Совет:</strong>возможно, у вас не скорректирован<a>план обучения</a>и вы хватаетесь за задачи из разных тем. В этом случае у вас не упорядочиваются знания по определённой теме, а рост происходит вразнобой. Двигаясь так, очень легко потерять мотивацию и всё возненавидеть.</p>
45
<p><strong>Совет:</strong>возможно, у вас не скорректирован<a>план обучения</a>и вы хватаетесь за задачи из разных тем. В этом случае у вас не упорядочиваются знания по определённой теме, а рост происходит вразнобой. Двигаясь так, очень легко потерять мотивацию и всё возненавидеть.</p>
46
<p><strong>Вы начали с daily-задач.</strong>Некоторые переоценивают свои знания и сразу берутся за сложное. В общем, смотри раздел выше.</p>
46
<p><strong>Вы начали с daily-задач.</strong>Некоторые переоценивают свои знания и сразу берутся за сложное. В общем, смотри раздел выше.</p>
47
<p><strong>Совет:</strong>если всё-таки набрались смелости и решили попробовать свои силы в Daily, кликните на нужном дне в календаре справа в разделе<a>All</a>.</p>
47
<p><strong>Совет:</strong>если всё-таки набрались смелости и решили попробовать свои силы в Daily, кликните на нужном дне в календаре справа в разделе<a>All</a>.</p>
48
Так выглядит календарь<em>Скриншот:<a>LeetCode</a></em><p>При решении задач желательно сразу писать код так, чтобы потом его было не стыдно показать другому программисту, - а ещё лучше действительно его показывать, выкладывая в раздел Discuss с объяснением.</p>
48
Так выглядит календарь<em>Скриншот:<a>LeetCode</a></em><p>При решении задач желательно сразу писать код так, чтобы потом его было не стыдно показать другому программисту, - а ещё лучше действительно его показывать, выкладывая в раздел Discuss с объяснением.</p>
49
<p>Ваша оценка прогресса, скорее всего, будет очень нестабильна. Может случиться так, что, прорешав много лёгких задач на одну тему, вы переходите на средний или даже высокий уровень и всё получается. А в другой день попадается задача, усложнённая вопросом из незнакомой области, вы не можете её решить и расстраиваетесь. Или, переходя к другой теме и столкнувшись с трудностями, теряете веру в себя.</p>
49
<p>Ваша оценка прогресса, скорее всего, будет очень нестабильна. Может случиться так, что, прорешав много лёгких задач на одну тему, вы переходите на средний или даже высокий уровень и всё получается. А в другой день попадается задача, усложнённая вопросом из незнакомой области, вы не можете её решить и расстраиваетесь. Или, переходя к другой теме и столкнувшись с трудностями, теряете веру в себя.</p>
50
<p>Если вы плохо ориентируетесь в какой-то теме и каждый раз допускаете ошибки, имеет смысл ей заниматься. Были разделы, в которых, даже если я один раз что-то одолела, решить аналогичную задачу уже не получалось. Например, самый тяжёлый топик для меня - динамическое программирование. Это не просто какой-то чёткий алгоритм или структура данных, подчиняющаяся правилам, это концепция, и нужно не только понимать и знать её, но и видеть, когда и как её можно применить в задачах.</p>
50
<p>Если вы плохо ориентируетесь в какой-то теме и каждый раз допускаете ошибки, имеет смысл ей заниматься. Были разделы, в которых, даже если я один раз что-то одолела, решить аналогичную задачу уже не получалось. Например, самый тяжёлый топик для меня - динамическое программирование. Это не просто какой-то чёткий алгоритм или структура данных, подчиняющаяся правилам, это концепция, и нужно не только понимать и знать её, но и видеть, когда и как её можно применить в задачах.</p>
51
<p>Но всё равно: чем больше задач вы решаете и чем регулярнее это делаете, тем ощутимее растёт уровень знаний, ваша уверенность в себе и скорость, с которой вы пишете правильный код.</p>
51
<p>Но всё равно: чем больше задач вы решаете и чем регулярнее это делаете, тем ощутимее растёт уровень знаний, ваша уверенность в себе и скорость, с которой вы пишете правильный код.</p>
52
<p>Если качество - это плавающий показатель, то рост скорости, с которой первично разбираешься в проблеме, можно отследить уже через пару месяцев. А если это простая тема вроде массивов, то ещё раньше, уже через пару недель.</p>
52
<p>Если качество - это плавающий показатель, то рост скорости, с которой первично разбираешься в проблеме, можно отследить уже через пару месяцев. А если это простая тема вроде массивов, то ещё раньше, уже через пару недель.</p>
53
<p>Мне нравится, что LeetCode своеобразно поощряет постоянно решать задачи: монетками за "дейлики" или просто красивой статистикой в профиле. Конечно, такой мотивации вряд ли хватит, чтобы ломать голову, не сдаваясь ни на день, но это прекрасно работает как дополнительный стимул.</p>
53
<p>Мне нравится, что LeetCode своеобразно поощряет постоянно решать задачи: монетками за "дейлики" или просто красивой статистикой в профиле. Конечно, такой мотивации вряд ли хватит, чтобы ломать голову, не сдаваясь ни на день, но это прекрасно работает как дополнительный стимул.</p>
54
Первые три месяца моя статистика выглядела так - прогресс был постепенным<em>Скриншот: личный архив Нины Торгунаковой</em><p>Один из моих знакомых сейчас пишет<a>тред "365 дней с LeetCode"</a>, где каждый день делится прогрессом и рассказывает, какие задачи он решил. Спустя одну неделю после начала он подвёл итог: 13 задач. Уже на этом этапе он почувствовал, какие темы стал быстро решать сразу, а для каких надо подтянуть скиллы. И он в этом не одинок: мне стали чаще писать и делиться своим прогрессом люди, которые раньше совсем не решали задачи, но сейчас смогли начать. Кстати, рассказывать о своём успехе друзьям или просто читателям в соцсетях полезно: это помогает не сбиться с пути и найти новых единомышленников.</p>
54
Первые три месяца моя статистика выглядела так - прогресс был постепенным<em>Скриншот: личный архив Нины Торгунаковой</em><p>Один из моих знакомых сейчас пишет<a>тред "365 дней с LeetCode"</a>, где каждый день делится прогрессом и рассказывает, какие задачи он решил. Спустя одну неделю после начала он подвёл итог: 13 задач. Уже на этом этапе он почувствовал, какие темы стал быстро решать сразу, а для каких надо подтянуть скиллы. И он в этом не одинок: мне стали чаще писать и делиться своим прогрессом люди, которые раньше совсем не решали задачи, но сейчас смогли начать. Кстати, рассказывать о своём успехе друзьям или просто читателям в соцсетях полезно: это помогает не сбиться с пути и найти новых единомышленников.</p>
55
<p>По отклику людей на мой<a>тред</a>я поняла, что читателей больше всего интересует, как организовать время и энергию, чтобы хватало сил каждый день решать задачи. Хочу поделиться опытом.</p>
55
<p>По отклику людей на мой<a>тред</a>я поняла, что читателей больше всего интересует, как организовать время и энергию, чтобы хватало сил каждый день решать задачи. Хочу поделиться опытом.</p>
56
<p>Например, как каждая уважающая себя сова, я с утра совсем не могу делать физические упражнения, но вечером с удовольствием занимаюсь спортом. А вот задачи мне легче всего решать на рассвете.</p>
56
<p>Например, как каждая уважающая себя сова, я с утра совсем не могу делать физические упражнения, но вечером с удовольствием занимаюсь спортом. А вот задачи мне легче всего решать на рассвете.</p>
57
<p>У меня был такой распорядок дня: проснувшись, я решала маленькие задачи на LeetCode, а потом ехала на работу. Или, если утром не было времени, делала их в обеденный перерыв. Уже в конце рабочего дня я полностью отдыхала от умственной деятельности на тренировке.</p>
57
<p>У меня был такой распорядок дня: проснувшись, я решала маленькие задачи на LeetCode, а потом ехала на работу. Или, если утром не было времени, делала их в обеденный перерыв. Уже в конце рабочего дня я полностью отдыхала от умственной деятельности на тренировке.</p>
58
<p>Я считаю, что такой подход помог не выгореть. Если бы я отработала целый день и решала задачи уставшей, мне было бы сложно не сдаться.</p>
58
<p>Я считаю, что такой подход помог не выгореть. Если бы я отработала целый день и решала задачи уставшей, мне было бы сложно не сдаться.</p>
59
<p>Нужно исходить из привычного вам ритма - только так получится сделать занятия регулярными. Это один из главных советов по самоорганизации.</p>
59
<p>Нужно исходить из привычного вам ритма - только так получится сделать занятия регулярными. Это один из главных советов по самоорганизации.</p>
60
<p>Не все задачи решаются с первого захода. Если решение не приходит в голову в течение 30-40 минут, почитайте дополнительную литературу и посмотрите чужие решения. Затем возвращайтесь к задаче.</p>
60
<p>Не все задачи решаются с первого захода. Если решение не приходит в голову в течение 30-40 минут, почитайте дополнительную литературу и посмотрите чужие решения. Затем возвращайтесь к задаче.</p>
61
<p>Нет ничего зазорного в том, чтобы учиться у других и повторять их удачные приёмы. Это не поражение, а естественная часть обучения.</p>
61
<p>Нет ничего зазорного в том, чтобы учиться у других и повторять их удачные приёмы. Это не поражение, а естественная часть обучения.</p>
62
<p>Прокачка знаний с помощью решения задач должно стать вашей долговременной целью. Если вы будете в течение недели решать по 20 задач в день, можно быстро перегореть и остановиться, а через месяц от приобретённых навыков ничего не останется. Поэтому регулярность очень важна. Не нужно набрасываться на задачи и пытаться решить всё, лучше выстроить стабильный процесс.</p>
62
<p>Прокачка знаний с помощью решения задач должно стать вашей долговременной целью. Если вы будете в течение недели решать по 20 задач в день, можно быстро перегореть и остановиться, а через месяц от приобретённых навыков ничего не останется. Поэтому регулярность очень важна. Не нужно набрасываться на задачи и пытаться решить всё, лучше выстроить стабильный процесс.</p>
63
<p>Часто люди приходят на LeetCode, чтобы подготовиться к собеседованиям. Вы будете смеяться, но конкретно мне мой годовой опыт не пригодился: в последний раз, когда я искала новую работу, я проходила только через одно техническое собеседование (кстати, оно было к "Злым марсианам"), и оно было вообще не про решение алгоритмических задач в онлайн-формате. Тем не менее проведённый на LeetCode год помог мне почувствовать себя увереннее и пройти отбор. И вот почему:</p>
63
<p>Часто люди приходят на LeetCode, чтобы подготовиться к собеседованиям. Вы будете смеяться, но конкретно мне мой годовой опыт не пригодился: в последний раз, когда я искала новую работу, я проходила только через одно техническое собеседование (кстати, оно было к "Злым марсианам"), и оно было вообще не про решение алгоритмических задач в онлайн-формате. Тем не менее проведённый на LeetCode год помог мне почувствовать себя увереннее и пройти отбор. И вот почему:</p>
64
<ul><li><strong>Это расширило мой кругозор.</strong>Погуглить алгоритм и затем внедрить его - зачастую очень быстрый процесс. А вот понять, какой выбрать эффективный путь для решения задачи, - уже интереснее. Я уверена, что в реальной работе нам едва ли требуется полностью по памяти писать HeapSort, но иметь представление, что это и для чего, может быть полезно.</li>
64
<ul><li><strong>Это расширило мой кругозор.</strong>Погуглить алгоритм и затем внедрить его - зачастую очень быстрый процесс. А вот понять, какой выбрать эффективный путь для решения задачи, - уже интереснее. Я уверена, что в реальной работе нам едва ли требуется полностью по памяти писать HeapSort, но иметь представление, что это и для чего, может быть полезно.</li>
65
<li><strong>Научилась писать код более быстро и осознанно</strong>за счёт понимания сложности алгоритмов и разных структур данных, способности просчитывать граничные случаи и составлять сценарии для тестирования кода. Вспомните о ситуациях, когда вам попалась маленькая лёгкая задачка, но вы потратили на неё больше времени, потому что не довели до автоматизма написание нужных конструкций. У меня ощутимо выросла скорость работы на языке, на котором я решала всё это время, - на нём я и работаю. Какие-то вещи пишу на автомате и не боюсь задач, которые включают в себя такие структуры, как деревья, например.</li>
65
<li><strong>Научилась писать код более быстро и осознанно</strong>за счёт понимания сложности алгоритмов и разных структур данных, способности просчитывать граничные случаи и составлять сценарии для тестирования кода. Вспомните о ситуациях, когда вам попалась маленькая лёгкая задачка, но вы потратили на неё больше времени, потому что не довели до автоматизма написание нужных конструкций. У меня ощутимо выросла скорость работы на языке, на котором я решала всё это время, - на нём я и работаю. Какие-то вещи пишу на автомате и не боюсь задач, которые включают в себя такие структуры, как деревья, например.</li>
66
<li><strong>Стала легче учиться новому.</strong>Я решала задачи на давно знакомом мне языке. Но знаю, что многие так практикуют язык, который ещё не знают. Это помогает в обучении, потому что, прежде чем подойти к рабочим задачам, как правило, нужно сориентироваться в синтаксисе. Тренировочные задачи помогают понять, когда вы можете уверенно решать что-то небольшое. Это важный этап перед тем, как перейти к серьёзным рабочим процессам.<p>Раньше я не всегда задумывалась о том, когда код может упасть, то есть каким может быть граничное тестовое значение, при котором что-то сломается или посчитается неправильно.</p>
66
<li><strong>Стала легче учиться новому.</strong>Я решала задачи на давно знакомом мне языке. Но знаю, что многие так практикуют язык, который ещё не знают. Это помогает в обучении, потому что, прежде чем подойти к рабочим задачам, как правило, нужно сориентироваться в синтаксисе. Тренировочные задачи помогают понять, когда вы можете уверенно решать что-то небольшое. Это важный этап перед тем, как перейти к серьёзным рабочим процессам.<p>Раньше я не всегда задумывалась о том, когда код может упасть, то есть каким может быть граничное тестовое значение, при котором что-то сломается или посчитается неправильно.</p>
67
<p>LeetCode даёт навык сначала думать обо всех этих случаях и только потом посылать ответ. Когда решение высвечивается красным из-за того, что что-то сломалось на граничном случае, постепенно приходишь к мысли, что этот случай надо просчитывать. Это довольно весомый плюс, потому что в работе сильно снижается количество багов.</p>
67
<p>LeetCode даёт навык сначала думать обо всех этих случаях и только потом посылать ответ. Когда решение высвечивается красным из-за того, что что-то сломалось на граничном случае, постепенно приходишь к мысли, что этот случай надо просчитывать. Это довольно весомый плюс, потому что в работе сильно снижается количество багов.</p>
68
</li>
68
</li>
69
<li><strong>Научилась задавать правильные вопросы.</strong>Некоторые задачи на LeetCode сформулированы хорошо, подробно - сразу можешь прочесть, понять и решить. Другие сформулированы кратко, и только тестовые кейсы помогут понять, что имелось в виду. А иногда даже они не особо помогают. В процессе решения у вас возникают вопросы: может ли, например, быть такой формат входных данных. По-хорошему, это должно быть указано в задаче, но иногда нужно идти в раздел Discuss или дополнительно искать информацию о каком-то термине. И это тоже важный этап в процессе обучения.</li>
69
<li><strong>Научилась задавать правильные вопросы.</strong>Некоторые задачи на LeetCode сформулированы хорошо, подробно - сразу можешь прочесть, понять и решить. Другие сформулированы кратко, и только тестовые кейсы помогут понять, что имелось в виду. А иногда даже они не особо помогают. В процессе решения у вас возникают вопросы: может ли, например, быть такой формат входных данных. По-хорошему, это должно быть указано в задаче, но иногда нужно идти в раздел Discuss или дополнительно искать информацию о каком-то термине. И это тоже важный этап в процессе обучения.</li>
70
<li><strong>Научилась писать красивый код и объяснять свои решения на английском.</strong>Всё это благодаря разделу Discuss. Там есть отличные примеры того, как умные люди пишут и объясняют свои решения на разных языках программирования. Можно многому научиться и взять себе на заметку. Но иногда мне не хватало объяснений, и тогда я выкладывала собственные. При этом старалась сделать код чистым, а пояснения к нему - понятными. Приятно получать за это звёздочки от других людей.</li>
70
<li><strong>Научилась писать красивый код и объяснять свои решения на английском.</strong>Всё это благодаря разделу Discuss. Там есть отличные примеры того, как умные люди пишут и объясняют свои решения на разных языках программирования. Можно многому научиться и взять себе на заметку. Но иногда мне не хватало объяснений, и тогда я выкладывала собственные. При этом старалась сделать код чистым, а пояснения к нему - понятными. Приятно получать за это звёздочки от других людей.</li>
71
<li><strong>Стала быстрее схватывать суть задачи</strong>, лучше объяснять собственный код, легче находить оптимальное решение. Теперь, когда я вижу ТЗ, быстрее распознаю граничные кейсы, когда что-то может сломаться, или вникаю в смысл задачи глубже - чтобы эффективнее найти способ её решения. Это отметили в "Злых марсианах", когда я проходила тестовое задание. Разработчики часто недооценивают важность софт-скиллов, но при правильном подходе LeetCode может помочь и в этом.</li>
71
<li><strong>Стала быстрее схватывать суть задачи</strong>, лучше объяснять собственный код, легче находить оптимальное решение. Теперь, когда я вижу ТЗ, быстрее распознаю граничные кейсы, когда что-то может сломаться, или вникаю в смысл задачи глубже - чтобы эффективнее найти способ её решения. Это отметили в "Злых марсианах", когда я проходила тестовое задание. Разработчики часто недооценивают важность софт-скиллов, но при правильном подходе LeetCode может помочь и в этом.</li>
72
</ul><a>Научитесь: Профессия Фронтенд-разработчик + ИИ Узнать больше</a>
72
</ul><a>Научитесь: Профессия Фронтенд-разработчик + ИИ Узнать больше</a>