Знание есть, но стресс мешает?
Бесплатное сообщество для прокачки карьеры в IT Подпишись на https://t.me/IT_Interview_Partner_Bot
Подпишись на https://t.me/LyakhovEugene
Знание есть, но стресс мешает?
Бесплатное сообщество для прокачки карьеры в IT Подпишись на https://t.me/IT_Interview_Partner_Bot
Подпишись на https://t.me/LyakhovEugene
...Читать далее
- Что такое Kotlin?
Kotlin — статически типизированный язык программирования, работающий поверх JVM, а также компилируемый в JavaScript и нативный код (через Kotlin/Native). Разработан компанией JetBrains, полностью совместим с Java, лаконичен, безопасен и поддерживает функциональный стиль. - Назовите ключевые особенности Kotlin.
Null-безопасность
Extension-функции
Data-классы
Функции высшего порядка и лямбды
Сопрограммы (coroutines)
Smart-приведения типов
Делегирование свойств
Полная интероперабельность с Java - Как Kotlin обеспечивает null-безопасность?
Типы разделены на nullable (допускающие null) и non-null (не допускающие).
Для nullable-типов требуется явная проверка или безопасные вызовы:kotlinvar a: String = "Hello" // non-null
var b: String? = null // nullable
val len = b?.length ?: 0 // ?. и элвис-оператор ?: - Что такое extension-функции?
Позволяют «добавить» новую функцию в существующий класс без наследования.kotlinfun String.isEmail(): Boolean = this.contains("@")
val ok = "test@mail.com".isEmail() - Что такое data class и какие методы он генерирует?
Класс, предназначенный для хранения данных. Автоматически генерирует equals(), hashCode(), toString(), copy(), и компоненты для деструктуризации.kotlindata class User(val name: String, val age: Int) - Для чего используются sealed-классы?
Sealed-классы ограничивают иерархию наследования — все подклассы должны быть объявлены в том же файле. Удобны для представления конечных множеств состояний (например, результат выполнения операции: успех, ошибка, загрузка).kotlinsealed class Result { data class Success(val data: String) : Result() } - Чем object отличается от companion object?
object — синглтон (один экземпляр).
companion object — объект внутри класса, его члены вызываются как статические (на уровне класса).kotlinclass MyClass { companion object { fun create() = MyClass() } }
MyClass.create() - Разница между val и var?
val — неизменяемая ссылка (read-only), присвоить можно только один раз.
var — изменяемая ссылка. - Что такое первичный конструктор и блоки инициализации?
Первичный конструктор объявляется в заголовке класса. Блоки init выполняются при создании экземпляра и могут использовать параметры конструктора.kotlinclass Person(val name: String) {
init { require(name.isNotBlank()) }
} - Какие модификаторы видимости есть в Kotlin?
private — виден внутри файла или класса
protected — внутри класса + наследникам
internal — виден внутри модуля
public — везде (по умолчанию) - Как работает when в сравнении с switch в Java?
when — мощное выражение, может использоваться как оператор и как выражение, возвращающее значение. Поддерживает любые типы, проверки по диапазонам, типам и даже без аргумента.kotlinval result = when (x) {
1 -> "one"
in 2..5 -> "several"
is String -> "string"
else -> "unknown"
} - Что такое smart cast (умное приведение)?
Компилятор автоматически приводит тип, если проверка типа уже прошла. Например, после if (obj is String) внутри блока можно использовать obj.length без явного приведения. - Что такое функции высшего порядка и лямбды?
Функции, принимающие другие функции как параметры или возвращающие их. Лямбда — анонимная функция.kotlinfun <T> List<T>.filter(predicate: (T) -> Boolean): List<T> { ... }
list.filter { it > 0 } - Перечислите scope-функции и их различия.
let, run, with, apply, also.
let { } — доступ через it, возвращает результат лямбды.
run { } — доступ через this, возвращает результат.
with(obj) { } — аналогично run, но вызывается как отдельная функция.
apply { } — доступ через this, возвращает сам объект.
also { } — доступ через it, возвращает сам объект. - Что такое корутины и suspend-функции?
Корутины — легковесные потоки для асинхронного программирования.
suspend — маркер функции, которая может приостанавливаться без блокировки потока и возобновляться позже. - Как запустить корутину?
Используя билдеры: launch, async, runBlocking.kotlinGlobalScope.launch { delay(1000); println("Done") }
val deferred = async { compute() } - Что такое inline-функции и reified типы?
inline подставляет тело функции в место вызова, уменьшая накладные расходы на лямбды.
reified позволяет использовать тип-параметр внутри inline-функции как обычный класс (например, T::class.java). - Как работает делегирование свойств (by)?
Свойство может делегировать свои геттеры/сеттеры другому объекту. Стандартные делегаты:
lazy {} — ленивая инициализация (val).
observable {} — слежение за изменениями.
vetoable {} — с возможностью отмены.
Можно написать свой делегат. - Чем интерфейс в Kotlin отличается от Java?
Может содержать абстрактные методы, а также реализации методов (как default в Java 8), но также может иметь абстрактные свойства. Множественное наследование интерфейсов разрешено. - Как перегрузить оператор?
С помощью ключевого слова operator и соответствующего имени функции (например, plus, minus, get, set).kotlindata class Point(val x: Int, val y: Int) {
operator fun plus(other: Point) = Point(x + other.x, y + other.y)
} - Что такое typealias?
Псевдоним для существующего типа. Улучшает читаемость.kotlintypealias UserMap = Map<String, User>
typealias Predicate<T> = (T) -> Boolean - Как Kotlin взаимодействует с Java?
Полная двусторонняя совместимость: Kotlin может вызывать Java-код и наоборот. Особенности:
Геттеры/сеттеры превращаются в свойства.
Типы из Java считаются platform type (могут быть null или нет, контроль на программисте).
Аннотации @JvmStatic, @JvmOverloads, @JvmField управляют генерацией байт-кода. - Что такое use-site target для аннотаций?
Позволяет указать, к какому именно Java-элементу применить аннотацию (например, @get:Something, @field:JsonIgnore). Используется для точной настройки при взаимодействии с Java-библиотеками. - Что такое Kotlin Multiplatform (KMM)?
Технология для использования одного Kotlin-кода на нескольких платформах (iOS, Android, сервер, веб). Бизнес-логика пишется один раз, UI — отдельно под каждую платформу. - Какие инструменты сборки поддерживают Kotlin?
Gradle (официальный плагин Kotlin, Kotlin DSL)
Maven (через плагин)
Ant (менее популярно)
Также есть поддержка в IntelliJ IDEA, Android Studio, VS Code (через плагины).
Страховка на собеседовании
Знание есть, но стресс мешает?
Бесплатное сообщество для прокачки карьеры в IT
Подпишись на https://t.me/IT_Interview_Partner_Bot
Подпишись на https://t.me/LyakhovEugene