Перейти к содержимому
На этой странице

Типы данных

Все темы Kotlin Developer

Что такое Any, Nothing, Unit в Kotlin?

Определения типов данных:

Any - это базовый класс в Kotlin, от которого наследуются все остальные классы. Он является супертипом для всех классов.

Nothing - это специальный тип, который не имеет значений. Он используется для обозначения ситуаций, когда функция никогда не завершается нормально (например, функция, которая бросает исключение).

Unit - это тип, который используется для обозначения функций, не возвращающих значения. Он аналогичен типу void в других языках программирования.


Какие основные типы данных поддерживаются в Kotlin?

Определения типов данных:

  • Числовые типы:

    • Byte, Short, Int, Long, Float, Double
  • Символьные и строковые типы:

    • Char, String
  • Логический тип:

    • Boolean
  • Коллекции:

    • List, MutableList, Set, MutableSet, Map, MutableMap
  • Nullable типы:

    • Все вышеперечисленные типы могут быть null (например, String?).

Как работают nullable типы в Kotlin и чем они полезны?

Nullable типы в Kotlin обозначаются символом ?. Это позволяет избежать NullPointerException (NPE) путем явного указания, что переменная может быть null.

Пример:

var name: String? = "Alice"
name = null  // Разрешено
println(name?.length)  // Безопасный вызов (safe call), результат: null

Преимущества:

  • Явное указание nullable типов помогает предотвращать ошибки времени выполнения, связанные с null.

  • Компилятор Kotlin требует обработки возможных значений null, что делает код безопаснее.


Объясните различие между val и var.

Основная разница между val и var:

  • val (value): Объявляет неизменяемую переменную, которая может быть назначена только один раз.

    val name = "Alice"
    name = "Bob"  // Ошибка компиляции
  • var (variable): Объявляет изменяемую переменную, значение которой можно изменять.

    var age = 25
    age = 26  // Разрешено

Как работать с коллекциями в Kotlin и какие типы коллекций существуют?

Kotlin различает интерфейсы коллекций только для чтения и изменяемые интерфейсы. List, Set и Map не гарантируют неизменяемость объекта или его элементов; комментарии «неизменяемый» в примерах ниже означают доступ только для чтения.

  1. List и MutableList:

    val list: List<String> = listOf("one", "two", "three")  // Неизменяемый список
    val mutableList: MutableList<String> = mutableListOf("one", "two", "three")  // Изменяемый список
    mutableList.add("four")
  2. Set и MutableSet:

    val set: Set<String> = setOf("one", "two", "three")  // Неизменяемое множество
    val mutableSet: MutableSet<String> = mutableSetOf("one", "two", "three")  // Изменяемое множество
    mutableSet.add("four")
  3. Map и MutableMap:

    val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)  // Неизменяемый словарь
    val mutableMap: MutableMap<String, Int> = mutableMapOf("one" to 1, "two" to 2, "three" to 3)  // Изменяемый словарь
    mutableMap["four"] = 4
  4. Операции с коллекциями:

    • filter: Фильтрация элементов.

      val filtered = list.filter { it.startsWith("t") }  // ["two", "three"]
    • map: Преобразование элементов.

      val mapped = list.map { it.toUpperCase() }  // ["ONE", "TWO", "THREE"]
    • forEach: Итерация по элементам.

      list.forEach { println(it) }

Собеседования: Kotlin

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Kotlin-разработчик, Android-разработчик, Backend-разработчик на Kotlin. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.