Что такое copy-on-write (CoW)?
Суть
Copy-on-write — оптимизация value-семантики: при присваивании копируется не буфер с данными, а только ссылка на него, и реальная копия делается перед первой мутацией, если буфер разделяют несколько владельцев. Снаружи это выглядит как честное копирование значения, но дешёвое.
Так устроены Array, Dictionary, Set, String, Data: внутри у них класс-буфер, а сама структура — маленькая обёртка со ссылкой.
var x = [1, 2, 3]
var y = x // O(1): буфер общий
y.append(4) // здесь O(n): копия буфера перед мутацией
print(x, y) // [1, 2, 3] [1, 2, 3, 4]
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep