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 | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Как можно писать RecyclerView, чтобы он кэшировал наперёд? 1. Использовать setItemViewCacheSize для кэширования определённого количества элементов. 2. Включить предзагрузку данных с помощью RecyclerView.OnScrollListener. 3. Реализовать Prefetching через LinearLayoutManager или RecyclerView.LayoutManager. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 В чем разница между работой с list и работой с sequence? 🚩Основные структуры работы с коллекциями 🟠List Является жадной коллекцией, что означает, что все операции над элементами выполняются немедленно и целиком. Когда вы применяете функции к списку, такие как map, filter и т.д., все элементы проходят через каждую функцию сразу же. В данном примере все элементы списка numbers сначала умножаются на 2, затем фильтруются. Вся работа выполняется сразу для каждого элемента. val numbers = listOf(1, 2, 3, 4, 5) val result = numbers .map { it * 2 } .filter { it > 5 } println(result) // Output: [6, 8, 10] 🟠Sequence Является ленивой коллекцией. Это означает, что элементы обрабатываются по мере необходимости. Функции, применяемые к последовательности, создают цепочку операций, которая выполняется только при обращении к элементам. В этом примере numbers сначала преобразуется в Sequence. Операции map и filter создают цепочку, которая выполняется только при преобразовании обратно в List с помощью toList(). Это позволяет избежать лишних операций и обрабатывать элементы по мере необходимости. val numbers = listOf(1, 2, 3, 4, 5) val result = numbers.asSequence() .map { it * 2 } .filter { it > 5 } .toList() println(result) // Output: [6, 8, 10] 🚩Различия 🟠Жадность против ленивости List: Все элементы обрабатываются сразу при вызове функций. Sequence: Элементы обрабатываются по мере необходимости, что может повысить эффективность. 🟠Производительность List: Подходит для небольших коллекций, где выполнение всех операций сразу не критично. Sequence: Эффективен для больших коллекций или длинных цепочек операций, так как уменьшает количество промежуточных коллекций. 🟠Использование памяти List: Может использовать больше памяти из-за создания промежуточных коллекций. Sequence: Уменьшает использование памяти, обрабатывая элементы по одному. Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое лямбды с точки зрения синтаксиса в Java и Kotlin? В Java лямбды — это упрощённый синтаксис для анонимных классов, реализующих функциональный интерфейс. Синтаксис: (параметры) -> { тело }. В Kotlin лямбды представляют собой выражения, передаваемые как функции, с синтаксисом { параметры -> тело }. Kotlin более лаконичен, позволяя опускать параметры, если их можно вывести из контекста. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что используешь, если нужно получить элемент или список элементов? В Kotlin есть множество удобных функций для получения одного элемента или списка элементов из коллекций (List, Set, Map). Какую функцию использовать — зависит от задачи. 🚩Получение одного элемента 🟠`get(index)` и `getOrNull(index)` получение по индексу Если индекс может выйти за границы массива, лучше использовать getOrNull(). val list = listOf("A", "B", "C") println(list[1]) // "B" println(list.getOrNull(5)) // null 🟠`first()` и `last()` первый и последний элементы println(list.first()) // "A" println(list.last()) // "C" Используйте firstOrNull() или lastOrNull(), если список может быть пустым println(emptyList().firstOrNull()) // null 🟠`find {}` и `findLast {}` поиск по условию Возвращает первый или последний элемент, удовлетворяющий условию. val numbers = listOf(10, 20, 30, 40) println(numbers.find { it > 15 }) // 20 println(numbers.findLast { it > 15 }) // 40 println(numbers.find { it > 50 }) // null 🟠`single()` и `singleOrNull()` если ожидается только один элемент val oneElementList = listOf(42) println(oneElementList.single()) // 42 println(oneElementList.singleOrNull()) // 42 val emptyList = emptyList() println(emptyList.singleOrNull()) // null single() бросает исключение, если элементов нет или их больше одного. 🚩Получение нескольких элементов (списка) filter {} – фильтрация элементов по условию val numbers = listOf(1, 2, 3, 4, 5) val evenNumbers = numbers.filter { it % 2 == 0 } println(evenNumbers) // [2, 4] take(n) и takeLast(n) – первые/последние n элементов val items = listOf("a", "b", "c", "d", "e") println(items.take(3)) // [a, b, c] println(items.takeLast(2)) // [d, e] slice(indices) – получение элементов по индексам val sliced = items.slice(listOf(0, 2, 4)) println(sliced) // [a, c, e] map {} – преобразование списка val squared = numbers.map { it * it } println(squared) // [1, 4, 9, 16, 25] Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 В чем заключается передача объекта по ссылке и по значению? – По значению — создаётся копия объекта (в Kotlin: data class, val x = a). – По ссылке — передаётся указатель, и изменения влияют на оригинал. В Java и Kotlin передаются ссылки по значению (сама ссылка копируется, но указывает на один объект). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Чем отличаются data-классы и sealed-классы? data class — класс для хранения данных с автогенерацией equals(), hashCode(), copy(). sealed class — ограниченная иерархия классов, используется для when. 🚩`data class` – для хранения данных data class автоматически создаёт: equals() и hashCode() → сравнение объектов по значениям. copy() → удобное копирование с изменением параметров. toString() → красивый вывод. data class User(val id: Int, val name: String) fun main() { val user1 = User(1, "Alice") val user2 = user1.copy(name = "Bob") // Создаём копию с новым именем println(user1) // User(id=1, name=Alice) println(user2) // User(id=1, name=Bob) } 🚩`sealed class` – для ограниченных иерархий классов sealed class используется, когда есть фиксированное число подклассов. sealed class NetworkState { object Loading : NetworkState() data class Success(val data: String) : NetworkState() data class Error(val message: String) : NetworkState() } fun handleState(state: NetworkState) { when (state) { is NetworkState.Loading -> println("Загрузка...") is NetworkState.Success -> println("Данные: ${state.data}") is NetworkState.Error -> println("Ошибка: ${state.message}") } } 🚩Можно ли использовать `data class` внутри `sealed class`? Да! Это лучший вариант для управления состояниями: sealed class Result { object Loading : Result() data class Success(val data: String) : Result() data class Error(val message: String) : Result() } Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Расскажи для чего нужен Dagger? Dagger — это библиотека для внедрения зависимостей, упрощающая создание, управление и тестирование объектов. Она генерирует код для автоматического предоставления зависимостей, что делает приложение модульным и устойчивым к изменениям. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Почему могут быть проблемы со списками в data class? В data class могут возникнуть проблемы со списками при использовании: Методов copy() – список не копируется, а передаётся по ссылке. Методов equals() и hashCode() – List сравнивается по элементам, что может быть медленно. Mutable списков (MutableList) – изменения внутри списка изменяют все копии объекта. 🚩Проблема `copy()` – список не клонируется data class User(val name: String, val tags: List) fun main() { val original = User("Alice", listOf("Admin", "Editor")) val copy = original.copy() // ✅ Поверхностное копирование println(original.tags === copy.tags) // true (один и тот же объект) } Используем toList(), чтобы создать новый неизменяемый список: fun main() { val original = User("Alice", listOf("Admin", "Editor")) val copy = original.copy(tags = original.tags.toList()) println(original.tags === copy.tags) // false (разные объекты) } 🚩`equals()` и `hashCode()` могут работать медленно data class Message(val id: Int, val content: String, val tags: List) fun main() { val message1 = Message(1, "Привет", listOf("important", "urgent")) val message2 = Message(1, "Привет", listOf("important", "urgent")) println(message1 == message2) // true (сравнивает элементы списка) } Если идентификатор (id) уникален, сравнивать только его data class Message(val id: Int, val content: String, val tags: List) { override fun equals(other: Any?) = other is Message && this.id == other.id override fun hashCode() = id.hashCode() } 🚩`MutableList` в `data class` – неожиданные изменения data class Task(val name: String, val subtasks: MutableList) fun main() { val original = Task("Купить продукты", mutableListOf("Хлеб", "Молоко")) val copy = original.copy() // ✅ Поверхностная копия copy.subtasks.add("Яйца") // ❌ Меняет список в обоих объектах! println(original.subtasks) // [Хлеб, Молоко, Яйца] println(copy.subtasks) // [Хлеб, Молоко, Яйца] } Создаём новый MutableList внутри copy() data class Task(val name: String, val subtasks: List) { fun deepCopy() = Task(name, subtasks.toMutableList()) } fun main() { val original = Task("Купить продукты", mutableListOf("Хлеб", "Молоко")) val copy = original.deepCopy() copy.subtasks.toMutableList().add("Яйца") // ✅ Теперь изменения не влияют на оригинал println(original.subtasks) // [Хлеб, Молоко] println(copy.subtasks) // [Хлеб, Молоко, Яйца] } Ставь 👍 и забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Kotlin | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что произойдёт, если вместо ключевого слова class использовать object? object в Kotlin создаёт singleton — единственный экземпляр. Нельзя создавать новые экземпляры, он инициализируется при первом обращении. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin | Вопросы собесов
Динамика подписчиков
+0.0% за 30 дней
Текущие
2,451
Месяц назад
2,450
Средний рост
+0 / день
Обновлено
8 часов назад

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

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

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

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

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

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

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