Да, есть.
- В launch {} ошибка автоматически передается вверх и может быть обработана CoroutineExceptionHandler.
- В async {} ошибки НЕ передаются автоматически, они остаются внутри Deferred<T>.
- Чтобы поймать ошибку в async {}, нужно вызвать await() внутри try-catch.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
Anonymous Quiz
54%
intArrayOf(1, 2, 3)
8%
arrayOfInt(1, 2, 3)
30%
Array<Int>(1, 2, 3)
8%
List<Int>(1, 2, 3)
👍1
Anonymous Quiz
8%
clone()
86%
copy()
3%
replicate()
3%
duplicate()
Оба создают новый scope, но различие в обработке ошибок:
- coroutineScope {} – если одна дочерняя корутина упадет, отменяются все остальные.
- supervisorScope {} – если одна корутина упадет, остальные продолжают работу.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
Anonymous Quiz
95%
Потому что автоматически генерирует методы `equals()`, `hashCode()`, и `toString()`
1%
Потому что такие классы быстрее работают
2%
Потому что они могут хранить больше данных, чем обычные классы
2%
Потому что они лучше интегрируются с базами данных
Anonymous Quiz
22%
internal
65%
private
11%
protected
2%
public
Scope получает сигнал отмены через isActive и CancellationException.
1. Проверка isActive – корутина может проверять свое состояние.
2. Бросок CancellationException – если корутина cancel(), все suspend-функции выбросят исключение.
3. Корутине может передаваться Job, который автоматически отменяется с Scope.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Anonymous Quiz
7%
mutableListOf()
11%
arrayListOf()
79%
listOf()
3%
mutableSetOf()
Anonymous Quiz
2%
Они могут выполняться только на основном потоке
69%
Позволяют управлять асинхронностью с минимальными затратами
7%
Запускают новый поток для каждой корутины
23%
Используют много потоков для оптимизации производительности
💊8🤯2
Да, есть три основных случая:
1. Блокирующий код – если внутри корутины используется блокирующая операция (Thread.sleep(), while(true) {}), она не реагирует на отмену.
2. Отмена родительской корутины не отменяет launch(NonCancellable) – если корутина запущена с NonCancellable, она игнорирует отмену.
3. Отмена не срабатывает, если корутина не проверяет isActive или yield() – долгие вычисления без точек приостановки не дадут корутине завершиться.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Anonymous Quiz
16%
Используя индивидуальные случаи для каждого значения
63%
Группируя значения с помощью запятой
4%
Применяя регулярные выражения
17%
На каждое значение заводится отдельная ветка
Anonymous Quiz
39%
Объявив ее как private
15%
Используя internal
33%
Декларируя ее как public
12%
Никак, функции расширения всегда глобальны
Используется контекст NonCancellable, который заставляет корутину игнорировать запросы на отмену.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Anonymous Quiz
51%
Используя аннотацию @Transient
14%
Объявляя переменную как transient
20%
Применяя модификатор noSerialize
14%
Используя аннотацию @Volatile
👍1
Anonymous Quiz
5%
Используя цикл for и суммируя элементы
33%
Применяя функцию sum() на массиве
5%
Используя reduce с оператором +
57%
Все вышеуказанные методы корректны
👍1
- runBlocking {} – полностью блокирует поток, пока не завершится корутина. Используется редко.
- runBlockingTest {} – устаревший механизм тестирования корутин (заменен на runTest).
- runTest {} – современный способ тестирования корутин, позволяет управлять виртуальным временем, ускоряя тесты.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Anonymous Quiz
41%
Используя top-level переменную
39%
Объявив переменную в companion object
16%
Применяя аннотацию @Global
4%
Используя keyword global перед переменной
👍1
Anonymous Quiz
70%
Используя smart cast и проверку типа с `is`
15%
Применяя прямое приведение типов
13%
Вызывая специализированные функции интерфейса
2%
Используя паттерн Visitor
Это механизм синхронизации, который позволяет исключить одновременный доступ нескольких корутин к ресурсу.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3🤔2
Anonymous Quiz
33%
Используя try-catch блок внутри каждой функции
47%
Применяя функцию runCatching и последующие вызовы onFail или onSuccess
9%
Вызывая функции внутри блока finally
11%
Ни один из перечисленных методов