Logo
TGCATALOG
Catalog Collections Blog
Kotlin | Interview Questions

Kotlin | Interview Questions

Interview questions for Kotlin developers with answers.

No ratings
726
29.10.2026
726
29.10.2026
No ratings
726
29.10.2026
Safe redirect via bot
О канале

Interview questions for Kotlin developers with answers.

Подписчиков 2,451
Тематика Technology
Язык English
Ссылка t.me/easy_kotlin

We also recommend

Kekaton AI | Voiceover and voice clone
Kekaton AI | Voiceover and voice clone
Bot

AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.

Description

Kotlin interview questions: extensions, coroutines, collections. With code examples and explanations for Android and backend.

Latest posts

Kotlin | Interview Questions
Kotlin | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 После перебирания данных итератором, гарантируется ли очередность получения этих данных? Гарантируется только в том случае, если структура данных поддерживает порядок (например, List, LinkedList). Если коллекция неупорядоченная (например, HashSet, HashMap.keySet()), порядок может быть произвольным и не повторяться. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Interview Questions
Kotlin | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Можно ли создать анонимный класс внутри inline функции? Анонимный класс внутри inline-функции будет инстанцироваться при каждом вызове функции, что ломает цель inline — избавляться от накладных расходов на объекты. 🚩Что такое анонимный класс в Kotlin? Анонимный класс — это класс без имени, который можно создать с помощью object : Interface {}. interface ClickListener { fun onClick() } fun main() { val listener = object : ClickListener { override fun onClick() { println("Кнопка нажата!") } } listener.onClick() } 🚩Анонимный класс в `inline`-функции Если мы создадим анонимный класс внутри inline-функции, он будет создаваться каждый раз при вызове функции! inline fun setClickListener(action: () -> Unit) { val listener = object : ClickListener { override fun onClick() { action() } } listener.onClick() } fun main() { setClickListener { println("Нажато!") } } Ошибка компиляции Inline function cannot contain object expressions 🚩Как обойти ограничение? Если нужно использовать inline, можно передавать лямбду вместо анонимного класса. Рабочий вариант inline fun setClickListener(noinline action: () -> Unit): ClickListener { return object : ClickListener { override fun onClick() { action() } } } fun main() { val listener = setClickListener { println("Нажато!") } listener.onClick() } Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Interview Questions
Kotlin | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Расскажи про data классы и sealed классы Data-классы в Kotlin предназначены для хранения данных и автоматически создают полезные методы, такие как `equals()`, `hashCode()`, `toString()`, а также методы для копирования объектов. Они удобны для представления сущностей с полями, которые нужно сравнивать, копировать или выводить, например, записи в базе данных. Sealed-классы (запечатанные классы) ограничивают наследование, позволяя создавать иерархии с фиксированным набором подклассов, что полезно для работы с типами, набор которых известен на этапе компиляции. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Interview Questions
Kotlin | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Расскажи подробно, что из себя представляет каждый компонент Аndroid-приложения? Android-приложение состоит из четырёх основных компонентов: Activity – UI-экран приложения. Service – фоновая работа без UI. BroadcastReceiver – слушает системные и пользовательские события. ContentProvider – делится данными между приложениями. 🚩`Activity` – экран приложения (UI) Отображает интерфейс пользователя. Обрабатывает взаимодействие (нажатия, свайпы, ввод текста). Управляется системой через жизненный цикл (Lifecycle). Пример Activity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Загружаем XML-разметку } } 🚩`Service` – фоновая работа без UI Выполняет длительные фоновые задачи (музыка, загрузка файлов). Может работать даже если приложение закрыто. НЕ имеет UI (не рисует View). Пример Service class MyService : Service() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { Thread { // Долгая фоновая задача }.start() return START_STICKY } override fun onBind(intent: Intent?): IBinder? = null } Запуск сервиса startService(Intent(this, MyService::class.java)) Остановка сервиса stopService(Intent(this, MyService::class.java)) 🚩`BroadcastReceiver` – обработка событий (системных и пользовательских) - Получает события системы (BOOT_COMPLETED, BATTERY_LOW). - Слушает события других приложений. - Может быть динамическим (через код) или статическим (AndroidManifest.xml). Пример BroadcastReceiver (отключение Wi-Fi) class NetworkReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (intent.action == ConnectivityManager.CONNECTIVITY_ACTION) { println("Сеть изменилась!") } } } Регистрируем BroadcastReceiver в AndroidManifest.xml Можно зарегистрировать динамически в коде val receiver = NetworkReceiver() registerReceiver(receiver, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)) 🚩`ContentProvider` – обмен данными между приложениями - Дает доступ к данным *другим приложениям. - Позволяет безопасно работать с БД (Room, SQLite). - Используется для Contacts, MediaStore, Calendar. Пример ContentProvider (чтение контактов) val cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null) cursor?.use { while (it.moveToNext()) { val name = it.getString(it.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) println("Контакт: $name") } } Запрос данных через Uri val uri = Uri.parse("content://com.example.provider/table") contentResolver.query(uri, null, null, null, null) 🚩Как компоненты взаимодействуют между собой? Пример: Activity запускает Service через Intent startService(Intent(this, MyService::class.java)) Пример: Service отправляет Broadcast, а Receiver его ловит sendBroadcast(Intent("com.example.CUSTOM_EVENT")) Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Interview Questions
Kotlin | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Что такое UI thread и Worker thread? 1. UI thread: - Основной поток приложения, где выполняются все операции с пользовательским интерфейсом. - Долгие операции здесь могут привести к замораживанию приложения. 2. Worker thread: - Фоновые потоки для выполнения долгих задач (например, обработки данных, запросов в сеть). - Обновление UI из фонового потока невозможно. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Interview Questions
Kotlin | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 В чём отличие Dalvik Virtual Machine и ART(Android Run Time)? Dalvik Virtual Machine (DVM) и Android Runtime (ART) — это две среды выполнения для запуска Android-приложений. DVM использовалась в ранних версиях Android, в то время как ART пришла на замену DVM, начиная с Android 5.0 (Lollipop). Основное различие между ними заключается в способе выполнения кода и производительности. 🚩Основные отличия между Dalvik и ART 🟠Тип выполнения кода Dalvik Virtual Machine (DVM): Just-In-Time (JIT) компиляция Dalvik использует JIT-компиляцию (Just-In-Time), что означает, что код приложения компилируется в машинный код во время выполнения (runtime). Когда приложение запускается, DVM интерпретирует байт-код (.dex-файлы), а при необходимости компилирует часть кода "на лету" для повышения производительности. Этот подход требует дополнительных ресурсов во время работы приложения, что увеличивает задержки (лаг) при запуске и потребляет больше CPU и батареи. ART использует AOT-компиляцию (Ahead-Of-Time), которая компилирует весь код приложения в машинный код заранее — во время установки приложения. Это устраняет необходимость интерпретации и JIT-компиляции во время работы приложения, что снижает нагрузку на процессор и улучшает производительность. 🟠Производительность Dalvik (DVM): Поскольку JIT-компиляция происходит во время работы приложения, это создает дополнительную нагрузку на процессор и замедляет выполнение. Производительность ниже из-за частой интерпретации кода. ART: Благодаря AOT-компиляции приложения запускаются быстрее и работают плавнее. Потребление ресурсов (CPU, батарея) значительно ниже, поскольку интерпретация и компиляция кода уже выполнены на этапе установки. 🟠Ускорение запуска приложений Dalvik (DVM): Приложения запускаются медленнее, так как DVM интерпретирует код во время каждого запуска. ART: Приложения запускаются быстрее, так как код уже компилирован в машинный код на этапе установки. 🟠Потребление батареи Dalvik (DVM): Потребляет больше батареи из-за того, что JIT-компиляция выполняется постоянно во время работы приложения. ART: Более энергоэффективен, так как большая часть работы выполнена заранее, и процессор не нагружается так сильно. 🟠Время установки приложения Dalvik (DVM): Приложения устанавливаются быстрее, так как код не компилируется заранее. ART: Приложения устанавливаются медленнее, так как на этапе установки выполняется AOT-компиляция. Например, установка приложения в ART может занимать больше времени, чем в DVM, из-за компиляции кода. 🟠Память Dalvik (DVM): DVM использует меньше памяти на устройстве, так как код компилируется только во время работы приложения, и машинный код не сохраняется. ART: AOT-компиляция увеличивает размер приложения, так как компилированный машинный код сохраняется на устройстве. Это требует больше места в памяти. 🟠Отладка и инструменты Dalvik (DVM): Ограниченные возможности отладки, так как JIT-компиляция не предоставляет доступа к заранее оптимизированному коду. ART: ART позволяет разработчикам использовать более продвинутые инструменты отладки (например, профилирование исполнения) и лучше анализировать производительность приложений. 🟠Совместимость Dalvik (DVM): Dalvik был изначально разработан для устройств с ограниченными ресурсами (медленные процессоры, малый объем оперативной памяти). Приложения работали в основном в условиях ограниченного оборудования. ART: ART ориентирован на современные устройства с мощными процессорами и большим объемом памяти. Он лучше справляется с современными требованиями приложений. 🚩Пример различий 🟠На Dalvik (DVM): - Установка быстрая. - При запуске приложения DVM интерпретирует и компилирует код. Это требует времени и ресурсов. - Приложение может работать медленно из-за интерпретации кода в реальном времени. 🟠На ART: - Установка занимает больше времени, так как код компилируется сразу. - Запуск приложения быстрый, потому что код уже готов к исполнению. - Приложение работает плавно, так как отсутствует необходимость компиляции во время выполнения. Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Interview Questions
Kotlin | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Как расшифровывается APK? APK — Android Package. Это архив (аналог .zip), содержащий: - Скомпилированный код (classes.dex) - Ресурсы (res, assets) - Манифест (AndroidManifest.xml) - Подпись Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Interview Questions
Kotlin | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Как запустить асинхронные операции в чистом Android? В Android существует несколько способов запуска асинхронных операций. Наиболее распространённые из них включают использование AsyncTask (хотя он уже устарел), HandlerThread, AsyncTaskLoader, ExecutorService и современные подходы с использованием Kotlin Coroutines и библиотеки WorkManager. 🟠AsyncTask (устаревший) AsyncTask был одним из первых инструментов для выполнения асинхронных задач, однако его использование сейчас не рекомендуется из-за проблем с управлением жизненным циклом и утечками памяти. private class MyAsyncTask extends AsyncTask { @Override protected String doInBackground(Void... voids) { // Выполнение длительной операции return "Result"; } @Override protected void onPostExecute(String result) { // Обновление UI после завершения операции } } // Запуск new MyAsyncTask().execute(); 🟠HandlerThread HandlerThread — это удобный способ создания фонового потока с циклом обработки сообщений. HandlerThread handlerThread = new HandlerThread("MyHandlerThread"); handlerThread.start(); Handler handler = new Handler(handlerThread.getLooper()); handler.post(new Runnable() { @Override public void run() { // Выполнение длительной операции } }); 🟠ExecutorService ExecutorService из стандартной библиотеки Java предоставляет более гибкий способ управления потоками. ExecutorService executor = Executors.newSingleThreadExecutor(); executor.submit(new Runnable() { @Override public void run() { // Выполнение длительной операции } }); 🟠Kotlin Coroutines Корутины в Kotlin — это современный и мощный инструмент для асинхронного программирования. Они упрощают работу с асинхронными задачами и обеспечивают безопасность работы с UI. import kotlinx.coroutines.* fun performAsyncTask() { GlobalScope.launch(Dispatchers.IO) { // Выполнение длительной операции val result = longRunningTask() withContext(Dispatchers.Main) { // Обновление UI после завершения операции } } } suspend fun longRunningTask(): String { delay(1000) // Симуляция длительной операции return "Result" } 🟠WorkManager WorkManager — это библиотека для выполнения фоновых задач, которая обеспечивает выполнение задач даже после закрытия приложения или перезагрузки устройства. public class MyWorker extends Worker { public MyWorker(@NonNull Context context, @NonNull WorkerParameters params) { super(context, params); } @NonNull @Override public Result doWork() { // Выполнение длительной операции return Result.success(); } } // Запуск Worker WorkManager workManager = WorkManager.getInstance(context); OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(MyWorker.class).build(); workManager.enqueue(request); 🟠RxJava RxJava — это библиотека для реактивного программирования, которая также может быть использована для выполнения асинхронных задач. import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.schedulers.Schedulers; Observable.fromCallable(() -> { // Выполнение длительной операции return "Result"; }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { // Обновление UI после завершения операции }); Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Interview Questions
Kotlin | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Что такое PendingIntent? PendingIntent — это обёртка над Intent, позволяющая другим компонентам (например, системным) выполнить Intent от имени вашего приложения, даже если оно сейчас не активно. Используется: - В уведомлениях (NotificationManager). - Для запуска BroadcastReceiver или Service. - В AlarmManager. Он играет роль разрешения: система может отложить выполнение кода, но с уже подтверждёнными правами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Interview Questions
FAQ

Open Kotlin | Interview Questions in Telegram and press the Start button. No separate registration is required.

Yes. The service is designed to be straightforward: open the resource, follow the on-screen instructions and start using it.

No. You can use Kotlin | Interview Questions directly in Telegram unless the resource description says otherwise.

Access depends on the resource. Check the current information in Telegram after opening Kotlin | Interview Questions.

The exact features depend on the resource. Open Kotlin | Interview Questions to see its current functions, content and access conditions.
Subscriber dynamics
+0.0% last 30 days
Current
2,451
Month ago
2,450
Average growth
+0 / day
Updated
6 hours ago

Reviews for channel Kotlin | Interview Questions

Log in to leave a review

Only registered users can share their opinion.

No reviews yet

Be the first to share your impression of this resource!

Similar resources

Loading
Switch to Light Theme
Home Catalog Collections Blog Login