SprintCode.pro

Подготовка к алгоритмическим задачам

Super

Easy, medium или hard: задачи какой сложности решать перед собеседованием

10 мин чтения
собеседование
leetcode
подготовка

Коротко

ПозицияЧто дают на собеседованииКак распределить подготовку
Junioreasy, изредка лёгкий medium70% easy, 30% medium
Middlemedium, иногда два подряд20% easy, 70% medium, 10% hard
Seniormedium посложнее, редко hard10% easy, 70% medium, 20% hard

Короткий ответ для тех, кто пришёл за ним: основной уровень — medium. На него приходится большинство задач для любой позиции выше стажёра.

Почему medium — это стандарт

Задача на собеседовании должна укладываться в 30–40 минут вместе с обсуждением, уточнением условия и написанием кода. Плюс интервьюеру нужно место для дополнительных вопросов.

Easy решается за 10 минут и почти ничего не показывает: справится и человек, который просто помнит решение.

Hard требует либо знания конкретного редкого приёма, либо часа времени. Провалить её может и сильный кандидат — просто потому что не сталкивался с этой техникой. Такой сигнал интервьюеру бесполезен.

Medium попадает в золотую середину: требует понимания паттерна, но решается за отведённое время. Именно поэтому большинство задач берут отсюда.

Что значит каждый уровень на практике

Easy

Одна структура данных, один очевидный приём, решение в 10–20 строк.

Примеры: найти дубликаты в массиве, проверить анаграмму, развернуть связный список, проверить корректность скобок.

Где встречается: телефонный скрининг, задача-разминка в начале очного этапа, собеседования на стажировку.

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

Medium

Комбинация двух идей или неочевидный приём. Решение на 20–40 строк, нужно подумать перед тем, как писать.

Примеры: сумма трёх чисел, самая длинная подстрока без повторов, обход дерева по уровням, поиск в повёрнутом массиве, задачи на динамику средней сложности.

Где встречается: основной формат для позиций middle и senior.

Признак, что уровень освоен: вы видите медиум-задачу из знакомой темы и понимаете подход до того, как начали писать код.

Hard

Требует редкого приёма или сочетания нескольких: суффиксные структуры, продвинутая динамика, сложная геометрия, нестандартные оптимизации.

Примеры: минимальное окно-подстрока, медиана двух отсортированных массивов, задачи с деревьями отрезков.

Где встречается: топовые компании, соревновательное программирование, изредка — как последний вопрос сильному кандидату.

Реальность такая: на большинстве собеседований hard не дают вообще. Тратить на них половину подготовки — плохая инвестиция.

Пройди собеседование в топ-компанию
Платформа для подготовки

Решай алгоритмические задачи как профи

✓ Популярные алгоритмы✓ Разбор решений✓ AI помощь
Начать сейчас
Программист за работой

Распределение по позициям

Junior и стажировка

Основа — easy, плюс лёгкие medium к концу подготовки.

Что действительно спросят: массивы, строки, хеш-таблицы, простые операции со связными списками. Динамику почти наверняка не дадут, сложные графы тоже.

Приоритет: уверенность в базе важнее широты. Лучше твёрдо знать шесть тем, чем поверхностно четырнадцать.

Middle

Ядро подготовки — medium. Easy используются для разогрева и проверки, что база не забыта.

Что спросят: все базовые темы плюс деревья, графы, динамика начального уровня. Ожидается, что вы сразу назовёте сложность и предложите оптимизацию.

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

Senior

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

Что важнее: не столько решить задачу, сколько показать инженерное мышление — обсудить компромиссы, крайние случаи, влияние на производительность.

Сколько задач каждого уровня

Ориентир на подготовку в 2–3 месяца:

УровеньКоличествоЗачем
Easy40–50закрепить базовые паттерны
Medium80–100основной формат собеседований
Hard10–20только если целитесь в топовые компании

Сигнал, что пора переходить с easy на medium: вы решаете лёгкие задачи из знакомой темы за 10–15 минут без подсказок. Если каждая занимает полчаса — рано.

Обратный сигнал: если medium-задачи регулярно не поддаются даже после 40 минут, стоит вернуться к easy той же темы. Провал обычно означает, что базовый паттерн не закреплён, а не что задача слишком сложная.

Метки сложности врут

Полезно знать: деление на easy/medium/hard на LeetCode неточное.

Некоторые задачи помечены как easy, но требуют неочевидной идеи. Некоторые medium решаются механически, если знаешь приём. Метка отражает процент успешных решений, а не объективную сложность.

Практический вывод: не ориентируйтесь на метку как на истину. Ориентируйтесь на тему и на то, знаете ли вы соответствующий приём.

Частые ошибки

Прыжок сразу к hard. Кажется, что так подготовка эффективнее. На деле без базы hard-задачи только заучиваются, а на собеседовании дадут medium, которую вы не узнаете.

Игнорирование easy. «Это слишком просто» — и на скрининге человек не может за 15 минут написать разворот списка без ошибок.

Погоня за сложностью вместо скорости. На собеседовании важно не только решить, но и уложиться во время. Полезнее решить десять medium за 25 минут каждую, чем одну hard за два часа.

Оценка готовности по числу решённых задач. Правильная метрика — можете ли вы решить незнакомую medium из знакомой темы за 30 минут.

Что запомнить

  • Основной уровень собеседований — medium, на него приходится большинство задач.
  • Easy нужны для закрепления базы и встречаются на скрининге; пропускать их нельзя.
  • Hard дают редко — вкладываться в них стоит только при подготовке в топовые компании.
  • Распределение для мидла: примерно 20% easy, 70% medium, 10% hard.
  • Метки сложности на LeetCode приблизительны; ориентируйтесь на тему, а не на ярлык.

Задачи по теме

Дубликаты в массиве

Массивы и Хеширование
Легко

Найдите, содержит ли массив какие-либо дубликаты. Функция должна вернуть true, если какое-либо значение появляется минимум дважды, и false, если каждый элемент уникален.

#Массивы#Хеш-таблицы
Базовые алгоритмыСтартапы и финтехУниверсальный набор
15 мин

Сумма трёх чисел

Два указателя
Средне

Найдите все уникальные тройки чисел в массиве, сумма которых равна нулю. Функция должна вернуть массив троек чисел, где каждая тройка содержит три различных элемента, дающих в сумме ноль.

#Массивы#Сортировка#Два курсора
Алгоритмические контестыПродуктовые компанииИнтенсивная подготовкаСовременные задачи
30 мин

Поиск слова

Поиск с возвратом
Средне

В двумерной сетке символов найдите, можно ли составить заданное слово, двигаясь по соседним ячейкам горизонтально или вертикально. Каждую ячейку можно использовать только один раз.

#Массивы
Алгоритмические контестыИнтенсивная подготовкаСовременные задачи
30 мин