Kotlin | Вопросы собесов
2.56K subscribers
27 photos
956 links
Download Telegram
📌 Какие есть методы жизненного цикла Activity и как они отрабатывают ?

💬 Спрашивают в 60% собеседований

Методы жизненного цикла Activity представляют собой набор коллбэков, которые вызываются системой при изменении состояния Activity. Эти методы предоставляют возможность управлять поведением приложения при создании, остановке, восстановлении или уничтожении. Понимание и правильное использование этих методов критически важно для создания надежных и эффективных приложений.

🤔 Основные методы жизненного цикла:

1️⃣ `onCreate(Bundle savedInstanceState)`

Этот метод вызывается при первом создании Activity. Здесь вы должны выполнить все начальную настройку — например, создать пользовательский интерфейс, инициализировать некоторые данные класса. Это место для всего, что должно произойти один раз за время жизни.
Пример: setContentView(R.layout.activity_main); устанавливает разметку пользовательского интерфейса для Activity.

2️⃣ `onStart()`

Вызывается, когда Activity становится видимым для пользователя. Это следует за onCreate() (если он запускается впервые) или onRestart() (если он возвращается к взаимодействию с пользователем после его остановки).

3️⃣ `onResume()`

Вызывается непосредственно перед тем, как Activity начинает взаимодействовать с пользователем. В этот момент он находится на переднем плане (на экране). Это последний метод, который вызывается перед тем, как он начнет получать ввод данных от пользователя.

4️⃣ `onPause()`

Вызывается, когда система собирается продолжить или возобновить другую Activity. Этот метод используется для остановки динамических элементов, которые могли быть запущены во время onResume() или для освобождения ресурсов, которые могут быть нужны другим.

5️⃣ `onStop()`

Вызывается, когда Activity больше не видимо пользователю, потому что другое Activity было возобновлено и покрыло его. Это может быть использовано для выполнения более "тяжеловесной" очистки ресурсов.

6️⃣ `onRestart()`

Вызывается после того, как Activity было остановлено, но снова начинает запускаться для взаимодействия с пользователем. onRestart() восстанавливает его состояние в том виде, в каком оно было перед тем, как было остановлено.

7️⃣ `onDestroy()`

Этот метод вызывается перед уничтожением Activity. Это последний вызов, который он получает. Здесь можно освободить все ресурсы, которые не были освобождены автоматически системой.

🤔 Как они отрабатывают

Жизненный цикл начинается с вызова onCreate() и проходит через серию стадий, включая onStart(), onResume(), onPause(), onStop(), и, в конечном итоге, onDestroy(). В какой-то момент, если Activity останавливается, но позже должно быть восстановлено, вызывается onRestart(), за которым следуют onStart() и onResume(). Важно понимать, что каждый метод предназначен для определенной стадии жизни Activity и предоставляет возможность для выполнения соответствующих действий, таких как инициализация, пауза, восстановление и очистка ресурсов.

Методы жизненного цикла Activity — это специальные функции, которые вызываются системой в определенные моменты жизни Activity, чтобы разработчики могли правильно управлять ресурсами и интерфейсом пользователя. Они обеспечивают плавное создание, видимость, взаимодействие, паузу и уничтожение Activity.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Какой из вариантов правильно определяет использование Elvis-оператора в Kotlin?
Anonymous Quiz
6%
val length = name?.length !! 0
4%
val length = name?.length ?? 0
88%
val length = name?.length ?: 0
2%
val length = name?.length !? 0
📌 Для чего нужен data class ?

💬 Спрашивают в 60% собеседований

Классы данных (data class) предназначены для хранения данных. Основная их задача — упростить создание классов, которые будут использоваться преимущественно для хранения данных, не добавляя при этом лишнего шаблонного кода. Чтобы определить класс данных, достаточно добавить ключевое слово data перед объявлением класса.

🤔 Особенности и преимущества:

1️⃣Автоматическая генерация функций:

equals()/hashCode(): Для сравнения объектов по содержимому, а не по ссылкам.
toString(): Для представления объекта в виде строки в удобочитаемом формате.
componentN(): Для деструктуризации объекта на его составные части.
copy(): Для создания копии объекта с возможностью изменять некоторые свойства.

🤔 Зачем это нужно?

Его использование позволяет существенно сократить количество шаблонного кода, который разработчикам приходится писать для классов, предназначенных для хранения данных. Это упрощает создание моделей данных и повышает читабельность кода, делая его более компактным и понятным.

Пример:
data class User(val name: String, val age: Int)


В этом примере определен класс данных User с двумя свойствами: name и age. Kotlin автоматически сгенерирует для этого класса методы equals(), hashCode(), toString(), компонентные функции для каждого свойства и метод copy().

Без использования data class, пришлось бы вручную реализовать все эти методы, что ведет к увеличению объема кода и его сложности.

Data class используются для упрощения создания классов, предназначенных для хранения данных. Они автоматически генерируют необходимые методы, что позволяет сделать код более чистым, удобным для чтения и поддержки. Это идеальное решение для моделей данных, где основная цель класса — это хранение данных.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯1👀1
🤔 Как правильно объявить переменную типа nullable String в Kotlin?
Anonymous Quiz
93%
val name: String? = null
3%
val name: String = null
4%
val name: ?String = null
1%
val name: nullable String = null
📌 Какие основные компоненты Аndroid-приложения ?

💬 Спрашивают в 53% собеседований

Основные компоненты Android-приложения включают Activity, Services, Broadcast Receivers и Content Providers. Эти компоненты обеспечивают основную функциональность приложения, позволяя ему взаимодействовать с пользователем, выполнять задачи в фоновом режиме, реагировать на системные или приложенческие события и управлять данными.

1️⃣ Activity представляет собой один экран с пользовательским интерфейсом. Каждая активность предназначена для выполнения одной конкретной задачи (например, выбора фотографии из галереи или отправки сообщения). Пользователь взаимодействует с приложением в основном через активности.

2️⃣ Services — это компоненты, которые выполняют длительные или фоновые операции без предоставления пользовательского интерфейса. Например, сервис может воспроизводить музыку в фоне, когда пользователь находится в другом приложении, или синхронизировать данные в фоновом режиме.

3️⃣ Broadcast Receivers предназначены для прослушивания и реагирования на широковещательные сообщения от других приложений или системы. Например, приложение может запускать определенные действия или уведомления в ответ на сообщения о низком заряде батареи или загрузке новой фотографии.

4️⃣ Content Providers позволяют приложениям хранить и делиться данными. Через них можно осуществлять доступ к данным внутри одного приложения из других приложений, а также управлять доступом к этим данным. Примером может служить доступ к контактам или медиафайлам на устройстве.

Каждый из этих компонентов играет свою роль в создании целостного и функционального Android-приложения. Они могут взаимодействовать друг с другом через явные или неявные намерения (Intents), предоставляя разнообразные способы выполнения задач и обмена данными.

Основные компоненты Android-приложения — это строительные блоки, которые позволяют создавать разнообразные пользовательские интерфейсы, выполнять задачи в фоне, реагировать на события и управлять данными. Эти компоненты включают Activity, Services, Broadcast Receivers и Content Providers.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
🤔 Какой из способов правильно использует оператор приведения типа в Kotlin?
Anonymous Quiz
4%
val number = x cast Int
91%
val number = x as Int
4%
val number = x as! Int
1%
val number = x convert Int
📌 В чем преимущество Kotlin для разработки под android ?

💬 Спрашивают в 47% собеседований

Kotlin, язык программирования, разработанный JetBrains, представляет собой статически типизированный язык, который полностью совместим с Java и специально оптимизирован для разработки под Android. Преимущества в контексте разработки Android-приложений многочисленны и значительны:

1️⃣ Более краткий и выразительный синтаксис: Kotlin позволяет писать код более кратко и чисто по сравнению с Java, сокращая количество шаблонного кода. Это делает код легче для чтения и поддержки.

2️⃣ Null безопасность: В Kotlin встроена поддержка обработки значений null, что помогает избежать NullPointerException - одной из наиболее распространенных ошибок в Java-приложениях.

3️⃣ Расширенные функции (Extension functions): Kotlin позволяет добавлять новые функции к существующим классам без их модификации. Это упрощает работу с API Android, делая код более читабельным и лаконичным.

