Как называется процесс переноса данных в новую область памяти при увеличении Map

«Как называется процесс переноса данных в новую область памяти при увеличении Map» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При увеличении map в Go происходит rehashing — перераспределение элементов по новым бакетам с увеличением памяти. Это нужно, чтобы сохранить эффективность операций (вставки, поиска).

Пример:

m := make(map[string]int, 1) // начальный размер 1
m["a"] = 1
m["b"] = 2 // может вызвать rehashing, если превышен load factor (~6.5)

Нюансы:

  • Рехешинг автоматический, но затратный (O(n))
  • Старые бакеты постепенно копируются в новую память
  • В процессе могут временно сосуществовать старый и новый массив бакетов