Этап 2 из 11 · ≈ 4 ч

TreeMap, очереди и итераторы

Основа с Junior

Сортированные структуры, ArrayDeque и PriorityQueue, fail-fast итераторы.

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

  • TreeMap — красно-чёрное дерево: O(log n), floorKey, subMap.
  • ArrayDeque — стек и очередь лучше Stack и LinkedList.
  • PriorityQueue — двоичная куча.
  • Fail-fast итератор бросает исключение при изменении коллекции во время обхода; удалять — через iterator.remove() или removeIf.

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

Junior ≈ 4 ч

  • Использует TreeMap для диапазонных запросов и PriorityQueue для приоритетов
  • Объясняет ConcurrentModificationException и как удалять элементы при обходе

Практика. Решить задачи «топ-K элементов» на PriorityQueue и «ближайшее событие к моменту» на TreeMap.

Middle ≈ 2 ч

  • Выбирает реализацию коллекции под набор операций и объясняет выбор

Практика. Для 5 сценариев выбрать коллекцию и обосновать по сложности операций.

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

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

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

Смотреть все
Чем HashSet, LinkedHashSet и TreeSet отличаются?Junior

HashSet — без порядка, операции O(1); LinkedHashSet — помнит порядок вставки, O(1); TreeSet — отсортирован (красно-чёрное дерево), O(log n) и навигация: first, ceiling, subSet.

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

Comparable — естественный порядок, который задаёт сам класс (compareTo), один. Comparator — внешний порядок, их может быть сколько угодно, комбинируются через comparing().thenComparing(). Согласованность с equals: compareTo == 0 ровно тогда, когда equals ==…

Полный разбор
Чем fail-fast итератор отличается от weakly consistent?Senior

Fail-fast итератор (ArrayList, HashMap) замечает структурное изменение коллекции не через него и бросает ConcurrentModificationException — по возможности, без гарантии. Weakly consistent (ConcurrentHashMap, ConcurrentLinkedQueue) не падает, обходит каждый…

Полный разбор
В каком порядке TreeMap отдаёт свои ключи при обходе?Junior

Всегда в порядке сортировки ключей — по естественному порядку (Comparable) или по переданному компаратору.

Полный разбор
Почему стек реализуют через ArrayDeque, а не java.util.Stack?Middle

Стек и очередь в одном потоке — ArrayDeque (кольцевой массив, O(1) по краям, данные подряд). Stack наследует Vector: synchronized на каждой операции и доступ по индексу в середину — нарушает абстракцию стека.

Полный разбор
Чем очередь (FIFO) отличается от стека (LIFO)?Junior

Очередь (FIFO) отдаёт элементы в порядке поступления, стек (LIFO) — начиная с последнего добавленного.

Полный разбор
Чем List отличается от Set?Junior

List — упорядоченная последовательность с дубликатами и доступом по индексу; Set — только уникальные элементы.

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

Разборы темы

← Вся карта «Java»

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

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

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

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