There is a simple way to check whether a language does call-by-reference: can you write a swap function such that after calling swap(a, b), the variables a and b in the calling function refer to different values than before? In Java this is impossible.
Because the terminology is so confusing when object reference values are being passed-by-value, Barbara Liskov suggested we call it call-by-sharing.
[1] you can make C look like it's doing pass-by-reference by throwing some & and * operators around. That doesn't change the fact that it is purely call-by-value.
You understood correctly, it's just how it gets phrased.
You can never have a variable that directly represents an object in Java. You can only ever hold a reference to an object. Those references to objects are passed by value.
So his statement is more technically correct, but in general "objects are passed by reference and scalars by value" is the understanding that an interviewer would likely be looking for.
For other languages, I think framing parameter-passing in these terms just creates more confusion then it resolves. I would rather describe the situation like this: In Java, when you pass a mutable object (or array) to a method and the callee mutates it, the caller will see the changed version.
Most of these "wrong" answers are only guilty of not being explicit enough to be a page long.
There are plenty of pages on the web explaining why suggesting Java support pass-by-reference is incorrect.