Что будет если сделать сетевой запрос в дефолт диспетчере корутин
Что проверяют
Различаете ли вы Dispatchers.Default и Dispatchers.IO и понимаете ли, зачем их вообще двое. Вопрос с подвохом: очевидного сбоя не будет, и интервьюер ждёт объяснения, почему проблема всё равно есть.
Как отвечать
Исключения не случится, запрос выполнится. Dispatchers.Default это пул размером с число ядер, минимум два потока, рассчитанный на работу, которая занимает процессор: разбор, сортировку, сжатие. Блокирующий сетевой вызов процессор не занимает, он держит поток занятым ожиданием ответа.
Отсюда и беда: несколько одновременных запросов выбирают весь маленький пул, и корутины с настоящими вычислениями встают в очередь. На устройстве с двумя ядрами хватает пары параллельных загрузок, чтобы остальное подвисло, а выглядит это как случайные тормоза без единого исключения в логах.
Dispatchers.IO рассчитан ровно на такие блокирующие ожидания: лимит потоков у него заметно выше и растёт под нагрузкой, при этом потоки он делит с Default, так что переключение между ними не стоит создания нового потока.
Отдельно скажите про современный вариант. Функции Retrofit и Ktor с модификатором suspend поток не блокируют: они отдают запрос своему асинхронному движку и освобождают корутину на время ожидания, так что оборачивать такой вызов в withContext(Dispatchers.IO) не нужно. Этот вызов нужен для честно блокирующих вещей: файлы, настройки, синхронные методы старых библиотек.
Где спотыкаются
Отвечают, что упадёт с NetworkOnMainThreadException. Это исключение бросается только на главном потоке, а Default не главный, поэтому симптомов не будет вообще, и именно этим ошибка опасна.
Второе: считают Default диспетчером по умолчанию для любой корутины. По умолчанию корутина наследует контекст родителя, а во viewModelScope и lifecycleScope это главный поток.
Третье: лечат симптом увеличением числа потоков вместо смены диспетчера. Если нужно ограничить параллелизм для одного ресурса, для этого есть limitedParallelism поверх Dispatchers.IO, а не свой пул на каждый случай.