Вопрос на собеседовании · Go-разработчик

Как устроен слайс? Что произойдёт при append?

Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.

Обновлено 25 сентября 2026 г.базовая тема
Go-разработчикПрофессии и разделы
Короткий ответ

Слайс в Go — небольшой дескриптор, который содержит ссылку на backing array, длину и ёмкость. Сам слайс не хранит элементы отдельно: несколько слайсов могут смотреть на один массив и видеть изменения друг друга.

append добавляет элементы в существующий массив, пока хватает capacity. Когда места недостаточно, runtime выделяет новый массив, копирует элементы и возвращает новый дескриптор. Поэтому результат append нужно присваивать, а предположения о совместном массиве после роста становятся ненадёжными.

01 · Структура ответа

Что важно сказать интервьюеру

Раскройте тезисы, которые относятся именно к этому вопросу, и поясните их на собственном примере:

len — доступное число элементов, cap — пространство до конца backing array.
Копирование значения slice копирует дескриптор, а не элементы.
append может заменить backing array.
Подслайс может удерживать в памяти большой исходный массив.

02 · Пример

Как объяснить на практике

Функция получает slice по значению и делает append. Если capacity хватило, изменение элементов может быть видно вызывающему коду; если произошёл рост, функция работает уже с новым массивом. Чтобы вернуть изменившуюся длину, функция должна вернуть новый slice.

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

03 · Ошибки

Чего избегать в ответе

Называть slice динамическим массивом без объяснения дескриптора и backing array.
Игнорировать возвращаемое значение append.
Считать, что два подслайса всегда независимы.

04 · Углубление

Что могут спросить следом

  1. Чем nil slice отличается от пустого?
  2. Как работает copy?
  3. Почему небольшой subslice может удерживать много памяти?

05 · Проверка фактов

Первоисточники по теме

Ссылки ниже помогают проверить понятия, методы и ограничения по теме. Они не являются доказательством того, что этот вопрос задают на каждом собеседовании.

Практика ответа

Ответьте вслух, а не про себя

Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с подсказкой.

Потренировать ответ