Этап 1 из 18 · ≈ 16 ч

Структуры данных

Основа с Junior

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

Выбор структуры данных определяет сложность операций. Поиск в массиве — O(n), в хеш-таблице — O(1), в сбалансированном дереве — O(log n).

структурадоступпоисквставкагде в языке
динамический массивO(1)O(n)O(1) в конецArray, list, ArrayList, срез Go
хеш-таблица—O(1)O(1)Map/Set, dict, HashMap, map
связный списокO(n)O(n)O(1) при известном узлеLinkedList
кучаминимум O(1)—O(log n)heapq, PriorityQueue
дерево поиска—O(log n)O(log n)TreeMap, индексы БД

Что важно знать

  • Как устроена хеш-таблица: хеш-функция, коллизии, расширение — и почему ключ должен быть неизменяемым.
  • Стек (последним пришёл — первым ушёл): вызовы функций, отмена действий, проверка скобок. Очередь: обработка задач, обход в ширину.
  • Куча — быстрый доступ к минимуму: приоритетные очереди, топ-K.
  • Деревья: DOM — дерево, индексы баз данных — B-деревья, JSON — дерево.
  • Амортизированная сложность: почему добавление в конец динамического массива — O(1), хотя иногда он копируется целиком.

Критерии освоения

Junior ≈ 16 ч

  • Выбирает между списком, словарём и множеством по нужным операциям и их сложности
  • Объясняет устройство хеш-таблицы — хеш, коллизии, расширение — и почему ключ неизменяемый
  • Применяет стек и очередь в задачах (скобки, обход в ширину)

Практика. Реализовать с нуля хеш-таблицу с цепочками и расширением и сравнить скорость со встроенным словарём.

Middle ≈ 8 ч

  • Использует кучу для топ-K и приоритетных очередей
  • Объясняет амортизированную сложность и устройство B-дерева в индексах баз данных

Практика. Решить задачу «топ-10 самых частых запросов из потока на миллион строк» с кучей, оценить память и время.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Чем массив отличается от связного списка?Junior

Массив — элементы подряд в памяти: доступ по индексу O(1), вставка в середину O(n); связный список — узлы со ссылками: вставка по известному месту O(1), доступ по индексу O(n).

Полный разбор
Как устроена хеш-таблица?Junior

Хеш-таблица — массив «корзин»: хеш-функция превращает ключ в номер корзины, поэтому поиск, вставка и удаление в среднем — O(1).

Полный разбор
Чем стек отличается от очереди и где они применяются?Junior

Стек — последним пришёл, первым ушёл (LIFO); очередь — первым пришёл, первым ушёл (FIFO). Основные операции — O(1).

Полный разбор
Что такое двоичная куча и очередь с приоритетом?Junior

Двоичная куча — дерево, где родитель не больше потомков (min-heap): минимум всегда в корне, вставка и извлечение — O(log n).

Полный разбор
Что такое двоичное дерево поиска и зачем его балансировать?Junior

В двоичном дереве поиска для каждого узла слева — меньшие ключи, справа — большие; поиск идёт по одной ветке — O(высоты).

Полный разбор
Что такое амортизированная сложность?Junior

Амортизированная сложность — средняя стоимость операции в длинной серии: редкие дорогие операции «размазываются» по многим дешёвым.

Полный разбор

← Вся карта «ИИ-инженер»

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования