Встречается на 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
интервью вопросы и ответы