Вопрос с собеседования — почему не меняется объект?
потому что в строке let products = obj.data
вы по сути в products вставляете ссылку на obj.data
а в строкеproducts = []
вы заменяете эту ссылку на другую
при этом содержимое obj.data тоже ссылка, и она остается прежней.другими словами: если вы записали на листок телефон своей девушки а потом найдя другую девушку, про старую решили забыть и зачеркнув ее номер написали номер новой девушки то прежня девушка никуда не исчезла? она ведь по прежнему сидит на своем номере телефона и ждет вашего звонка? (в данной ситуации products и есть этот листок с номером ))))
ЗЫ: был несколько невнимателен, не достиг моего мозга последний абзац вашего вопроса. Ответили вы верно.
Оператор присваивания устанавливает значение переменной.  Значение переменной было "ссылочный тип", а стало "тип массив"  - действий с obj.data не производилось.
Вроде все верно ответили, единственное, что можно было бы  замолчать фразу "помещая уже имеющийся объект в переменную - мы создаем на него новый reference через эту переменную."