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

Функции и лямбды

Все темы Kotlin Developer

Какие существуют функции области видимости (scope functions) в Kotlin?

В Kotlin существуют пять функций области видимости:

  1. let - позволяет выполнить блок кода над объектом и вернуть результат.

  2. apply - позволяет выполнять операции над объектом и возвращает этот же объект.

  3. run как функция-расширение предоставляет объект как this и возвращает результат лямбды. let предоставляет объект как it.

  4. with - похожа на run, но вызывается как обычная функция, а не расширение.

  5. also передаёт объект в лямбду как it и возвращает сам объект. apply также возвращает объект, но предоставляет его как this.


Что такое inline функции?

Inline-функции в Kotlin представляют собой функции, которые вставляются непосредственно в код вызывающей стороны во время компиляции. Это позволяет избежать накладных расходов на вызов функции и создание дополнительных объектов при передаче лямбда-выражений. Они часто используются для оптимизации производительности кода.


Опишите, что представляют собой билдеры в Kotlin.

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


Как объявляются и используются функции в Kotlin?

Функции в Kotlin объявляются с использованием ключевого слова fun, за которым следует имя функции, параметры (если есть) и тип возвращаемого значения.

Пример:

fun sum(a: Int, b: Int): Int {
    return a + b
}

fun main() {
    val result = sum(3, 4)
    println(result)  // Выведет 7
}

Объясните, что такое лямбда-выражения и как их использовать.

Лямбда-выражения — это анонимные функции, которые могут быть переданы как аргументы или возвращены из других функций.

Пример:

val sum = { a: Int, b: Int -> a + b }

fun main() {
    val result = sum(3, 4)
    println(result)  // Выведет 7
}

Как работают функции высшего порядка в Kotlin?

Функции высшего порядка — это функции, которые принимают другие функции в качестве параметров или возвращают их.

Пример:

fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

fun main() {
    val sum = operate(3, 4) { x, y -> x + y }
    println(sum)  // Выведет 7
}

Как работают inline и noinline в Kotlin?

inline функции позволяют компилятору встраивать вызовы этих функций в места их вызова, что уменьшает накладные расходы на вызов функций. noinline используется для параметров, которые не должны быть встроены.

Пример:

inline fun inlineFunction(block: () -> Unit) {
    block()
}

fun main() {
    inlineFunction { println("Inline function") }
}

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

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

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

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

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

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

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

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

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

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

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

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