Почему UI обновляется только на главном потоке
Что проверяют
Знаете ли вы, что это не запрет «на всякий случай», а следствие устройства UI-тулкита, и умеете ли правильно возвращаться на главный поток. Заодно смотрят, отличаете ли вы «нельзя трогать View из фона» от «нельзя делать тяжёлую работу на главном потоке»: это разные ограничения с разными последствиями.
Как отвечать
Иерархия View не потокобезопасна намеренно. Сделать её потокобезопасной означало бы поставить блокировку на каждое обращение к полю, а платить за это пришлось бы на каждом кадре. Вместо этого выбрана модель одного потока-владельца. Проверку делает ViewRootImpl.checkThread(), отсюда знакомое CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
Главный поток крутит Looper с очередью сообщений, а отрисовку кадра запускает Choreographer по сигналу вертикальной синхронизации. Поэтому возврат на главный поток это не магия, а отправка сообщения в ту же очередь:
withContext(Dispatchers.Main) { binding.title.text = data.title }
// то же самое: view.post { ... }, Handler(Looper.getMainLooper()), liveData.postValue(...)Сильный ответ добавляет вторую половину: сам главный поток не должен ничего считать. Разбор ответа сервера, запрос в базу, декодирование картинки съедают бюджет кадра и приводят к пропускам и к ANR. Правило простое: данные готовятся в фоне, на главный поток уходит только присваивание готового значения.
Где спотыкаются
Считают, что нарушение всегда падает сразу. Проверка живёт в ViewRootImpl, а он появляется после присоединения к окну, поэтому правка View до первой компоновки проходит из фона молча и стреляет уже у пользователя.
Называют AsyncTask рабочим инструментом. Он устарел, и на собеседовании это маркер несвежих знаний: сейчас корутины с Dispatchers.Main, сбор Flow в lifecycleScope, в Compose состояние и LaunchedEffect.
Сводят всё к гонкам за данные и забывают про цену. Даже безупречное с точки зрения потоков решение, которое грузит главный поток, даёт дёргающийся список, и спросят именно про бюджет кадра.