Вопросы интервью Meituan: как HashMap образует бесконечный цикл? (самое полное объяснение с картинками)

интервью Java

Автор|С любовью

Оригинальный текст: blog.csdn.net/qq_36520235/article/details/86653136

Первое состояние:

Когда поток 1 только что расширил массив, он собирается подготовиться к повторному хешированию, но в это время принудительно вставляется и выполняется поток 2, а диаграмма состояний после повторного хеширования потока 2 (поток 1 представлен верхней частью, а поток 1 представлена ​​нижняя часть) это нить два)

在这里插入图片描述


Второй утверждает:

В этот момент поток пробудился, и нужно запустить операцию перехеширования.Узел с ключом 5 по-прежнему висит на позиции индекса массива 1, а за узлом с ключом 5 следует узел 9 (фактически ,предыдущий тут).Массив расширили до 4,а потом индекс надо переставить,так вот остаток 4,и то соответствующий связному списку под соответствующим индексом массива)在这里插入图片描述

Третье состояние:

Продолжаем обрабатывать узел с ключом 9 из первого состояния, поэтому он весь должен висеть в связанном списке с индексом 1 в массиве корзин, а порядок 9---->5---->NULL

在这里插入图片描述

Четвертое состояние:

В это время, после обработки 9 на третьем шаге, он обнаружил, что за узлом 9 находится узел 5 (этот узел 5 остался после перехеширования потока 2), в это время он поместит узел 5 в заголовок в thread one в это время 5---->9----5 (9->5 в последней части оставлено третьим зарезервированным состоянием), и здесь образуется бесконечный цикл.

在这里插入图片描述

Наконец

Добро пожаловать в официальный аккаунт: Программист в погоне за ветром, ответьте 66 и получите сводку основных знаний Java в 300-страничном документе в формате PDF!

Содержание этих материалов — это те знания, которые интервьюер должен задать во время интервью.Глава включает в себя множество точек знаний, в том числе базовые знания, коллекции Java, JVM, многопоточный параллелизм, принципы Spring, микросервисы, Netty и RPC, Kafka, журналы, шаблоны проектирования, алгоритмы Java, базы данных, Zookeeper, распределенные кэши, структуры данных и многое другое.