4️⃣ Поддержка функционального программирования: Kotlin включает множество функций функционального программирования, таких как лямбда-выражения, высшие порядки функций, которые делают код более гибким и выразительным.

5️⃣ Полная совместимость с Java: Kotlin полностью совместим с Java, что позволяет легко использовать все существующие Java-библиотеки и фреймворки в Kotlin-проектах, а также постепенно переводить существующий Java-код на Kotlin.

6️⃣ Инструментальная поддержка: Kotlin полностью поддерживается в Android Studio, что обеспечивает удобные инструменты для разработки, такие как автодополнение, рефакторинг кода, проверка ошибок в реальном времени.

7️⃣ Корутины для асинхронного программирования: Kotlin предоставляет встроенную поддержку корутин, что упрощает работу с асинхронными операциями, такими как выполнение сетевых запросов или чтение из базы данных, делая код более понятным и менее подверженным ошибкам.

8️⃣ Улучшенная безопасность: Благодаря более строгой системе типов и обработке исключений, Kotlin помогает предотвратить распространенные ошибки во время компиляции, что повышает общую безопасность приложения.

9️⃣ Официальная поддержка Google: С 2017 года Kotlin является официальным языком для разработки Android-приложений, что гарантирует его постоянное обновление и поддержку со стороны Google.

Kotlin предлагает мощные возможности, такие как более краткий и чистый код, повышенную безопасность, улучшенную поддержку асинхронного программирования и полную совместимость, делая процесс разработки более эффективным и приятным.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🤔 Какой ключевое слово используется для реализации абстрактного класса в Kotlin?
Anonymous Quiz
91%
abstract
3%
virtual
6%
override
1%
base
📌 Для чего нужны фрагменты, если есть Activity ?

💬 Спрашивают в 40% собеседований

Фрагменты (Fragments) представляют собой модульные части пользовательского интерфейса в Activity, которые имеют собственный жизненный цикл, получают собственные входящие события и могут быть добавлены или удалены при выполнении активности (например, в рамках работы с динамическим интерфейсом). Несмотря на то что Activity может выполнять большинство задач по взаимодействию с пользователем, использование фрагментов предоставляет несколько важных преимуществ:

1️⃣ Модульность

Фрагменты позволяют разбить сложный пользовательский интерфейс на управляемые части, что облегчает разработку и поддержку. Каждый фрагмент может быть разработан и оттестирован независимо от других, а затем комбинироваться в различных комбинациях для создания адаптивного интерфейса приложения.

2️⃣ Переиспользование компонентов

Фрагменты можно использовать в нескольких активностях, что способствует повторному использованию кода. Например, фрагмент с формой для ввода может использоваться как в Activity для создания нового объекта, так и для его редактирования.

3️⃣ Адаптивный интерфейс

Использование фрагментов упрощает создание адаптивных интерфейсов, которые корректно работают на устройствах с различными размерами экранов и ориентациями. Например, на планшетах можно одновременно отображать несколько фрагментов, в то время как на смартфонах — отображать их поочерёдно.

4️⃣ Управление жизненным циклом

Фрагменты имеют собственный жизненный цикл, но при этом тесно связаны с жизненным циклом хост-Activity. Это позволяет управлять поведением фрагментов в зависимости от состояния активности, обеспечивая эффективное управление ресурсами.

5️⃣ Упрощение обработки взаимодействий

Фрагменты могут взаимодействовать друг с другом через Activity, что позволяет организовать обмен данными и событиями между различными частями пользовательского интерфейса без необходимости создавать сложные механизмы взаимодействия.

6️⃣ Поддержка динамических и гибких интерфейсов

Фрагменты можно добавлять, удалять, заменять и выполнять с ними другие действия во время выполнения активности, что позволяет создавать динамические и гибкие пользовательские интерфейсы, адаптирующиеся к действиям пользователя.

Фрагменты предлагают гибкость в организации и повторном использовании частей пользовательского интерфейса в Android-приложениях, позволяя создавать модульные, адаптивные и эффективно управляемые интерфейсы, что делает их незаменимыми даже в присутствии Activity.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
📌 Для чего нужны сервисы ?

