Встречается на 12% собеседований по C#

Как устроен список

List<T> в C# — это динамический массив, который автоматически увеличивает свою вместимость при добавлении элементов.

Основные особенности:

  • Внутри использует массив T[] для хранения данных.
  • Имеет свойство Capacity (текущий размер внутреннего массива) и Count (фактическое количество элементов).
  • При добавлении элементов, если Count == Capacity, массив увеличивается в 2 раза (по умолчанию).

Пример:

csharp
List<int> numbers = new List<int>(); // Capacity = 0
numbers.Add(1); // Capacity = 4 (по умолчанию начальный размер)
numbers.AddRange(new[] { 2, 3, 4, 5 }); // Capacity = 8 (удвоение)

Оптимизация:

  • Если известно количество элементов, лучше задать Capacity заранее, чтобы избежать лишних переаллокаций.
  • TrimExcess() уменьшает Capacity до Count, если разница значительна.

Плюсы:

  • Быстрый доступ по индексу (O(1)).
  • Динамическое расширение.

Минусы:

  • Вставка/удаление в середину — O(n) (сдвиг элементов).
  • Переаллокация при расширении требует копирования данных.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы