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

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

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

Обновлено 10 августа 2026 г.Встречается почти всегда
Короткий ответ

Слайс в 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 может удерживать много памяти?

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

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

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

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