💬 Спрашивают в 40% собеседований

Сервисы предназначены для выполнения длительных или фоновых операций, не требующих взаимодействия с пользователем. Они работают в фоновом режиме и могут выполнять различные задачи, даже когда пользовательский интерфейс приложения не активен или когда приложение закрыто. Вот несколько ключевых аспектов, для которых могут быть использованы сервисы:

1️⃣ Выполнение фоновых задач

Сервисы идеально подходят для выполнения задач, которые должны продолжаться в фоне, не прерываясь действиями пользователя и не блокируя пользовательский интерфейс. Примерами таких задач могут служить синхронизация данных, обработка больших объемов данных или выполнение сложных вычислений.

2️⃣ Воспроизведение музыки или выполнение других длительных операций

Сервисы часто используются в приложениях для воспроизведения музыки или видео в фоне, позволяя пользователям продолжать использовать свое устройство для других задач.

3️⃣ Обработка сетевых запросов

Выполнение сетевых операций, таких как загрузка файлов или отправка данных на сервер, также является распространенным применением сервисов. Это позволяет приложениям обновлять свои данные в фоне, не требуя от пользователя оставаться в приложении.

4️⃣ Работа с внешними устройствами

Сервисы могут использоваться для взаимодействия с внешними устройствами через Bluetooth или другие подобные технологии, выполняя длительные операции взаимодействия или мониторинга данных без необходимости активного вмешательства пользователя.

5️⃣ Выполнение периодических задач

С помощью сервисов можно запускать задачи на регулярной основе, даже если приложение не используется в данный момент. Это полезно для приложений, требующих регулярного обновления данных или выполнения определенных действий по расписанию.

6️⃣ Предоставление функциональности другим приложениям

Сервисы могут быть использованы для предоставления функций другим приложениям, не имея при этом активного пользовательского интерфейса. Это позволяет разным приложениям взаимодействовать между собой и использовать общие ресурсы или данные.

Несмотря на свою полезность, сервисы могут быть ресурсоемкими, и их использование должно быть тщательно спланировано, чтобы минимизировать влияние на производительность устройства и продолжительность работы от батареи.

Сервисы — это компоненты, предназначенные для выполнения фоновых операций без прямого взаимодействия с пользователем. Они обеспечивают возможность выполнять длительные или ресурсоемкие задачи в фоновом режиме, позволяя основному приложению оставаться отзывчивым и эффективным.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Какой из способов правильно использует оператор safe call в Kotlin?
Anonymous Quiz
2%
val length = name!.length
90%
val length = name?.length
4%
val length = name!!.length
3%
val length = name.length?
🤔3
📌 Чем MVVM отличается от MVP ?

💬 Спрашивают в 40% собеседований

MVVM (Model-View-ViewModel) и MVP (Model-View-Presenter) — это паттерны, используемые для разделения логики приложения на управляемые компоненты с целью упрощения разработки и обеспечения тестируемости. Хотя оба паттерна разделяют общую цель разделения ответственности в приложении, они реализуют её по-разному.

🤔 MVP (Model-View-Presenter)

Model представляет собой слой данных и бизнес-логики приложения.
View отвечает за отображение данных (UI) и перенаправляет пользовательские действия (например, нажатия кнопок) в Presenter.
Presenter служит посредником между Model и View. Он содержит логику представления, реагирует на действия пользователя, обрабатывая их через Model и обновляя View.

Активно взаимодействует с Presenter, который, в свою очередь, обрабатывает всю логику представления. Таким образом, Presenter напрямую управляет обновлениями View.

🤔 MVVM (Model-View-ViewModel)

Model аналогичен Model в MVP, содержит данные и бизнес-логику.
View отображает пользовательский интерфейс и перенаправляет действия пользователя на ViewModel. В отличие от MVP, View в MVVM может напрямую обращаться к ViewModel через привязку данных (data binding).
ViewModel служит абстракцией View и содержит логику представления. ViewModel взаимодействует с Model, обрабатывает данные и подготавливает их для отображения. Благодаря механизму привязки данных, ViewModel может автоматически обновлять View без необходимости напрямую взаимодействовать с ним.

🤔 Основное отличие MVVM от MVP заключается в том, как обновляется View:

