Another recent C# interview question I had was if I knew what Boxing and Unboxing is. I explained that value types are on Stack and reference types on Heap. When a value is cast
You're right the second assignment replaces the first. It doesn't change the boxed value.
Your example doesn't make use of boxing. The value (int) is stored as an int and not boxed.
No, boxing still keeps the immutability guarantee.