Logo
TGCATALOG
Каталог Подборки Блог
Kotlin | Вопросы собесов

Kotlin | Вопросы собесов

Вопросы для Kotlin-разработчиков с ответами.

Нет оценок
726
29.10.2026
726
29.10.2026
Нет оценок
726
29.10.2026
Безопасный переход через бот
О канале

Вопросы для Kotlin-разработчиков с ответами.

Подписчиков 2,451
Тематика Технологии
Язык Русский
Ссылка t.me/easy_kotlin

Также рекомендуем

Kekaton AI | Озвучка и клон голоса
Kekaton AI | Озвучка и клон голоса
Бот

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

Описание

Вопросы на Kotlin-собеседованиях: расширения, корутины, коллекции. С примерами кода и объяснениями для Android и backend.

Последние посты

Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое лямбды с точки зрения синтаксиса в Java и Kotlin? Лямбда-выражения представляют собой компактный способ представления анонимных функций, который особенно полезен для создания коротких блоков выполнения кода, предназначенных для последующей передачи другим функциям. Лямбды широко используются для упрощения работы с коллекциями, потоками данных, асинхронным кодом и в ситуациях, где требуется функциональный интерфейс. 🚩Лямбда-выражения Были введены в Java 8 и являются частью усилий по добавлению функциональных возможностей в язык. Лямбды в Java чаще всего используются с функциональными интерфейсами, которые являются интерфейсами с одним абстрактным методом. (parameters) -> expression или (parameters) -> { statements; } 🚩Лямбда-выражения Поддерживает более гибкие и выразительные лямбды по сравнению с Java. Лямбды могут использоваться как с функциональными интерфейсами, так и в качестве части синтаксиса языка, благодаря чему Kotlin особенно удобен для функционального программирования. { parameters -> code body } 🚩Примеры Лямбда без параметров { println("Hello, World!") } Лямбда с одним параметром { a: Int -> a * a } Лямбда с несколькими параметрами { a: Int, b: Int -> a + b } Лямбда с телом, содержащим несколько выражений { s: String -> println(s) s.length } Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Как заинжектить в поле в Dagger Hilt? Чтобы внедрить зависимость, достаточно добавить аннотацию @Inject к полю и использовать @AndroidEntryPoint на компоненте. Hilt автоматически подставит нужный объект. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое TransactionTooLargeException? TransactionTooLargeException — это исключение, которое возникает, если передаваемые данные превышают лимит 1MB в Binder. Чаще всего ошибка появляется при передаче больших объектов через Intent, Bundle, `onSaveInstanceState(). 🚩Как воспроизвести `TransactionTooLargeException`? Передача большого Bitmap через Intent (ОШИБКА!) val bitmap: Bitmap = getLargeBitmap() // ❌ Очень большой объект val intent = Intent(this, ImageActivity::class.java) intent.putExtra("image", bitmap) // ❌ Ошибка: TransactionTooLargeException startActivity(intent) Ошибка android.os.TransactionTooLargeException: data parcel size 2MB is larger than 1MB 🚩Как избежать `TransactionTooLargeException`? Использовать FileProvider и Uri вместо Bitmap val file = File(context.cacheDir, "image.png") file.outputStream().use { bitmap.compress(Bitmap.CompressFormat.PNG, 100, it) } val uri = FileProvider.getUriForFile(context, "${context.packageName}.fileprovider", file) val intent = Intent(this, ImageActivity::class.java).apply { putExtra("image_uri", uri.toString()) addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) } startActivity(intent) 🚩Использовать `ViewModel` вместо `onSaveInstanceState()` Ошибка: сохранение больших данных в onSaveInstanceState() override fun onSaveInstanceState(outState: Bundle) { outState.putSerializable("largeData", myLargeObject) // ❌ ОШИБКА! super.onSaveInstanceState(outState) } Решение → Используем ViewModel, чтобы хранить данные в памяти: class MyViewModel : ViewModel() { var largeData: MyLargeObject? = null } 🚩Хранить данные в `SharedPreferences` или `Room` Если данные не нужны постоянно → используем SharedPreferences getSharedPreferences("app_prefs", MODE_PRIVATE).edit() .putString("last_data", jsonData) .apply() Если данные большие и важные → используем Room @Dao interface MyDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun saveData(data: MyData) } Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Какие переменные можно использовать в data class? В data class можно использовать только свойства, объявленные в первичном конструкторе (val или var). Эти свойства автоматически участвуют в: - equals, hashCode; - toString; - copy и componentN. Остальные свойства не считаются частью "данных" класса. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Как сказать адаптеру перерисовать список, если какой-то элемент удалился? Если удалился элемент из списка, нужно: Удалить его из списка данных. Сообщить Adapter, чтобы он перерисовал только изменённые элементы. 🚩Используем `notifyItemRemoved()` (лучший вариант) Этот метод обновляет только удалённый элемент, сохраняя анимации. fun removeItem(position: Int) { itemList.removeAt(position) // Удаляем из списка данных notifyItemRemoved(position) // Сообщаем адаптеру notifyItemRangeChanged(position, itemList.size) // Обновляем индексы } 🚩Если изменился весь список – `DiffUtil` Если изменился несколько элементов, лучше использовать DiffUtil, чтобы обновить только нужные элементы. class MyAdapter : ListAdapter(DIFF_CALLBACK) { companion object { private val DIFF_CALLBACK = object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: Item, newItem: Item): Boolean { return oldItem.id == newItem.id } override fun areContentsTheSame(oldItem: Item, newItem: Item): Boolean { return oldItem == newItem } } } } Обновляем список через submitList() fun removeItem(item: Item) { val newList = currentList.toMutableList() newList.remove(item) submitList(newList) // `DiffUtil` сам вычислит, что обновить } 🚩Полное обновление списка (`notifyDataSetChanged()`) Использовать только если изменился весь список! fun removeItem(position: Int) { itemList.removeAt(position) notifyDataSetChanged() // Перерисовывает весь список (медленно) } Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое инстанциация и инициализация? - Инстанциация — процесс создания экземпляра (объекта) класса (например, new ClassName()); - Инициализация — установка начальных значений полей и выполнение конструктора. Инстанциация включает в себя инициализацию. Вот подробные пояснения к каждому из ваших вопросов Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 В чем различие Default диспатчер и IO диспатчер? В Kotlin Coroutines есть несколько диспетчеров (Dispatchers), но Default и IO используются чаще всего. 🚩Главное различие: Dispatchers.Default — для тяжёлых вычислений (CPU-операции). Dispatchers.IO — для операций ввода-вывода (сеть, файлы, БД). 🟠`Dispatchers.Default` – для сложных вычислений (CPU-bound) Этот диспетчер используется, если код загружает процессор (например, сложные вычисления). import kotlinx.coroutines.* fun main() = runBlocking { launch(Dispatchers.Default) { val result = heavyComputation() println("Результат: $result") } } suspend fun heavyComputation(): Int { delay(1000) return (1..1_000_000).sum() } 🟠`Dispatchers.IO` – для работы с файлами, сетью, БД (IO-bound) Этот диспетчер оптимизирован для ввода-вывода (I/O): работа с файлами, сетью, БД. import kotlinx.coroutines.* import java.io.File fun main() = runBlocking { launch(Dispatchers.IO) { val text = File("data.txt").readText() println("Файл прочитан: $text") } } Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Для чего нужен объект Job? Job — это элемент управления жизненным циклом корутины. С его помощью можно: - отменять корутину; - отслеживать завершение; - объединять с другими задачами; - управлять родительскими и дочерними корутинами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Можешь рассказать отличия и в каких случаях их использовать list set map? В Kotlin есть три основных типа коллекций: List — упорядоченный список элементов. Set — множество уникальных элементов. Map — коллекция пар "ключ-значение". 🚩List — упорядоченный список List — это коллекция, в которой можно хранить дубликаты, а элементы доступны по индексу. val numbers = listOf(1, 2, 3, 4, 5) // Immutable (нельзя изменять) val mutableNumbers = mutableListOf(1, 2, 3) // Можно изменять mutableNumbers.add(4) // Добавляем элемент mutableNumbers.removeAt(1) // Удаляем элемент по индексу println(mutableNumbers) // [1, 3, 4] 🚩Set — множество уникальных элементов Set — это коллекция, в которой нет дубликатов. val numbers = setOf(1, 2, 3, 3, 4, 5) // Дубликаты удаляются автоматически println(numbers) // [1, 2, 3, 4, 5] val mutableNumbers = mutableSetOf(1, 2, 3) mutableNumbers.add(3) // Не добавится, потому что уже есть mutableNumbers.add(4) // Добавится println(mutableNumbers) // [1, 2, 3, 4] 🚩Map — коллекция пар "ключ-значение" Map — это структура данных, в которой каждому ключу соответствует одно значение. val userMap = mapOf( 1 to "Alice", 2 to "Bob", 3 to "Charlie" ) // Immutable val mutableUserMap = mutableMapOf(1 to "Alice", 2 to "Bob") mutableUserMap[3] = "Charlie" // Добавляем новый ключ-значение mutableUserMap.remove(1) // Удаляем элемент по ключу println(mutableUserMap) // {2=Bob, 3=Charlie} Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Динамика подписчиков
+0.0% за 30 дней
Текущие
2,451
Месяц назад
2,450
Средний рост
+0 / день
Обновлено
6 часов назад

Отзывы о канале Kotlin | Вопросы собесов

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

Loading
Переход на светлую тему
Главная Каталог Подборки Блог Вход