В MVVM обновления View происходят автоматически через механизмы привязки данных. Это уменьшает количество кода, необходимого для ручного управления UI, и делает код более чистым и понятным.
В MVP Presenter активно управляет View, что требует более явного обновления пользовательского интерфейса в ответ на изменения данных или состояния приложения.

MVVM и MVP — это паттерны проектирования для разделения логики приложения, но они отличаются тем, как организовано взаимодействие между компонентами. MVVM использует привязку данных для автоматического обновления View, что упрощает управление интерфейсом. MVP требует, чтобы Presenter явно управлял View, что может привести к более сложному коду для управления пользовательским интерфейсом.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🤔 Какая функция в Kotlin используется для ленивой инициализации свойства?
Anonymous Quiz
7%
lazyOf
69%
lazy
23%
lateinit
1%
deferred
📌 Что такое inline функции ?

💬 Спрашивают в 33% собеседований

Inline функции — это специальный тип функций, при компиляции которых код функции встраивается в место её вызова. Это значит, что при вызове inline функции не происходит создание нового стека вызовов; вместо этого компилятор копирует код функции непосредственно в место вызова. Этот механизм особенно полезен при использовании функций высшего порядка, которые принимают функции в качестве параметров или возвращают их в результате.

🤔 Для чего они нужны:

1️⃣ Уменьшение накладных расходов на вызов функций: Поскольку не происходит дополнительных вызовов функций и не создаётся новый стек, использование inline функций может значительно уменьшить накладные расходы, особенно в критически важных с точки зрения производительности участках кода.

2️⃣ Улучшение производительности при использовании лямбда-выражений: Kotlin использует объекты для представления лямбда-выражений и анонимных функций, что может привести к дополнительной нагрузке на сборщик мусора и память. Inline функции позволяют избежать этого, поскольку лямбды, переданные в inline функции, также инлайнятся.

3️⃣ Возможность использования некоторых специфичных возможностей языка: Например, только inline функции могут использовать реифицированные типовые параметры (reified type parameters), что позволяет избежать ограничений, связанных с типовой стиранием во время выполнения и работать с типами как с обычными классами.

🤔 Как это работает:

Допустим, у нас есть следующая inline функция:
inline fun <reified T> printIfTypeMatch(item: Any) {
if (item is T) {
println(item)
}
}

// Вызов функции
printIfTypeMatch<String>("Hello, inline functions!")


При компиляции кода компилятор Kotlin "встраивает" код функции printIfTypeMatch в место её вызова, избегая создания объекта для лямбды и вызова функции во время выполнения.

Использование inline функций увеличивает размер скомпилированного кода, так как код функции копируется в каждое место её вызова.
Не все функции стоит делать inline. Преимущества инлайнинга наиболее заметны для небольших функций и функций, принимающих лямбда-выражения.
Inline функции могут содержать реифицированные типовые параметры, что невозможно в обычных функциях из-за стирания типов во время выполнения в JVM.

Inline функции — это функции, код которых встраивается непосредственно в места их вызова, что позволяет улучшить производительность и дает возможность использования дополнительных языковых особенностей, таких как реифицированные типы.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Какое ключевое слово используется для объявления расширяющей функции в Kotlin?
Anonymous Quiz
26%
extend
68%
fun
5%
ext
1%
def
👀4🤔1
📌 Для чего нужен Manifest ?

💬 Спрашивают в 33% собеседований

Файл AndroidManifest.xml играет роль центрального конфигурационного файла, который содержит важную информацию о приложении для Android системы. В нём объявляются основные компоненты приложения, требуемые разрешения, поддерживаемые устройственные конфигурации и другие метаданные. Вот несколько ключевых аспектов, для которых он необходим:

1️⃣ Объявление компонентов приложения

Manifest файл используется для объявления компонентов приложения, таких как Activity, Service, BroadcastReceiver, и ContentProvider. Для каждого из этих компонентов можно указать дополнительные настройки, например, интент-фильтры для Activity, которые определяют, какие интенты они могут обрабатывать.

2️⃣ Запрос системных разрешений

