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

Условия и циклы

Проверяется не запоминание скобок, а точное чтение ветвлений и циклов: значение if, порядок веток when, границы диапазонов, шаг и момент остановки. Неверный ответ часто отличается одной итерацией или условием на самой границе.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом задании верен только один вариант. После завершения будут показаны общий результат и 4 тематических шкал.
Вопрос 1 из 20
Какой риск не исчезает после правки «Убывающая прогрессия»: Выбирать форму диапазона по контракту границ и закреплять тестом пустой диапазон, одну точку и последний допустимый индекс?
Вопрос 2 из 20
Чем завершится выполнение «Метка внешнего цикла»?
KotlinЦиклы · Метка внешнего цикла
// Проследите фактическое выполнение без изменения кода.
fun main() {
    var sum = 0
    outer@ for (row in 1..3) {
        for (col in 1..3) {
            if (row * col == 4) break@outer
            sum += row * col
        }
    }
    println(sum)
}
Вопрос 3 из 20
Как превратить неявное предположение в проверяемый контракт «if как выражение»?
Kotlinif-выражение · if как выражение
// Сохраните назначение фрагмента, но укрепите его контракт.
fun price(age: Int): Int {
    val discount = if (age < 18) 20 else if (age >= 65) 30 else 0
    return 100 - discount
}

fun main() = println(price(65))
Вопрос 4 из 20
Где упрощённое объяснение «Исчерпывающий when» перестаёт работать?
Вопрос 5 из 20
Какое правило определяет поведение фрагмента «Метка внешнего цикла»?
KotlinЦиклы · Метка внешнего цикла
// На ревью требуется объяснить причину поведения.
fun main() {
    var sum = 0
    outer@ for (row in 1..3) {
        for (col in 1..3) {
            if (row * col == 4) break@outer
            sum += row * col
        }
    }
    println(sum)
}
Вопрос 6 из 20
Какой дополнительный сценарий нужен для «if как выражение»?
Вопрос 7 из 20
Какой риск не исчезает после правки «Исчерпывающий when»: Сохранять `when` исчерпывающим без общего `else`, если добавление нового состояния должно приводить к заметной ошибке компиляции?
Вопрос 8 из 20
Какой список будет напечатан?
KotlinДиапазоны · Убывающая прогрессия
// Проследите фактическое выполнение без изменения кода.
fun main() {
    val values = (10 downTo 4 step 3).toList()
    println(values)
}
Вопрос 9 из 20
Предложенная правка для «if как выражение» звучит так: Для нескольких диапазонов вынести правила цены в ясно упорядоченные условия и покрыть тестами значения на границах 17/18 и 64/65. Какой недостаток важнее обсудить?
Вопрос 10 из 20
Почему функция `text` компилируется без ветви `else`?
KotlinВетвление when · Исчерпывающий when
// Проследите фактическое выполнение без изменения кода.
sealed interface Reply {
    data class Ok(val body: String) : Reply
    data object Retry : Reply
    data class Failed(val code: Int) : Reply
}

fun text(r: Reply) = when (r) {
    is Reply.Ok -> r.body
    Reply.Retry -> "повтор"
    is Reply.Failed -> "ошибка ${r.code}"
}
Вопрос 11 из 20
Почему пример «Убывающая прогрессия» даёт именно такой результат?
KotlinДиапазоны · Убывающая прогрессия
// На ревью требуется объяснить причину поведения.
fun main() {
    val values = (10 downTo 4 step 3).toList()
    println(values)
}
Вопрос 12 из 20
Какое изменение лучше всего защищает границу «Метка внешнего цикла»?
KotlinЦиклы · Метка внешнего цикла
// Сохраните назначение фрагмента, но укрепите его контракт.
fun main() {
    var sum = 0
    outer@ for (row in 1..3) {
        for (col in 1..3) {
            if (row * col == 4) break@outer
            sum += row * col
        }
    }
    println(sum)
}
Вопрос 13 из 20
Почему поведение «Исчерпывающий when» не является случайностью?
KotlinВетвление when · Исчерпывающий when
// На ревью требуется объяснить причину поведения.
sealed interface Reply {
    data class Ok(val body: String) : Reply
    data object Retry : Reply
    data class Failed(val code: Int) : Reply
}

fun text(r: Reply) = when (r) {
    is Reply.Ok -> r.body
    Reply.Retry -> "повтор"
    is Reply.Failed -> "ошибка ${r.code}"
}
Вопрос 14 из 20
Какую точечную правку стоит принять на ревью фрагмента «Убывающая прогрессия»?
KotlinДиапазоны · Убывающая прогрессия
// Сохраните назначение фрагмента, но укрепите его контракт.
fun main() {
    val values = (10 downTo 4 step 3).toList()
    println(values)
}
Вопрос 15 из 20
На каком входе или состоянии граница «Метка внешнего цикла» становится заметной?
Вопрос 16 из 20
Какой результат даст код «if как выражение»?
Kotlinif-выражение · if как выражение
// Проследите фактическое выполнение без изменения кода.
fun price(age: Int): Int {
    val discount = if (age < 18) 20 else if (age >= 65) 30 else 0
    return 100 - discount
}

fun main() = println(price(65))
Вопрос 17 из 20
Где поведение «Убывающая прогрессия» требует отдельной проверки?
Вопрос 18 из 20
Решение для «Метка внешнего цикла»: В сложном поиске вынести обход в функцию и вернуть найденный результат, чтобы не строить управление из нескольких меток. Что в нём остаётся не бесплатным?
Вопрос 19 из 20
Какое объяснение результата «if как выражение» выдерживает проверку соседними случаями?
Kotlinif-выражение · if как выражение
// На ревью требуется объяснить причину поведения.
fun price(age: Int): Int {
    val discount = if (age < 18) 20 else if (age >= 65) 30 else 0
    return 100 - discount
}

fun main() = println(price(65))
Вопрос 20 из 20
Какая правка устраняет причину риска в «Исчерпывающий when», а не только его проявление?
KotlinВетвление when · Исчерпывающий when
// Сохраните назначение фрагмента, но укрепите его контракт.
sealed interface Reply {
    data class Ok(val body: String) : Reply
    data object Retry : Reply
    data class Failed(val code: Int) : Reply
}

fun text(r: Reply) = when (r) {
    is Reply.Ok -> r.body
    Reply.Retry -> "повтор"
    is Reply.Failed -> "ошибка ${r.code}"
}

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

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

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

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