What is the difference between a class and an object, and how does the runtime treat them differently?
A class is a description: the set of fields an instance will have, the methods it will answer to, and the rules the compiler enforces about how those may be used. It is not data itself, and there is exactly one copy of it per class loader for a given program. An object is a runtime instance of that description, and each one carries its own copy of the instance state.
The runtime keeps the class as metadata, including its method bodies and the layout of its fields, and it uses that metadata to allocate and initialise objects. Creating an object allocates space for the instance fields, runs the initialisation the class specifies, and hands back a reference. The reference is not the object; it is a value that points at one.
Two practical consequences follow from that. First, the class is where behaviour is written once and shared by every instance, while the instance fields are where the differences live. Second, a reference can be copied freely without copying the object, which is exactly why two variables can end up pointing at the same mutable state and why you have to be careful about who is allowed to change it.
A good closing line for an interview: the class is the type and its rules, the object is one living thing that follows those rules, and the reference is your handle on it.