KT Kotlin  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Функции и параметры

Вопросы проверяют функции через именованные аргументы, значения по умолчанию, локальные функции и вывод возвращаемого типа. Особое внимание — вызовам, которые выглядят очевидно, но меняют смысл после перестановки параметров или появления перегрузки.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом задании верен только один вариант. После завершения будут показаны общий результат и 4 тематических шкал.
Вопрос 1 из 20
Почему пример «Общий тип ветвей» даёт именно такой результат?
KotlinВозвращаемый тип · Общий тип ветвей
// На ревью требуется объяснить причину поведения.
fun parse(flag: Boolean) = if (flag) 1 else "1"

fun main() {
    val value = parse(true)
    println(value::class.simpleName)
}
Вопрос 2 из 20
Какой дополнительный сценарий нужен для «Порядок именованных аргументов»?
Вопрос 3 из 20
Что может усложниться в сопровождении после изменения «Пропущенный первый параметр»: Давать по умолчанию только безопасные и ожидаемые значения, а обязательные ограничения проверять через `require` внутри функции?
Вопрос 4 из 20
Чем завершится выполнение «Рекурсивная локальная функция»?
KotlinЛокальные функции · Рекурсивная локальная функция
// Проследите фактическое выполнение без изменения кода.
fun countPaths(n: Int): Int {
    fun walk(left: Int): Int = when {
        left < 0 -> 0
        left == 0 -> 1
        else -> walk(left - 1) + walk(left - 2)
    }
    return walk(n)
}

fun main() = println(countPaths(4))
Вопрос 5 из 20
Предложенная правка для «Порядок именованных аргументов» звучит так: Для нескольких однотипных параметров использовать имена или объект конфигурации, чтобы вызов не зависел от запоминания позиции. Какой недостаток важнее обсудить?
Вопрос 6 из 20
Что произойдёт при запуске примера «Пропущенный первый параметр»?
KotlinЗначения по умолчанию · Пропущенный первый параметр
// Проследите фактическое выполнение без изменения кода.
fun page(limit: Int = 20, offset: Int = 0): IntRange =
    offset until (offset + limit)

fun main() = println(page(offset = 40).first to page(offset = 40).last)
Вопрос 7 из 20
Какой контракт определяет наблюдаемый результат «Рекурсивная локальная функция»?
KotlinЛокальные функции · Рекурсивная локальная функция
// На ревью требуется объяснить причину поведения.
fun countPaths(n: Int): Int {
    fun walk(left: Int): Int = when {
        left < 0 -> 0
        left == 0 -> 1
        else -> walk(left - 1) + walk(left - 2)
    }
    return walk(n)
}

fun main() = println(countPaths(4))
Вопрос 8 из 20
Как сделать ответственность во фрагменте «Общий тип ветвей» понятной следующему разработчику?
KotlinВозвращаемый тип · Общий тип ветвей
// Сохраните назначение фрагмента, но укрепите его контракт.
fun parse(flag: Boolean) = if (flag) 1 else "1"

fun main() {
    val value = parse(true)
    println(value::class.simpleName)
}
Вопрос 9 из 20
Почему пример «Пропущенный первый параметр» даёт именно такой результат?
KotlinЗначения по умолчанию · Пропущенный первый параметр
// На ревью требуется объяснить причину поведения.
fun page(limit: Int = 20, offset: Int = 0): IntRange =
    offset until (offset + limit)

fun main() = println(page(offset = 40).first to page(offset = 40).last)
Вопрос 10 из 20
Какую точечную правку стоит принять на ревью фрагмента «Рекурсивная локальная функция»?
KotlinЛокальные функции · Рекурсивная локальная функция
// Сохраните назначение фрагмента, но укрепите его контракт.
fun countPaths(n: Int): Int {
    fun walk(left: Int): Int = when {
        left < 0 -> 0
        left == 0 -> 1
        else -> walk(left - 1) + walk(left - 2)
    }
    return walk(n)
}

fun main() = println(countPaths(4))
Вопрос 11 из 20
Какой дополнительный сценарий нужен для «Общий тип ветвей»?
Вопрос 12 из 20
Чем завершится выполнение «Порядок именованных аргументов»?
KotlinИменованные аргументы · Порядок именованных аргументов
// Проследите фактическое выполнение без изменения кода.
fun connect(host: String, port: Int = 443, secure: Boolean = true) =
    "$host:$port/$secure"

fun main() = println(connect("api.test", secure = false, port = 8080))
Вопрос 13 из 20
Где поведение «Рекурсивная локальная функция» требует отдельной проверки?
Вопрос 14 из 20
Предложенная правка для «Общий тип ветвей» звучит так: Уточнить предметную модель: вернуть единый тип, sealed-результат или явное преобразование, а не позволять выводу скрыть неоднородность. Какой недостаток важнее обсудить?
Вопрос 15 из 20
Какое объяснение результата «Порядок именованных аргументов» выдерживает проверку соседними случаями?
KotlinИменованные аргументы · Порядок именованных аргументов
// На ревью требуется объяснить причину поведения.
fun connect(host: String, port: Int = 443, secure: Boolean = true) =
    "$host:$port/$secure"

fun main() = println(connect("api.test", secure = false, port = 8080))
Вопрос 16 из 20
Как превратить неявное предположение в проверяемый контракт «Пропущенный первый параметр»?
KotlinЗначения по умолчанию · Пропущенный первый параметр
// Сохраните назначение фрагмента, но укрепите его контракт.
fun page(limit: Int = 20, offset: Int = 0): IntRange =
    offset until (offset + limit)

fun main() = println(page(offset = 40).first to page(offset = 40).last)
Вопрос 17 из 20
Какой тип будет показан при выполнении?
KotlinВозвращаемый тип · Общий тип ветвей
// Проследите фактическое выполнение без изменения кода.
fun parse(flag: Boolean) = if (flag) 1 else "1"

fun main() {
    val value = parse(true)
    println(value::class.simpleName)
}
Вопрос 18 из 20
Как сделать ответственность во фрагменте «Порядок именованных аргументов» понятной следующему разработчику?
KotlinИменованные аргументы · Порядок именованных аргументов
// Сохраните назначение фрагмента, но укрепите его контракт.
fun connect(host: String, port: Int = 443, secure: Boolean = true) =
    "$host:$port/$secure"

fun main() = println(connect("api.test", secure = false, port = 8080))
Вопрос 19 из 20
Какой дополнительный сценарий нужен для «Пропущенный первый параметр»?
Вопрос 20 из 20
Предложенная правка для «Рекурсивная локальная функция» звучит так: Для экспоненциальной рекурсии добавить мемоизацию или перейти к итеративному расчёту, сохранив вспомогательную функцию локальной. Какой недостаток важнее обсудить?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу