Что такое тип Object в Java и зачем он нужен
Что проверяют
Базовое знание иерархии типов плюс то, как она выглядит в приложении под Android: соотношение Object и Any в Kotlin, слабо типизированные хранилища вроде Bundle, цена универсальных контейнеров на устройстве. Одного определения из учебника здесь мало.
Как отвечать
Object это корень иерархии классов в Java: от него любой класс получает equals, hashCode, toString, getClass, clone и методы монитора wait и notify. Массивы тоже наследуются от Object, примитивы попадают в него через обёртки.
В Kotlin вершина иерархии это Any, и разница существенная: у Any объявлены только equals, hashCode и toString, методы монитора в публичный API типа не входят, класс берётся через javaClass или ссылку на класс. Any не допускает null, для этого есть Any?. И отдельно проговорите, что ключевое слово object в Kotlin означает совсем другое, синглтон или анонимный объект, на этой омонимии ловят регулярно.
Где слабая типизация встречается в реальном коде под Android: Bundle и extras у Intent хранят значения по строковому ключу и возвращают их без гарантий типа; payload при точечном обновлении элемента списка передаётся как произвольный объект; состояние экрана сохраняется через сериализацию.
Практический вывод: на границе, где тип неизвестен, читаем с проверкой типа и обработкой отсутствия ключа, а внутри приложения берём дженерики и закрытые иерархии вместо универсального типа. Добавьте, что универсальный контейнер тянет за собой упаковку чисел, поэтому для целочисленных ключей берут специализированные коллекции.
Где спотыкаются
Ставят знак равенства между Any и Object и теряются, когда просят вызвать на Any метод монитора или получить класс. Это разные наборы, и в Kotlin путь к классу другой.
Кладут данные в Bundle и читают их обратно без проверки типа и наличия ключа. После пересоздания процесса или обновления приложения это даёт исключение приведения типа или тихий null в самом неудобном месте.
Считают, что data class закрывает вопрос равенства навсегда. Сгенерированные equals и hashCode учитывают только свойства основного конструктора, а изменяемое поле внутри ключа ломает и множества, и сравнение элементов списка при обновлении.