
🔥 Заказ на 20+ каналов — шанс выиграть iPhone 16 Pro
Массовые размещения дают просмотры в 2-3 раза дешевле и участие в розыгрыше
Подробнее

РегистрацияВойтиВойти
Скидка 3,5% на первые три заказа
Получите скидку на первые три заказа!
Зарегистрируйтесь и получите скидку 3,5% на первые рекламные кампании — промокод активен 7 дней.
5.1

Kotlin | Вопросы собесов
Поделиться
В избранное
Купить рекламу в этом канале
Формат:
keyboard_arrow_down
- 1/24
- 2/48
1 час в топе / 24 часа в ленте
Количество:
keyboard_arrow_down
- 1
- 2
- 3
- 4
- 5
- 8
- 10
- 15
Стоимость публикации:
local_activity
3 636.36₽3 636.36₽local_mall
0.0%
Осталось по этой цене:0
Последние посты канала
🤔 Работает ли switch() с double/float?
Нет, в Java switch не работает с float и
ли double, так как они подвержены проблемам сравнения с плавающей точкой. switch работает с int, byte, short, char, enum, String, а также с их обёрточными типами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
470
19:10
11.09.2025
🤔 Какое событие вызывается при нажатии юзера по экрану?
В Android при нажатии пользователя на экран вызывается событие ACTION_DOWN.
🚩Разбор работы событий касания
Android использует систему обработки касаний через MotionEvent. Когда пользователь касается экрана, система генерирует разные типы событий:
ACTION_DOWN – вызывается в момент первого касания.
ACTION_MOVE – вызывается, когда пользователь двигает палец по экрану.
ACTION_UP – вызывается, когда пользователь убирает палец с экрана.
ACTION_CANCEL – вызывается, если система прерывает касание (например, из-за входящего звонка).
🚩Как обрабатывать нажатие
Для обработки событий касания нужно переопределить метод
onTouchEvent()
в View или использовать setOnTouchListener()
.
override fun onTouchEvent(event: MotionEvent): Boolean {
when (event.action) {
MotionEvent.ACTION_DOWN -> {
Log.d("TouchEvent", "Палец коснулся экрана")
return true
}
MotionEvent.ACTION_UP -> {
Log.d("TouchEvent", "Палец отпущен")
}
}
return super.onTouchEvent(event)
}{}
Можно также назначить слушатель
view.setOnTouchListener { _, event ->
if (event.action == MotionEvent.ACTION_DOWN) {
Log.d("TouchEvent", "Нажатие зафиксировано")
true
} else {
false
}
}{}
Ставь 👍 и забирай 📚 Базу знаний483
12:05
12.09.2025
Конструкторы нужны для инициализации свойств. В data class основной конструктор обязателен, так как он используется для equals, copy, toString и hashCode. Обойтись совсем без конструктора нельзя — хотя можно использовать значения по умолчанию.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
416
19:10
12.09.2025
🤔 В чём отличие АПК с подписью и без подписи?
APK (Android Package) — это архив с кодом приложения, ресурсами и манифестом.
Приложение должно быть подписано, чтобы его можно было установить на устройство.
🚩Неподписанный APK (`unsigned APK`)
- Это черновая версия APK, которая не имеет цифровой подписи.
- Такой APK можно запустить только в эмуляторе или при отладке (
debug build
).
- Google Play не принимает неподписанные APK.
При сборке debug
-версии в Android Studio:
gradlew assembleDebug{}
Попытка установить неподписанный APK
adb install app-unsigned.apk{}
Ошибка
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]{}
🚩Подписанный APK (`signed APK`)
- Подписанный APK содержит цифровую подпись, которая гарантирует, что код не был изменён.
- Android проверяет ключ подписи перед установкой.
Google Play требует подписанный APK или AAB.
Как подписать APK вручную?
apksigner sign --ks my-release-key.jks --out app-signed.apk app-unsigned.apk{}
🚩Зачем нужна подпись?
Подпись APK гарантирует*
Целостность → код не был изменён после сборки.
Подлинность → приложение подписано разработчиком, а не злоумышленником.
Обновления → только приложения с тем же ключом могут обновлять старую версию.
Ставь 👍 и забирай 📚 Базу знаний387
12:05
13.09.2025
imageИзображение не доступно для предпросмотра
📺 Уникальная база IT собеседований
456+ реальных собеседований на программиста, тестировщика, аналитика и прочие IT профы.
Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д.
🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!
361
14:10
13.09.2025
🤔 Какие модификаторы доступа могут быть в типах в Kotlin?
- public — доступен везде (по умолчанию).
- internal — доступен в пределах модуля.
- protected — доступен внутри класса и подклассов.
- private — доступен внутри файла или класса.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
366
19:10
13.09.2025
🤔 Отличие sealed и enum классов
sealed class
– это ограниченная иерархия классов, где можно создавать разные подклассы с разными свойствами.
enum class
– это фиксированный набор однотипных объектов, которые не имеют разной структуры.
🚩`enum class` – для фиксированного набора значений
Когда значения не изменятся (например, дни недели, цвета, статусы).
Когда у всех значений одинаковая структура.
enum class Status {
LOADING, SUCCESS, ERROR
}{}
Можно добавлять свойства и методы
enum class Color(val hex: String) {
RED("#FF0000"),
GREEN("#00FF00"),
BLUE("#0000FF");
fun printHex() = println(hex)
}
fun main() {
val color = Color.RED
println(color.hex) // #FF0000
color.printHex() // #FF0000
}{}
🚩`sealed class` – для сложных состояний с разной структурой
Когда у состояний разные параметры и поведение.
Когда нужен when
, который проверяет все возможные подклассы.
sealed class Status {
object Loading : Status()
data class Success(val data: String) : Status()
data class Error(val message: String) : Status()
}{}
Использование с when
(без else
)
fun handleStatus(status: Status) {
when (status) {
is Status.Loading -> println("Загрузка...")
is Status.Success -> println("Данные: ${status.data}")
is Status.Error -> println("Ошибка: ${status.message}")
}
}{}
Ставь 👍 и забирай 📚 Базу знаний363
12:05
14.09.2025
🤔 Назовите все операторы комбинирования потоков в RxJava
Основные операторы:
- merge — объединяет элементы из нескольких источников.
- concat — объединяет источники последовательно.
- zip — комбинирует элементы из разных источников попарно.
- combineLatest — объединяет последние элементы.
- switchMap — переключается на новый поток и отменяет предыдущий.
- amb — выбирает тот источник, который быстрее начнёт эмиссию.
- join, groupJoin — объединяют потоки с логикой по времени жизни элементов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
354
19:10
14.09.2025
🤔 Вставка значения быстрее в Linked list или в Array list?
🚩Вставка в `ArrayList`
ArrayList
реализован на основе массива.
🟠Вставка в конец
Амортизированное O(1). Если массив не заполнен, элемент добавляется в конец списка. В случае, если массив заполнен, требуется выделение нового массива и копирование элементов, что занимает O(n) времени.
val arrayList = ArrayList<Int>()
arrayList.add(1) // Быстрая вставка в конец{}
🟠Вставка в начало или середину
O(n). Необходимо сдвинуть все элементы, начиная с позиции вставки, чтобы освободить место для нового элемента. Это требует времени, пропорционального количеству элементов после позиции вставки.
arrayList.add(0, 2) // Медленная вставка в начало
arrayList.add(1, 3) // Медленная вставка в середину{}
🚩Вставка в LinkedList
LinkedList
реализован на основе узлов, где каждый узел содержит ссылку на следующий и/или предыдущий узел (в случае двусвязного списка).
🟠Вставка в начало: O(1). Для добавления элемента в начало достаточно изменить ссылки первого узла и нового узла.
val linkedList = LinkedList<Int>()
linkedList.addFirst(1) // Быстрая вставка в начало{}
🟠Вставка в конец
O(1) (если есть ссылка на последний узел) или O(n) (если необходимо пройти весь список). Если список двусвязный и хранится ссылка на последний элемент, вставка в конец осуществляется за O(1). В противном случае, требуется пройти весь список до конца.
linkedList.addLast(2) // Быстрая вставка в конец, если есть ссылка на последний узел{}
🟠Вставка в середину
O(n). Необходимо пройти список до нужной позиции и изменить ссылки узлов.
linkedList.add(1, 3) // Медленная вставка в середину{}
Ставь 👍 и забирай 📚 Базу знаний286
12:05
15.09.2025
🤔 В чём разница между FragmentManager и FragmentTransaction?
- FragmentManager управляет фрагментами: добавление, поиск, стек возврата.
- FragmentTransaction используется для выполнения операций с фрагментами (добавление, замена, удаление). Это как "транзакция базы данных", применяемая к UI.
Transaction создаётся через FragmentManager.beginTransaction() и применяется через commit().
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
207
19:10
15.09.2025
close
С этим каналом часто покупают
Отзывы канала
Отзывов нет
Лучшие в тематике
Новинки в тематике
keyboard_double_arrow_left
shopping_cart
Каналов:
0
Подписчиков:
0
Просмотров:
lock_outline
Итого:
0.00₽
Перейти в корзину
Очистить корзину
Вы действительно хотите очистить корзину?
Вы снова сможете добавить каналы в корзину из каталога
Вы снова сможете добавить каналы в корзину из каталога
Очистить
Отменить
Комментарий