Для доступа к защищённым частям API и функционалу устройства, например, камере, списку контактов или геопозиции, приложению необходимо запрашивать соответствующие разрешения. В AndroidManifest.xml указываются эти разрешения с помощью элемента <uses-permission>.

3️⃣ Определение уровня API

Можно указать минимальный и целевой уровень API Android, с которым совместимо приложение. Это позволяет системе предотвращать установку приложения на несовместимых устройствах и оптимизировать его поведение для устройств с разными версиями Android.

4️⃣ Объявление библиотек

Если приложение использует специализированные библиотеки оборудования (например, OpenGL ES), в нем необходимо объявить соответствующие функции и требования к оборудованию с помощью элементов <uses-feature> и <uses-library>.

5️⃣ Установка фильтров интентов (`<intent-filter>`)

Объявляют, какие действия, данные или категории интентов может принимать компонент, позволяя другим приложениям взаимодействовать с ним. Например, Activity может объявить, что оно способно обрабатывать интенты для просмотра веб-страниц.

6️⃣ Конфигурация приложения

Manifest также содержит различные настройки конфигурации приложения, включая его название, иконку, тему оформления и другие атрибуты, которые влияют на его внешний вид и поведение на устройстве пользователя.

AndroidManifest.xml является ключевым файлом в Android-приложениях, который информирует систему о структуре приложения, его компонентах, требуемых разрешениях, поддерживаемых функциях и других важных настройках, необходимых для правильной интеграции приложения в экосистему Android.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Что известно про корутины ?

💬 Спрашивают в 33% собеседований

Корутины — это мощный инструмент для асинхронного программирования, позволяющий писать асинхронный код почти так же просто и понятно, как и синхронный. Они облегчают выполнение таких задач, как асинхронный ввод-вывод, длительные вычисления и работу с сетью, не блокируя основной поток и не усложняя код избыточной вложенностью и обратными вызовами.

🤔 Основные характеристики и преимущества:

1️⃣ Легковесность: Корутины позволяют запускать тысячи параллельных операций, потребляя гораздо меньше ресурсов по сравнению с традиционными потоками. Это достигается благодаря тому, что корутины не привязаны к системным потокам и могут переключаться между ними.

2️⃣ Понятный асинхронный код: С помощью корутин можно писать асинхронный код, который выглядит как обычный синхронный код, что упрощает его понимание и поддержку.

3️⃣ Управление асинхронностью: Корутины предоставляют механизмы для управления асинхронными операциями, такие как отмена операций, тайм-ауты и обработка ошибок.

4️⃣ Эффективность: Поскольку корутины уменьшают необходимость в использовании обратных вызовов и упрощают асинхронный код, они могут сделать приложение более отзывчивым и эффективным.

Ключевые компоненты:

Coroutine Scope — определяет контекст выполнения корутины, управляя её жизненным циклом.
Coroutine Context — содержит различные элементы, такие как диспетчеры, которые определяют, в каком потоке будет выполняться корутина.
Dispatchers — помогают управлять потоками, на которых выполняются корутины. Например, Dispatchers.IO предназначен для ввода-вывода, Dispatchers.Main используется для взаимодействия с пользовательским интерфейсом.
Builders — функции, которые используются для запуска корутин, такие как launch и async, последняя из которых позволяет получить результат асинхронной операции.

Пример:
import kotlinx.coroutines.*

fun main() = runBlocking { // Создает корутину верхнего уровня
launch { // Запускает новую корутину внутри блока runBlocking
delay(1000L) // Неблокирующая задержка на 1 секунду (1000 миллисекунд)
println("World!") // Печать после задержки
}
println("Hello,") // runBlocking ждет, пока вложенная корутина не завершится
}


Этот код демонстрирует запуск корутины с использованием launch, которая выводит "Hello," немедленно, затем ждет секунду перед выводом "World!".

Корутины — это мощный инструмент для асинхронного программирования, позволяющий писать асинхронный код более просто и натурально, без блокирования потоков и упрощения управления асинхронными операциями.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Какой синтаксис используется для объявления обобщенной функции в Kotlin?
Anonymous Quiz
64%
fun <T> example(param: T): T
25%
fun example<T>(param: T): T
7%
fun example(param: T)<T>: T
5%
<T> fun example(param: T): T