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

Замыкания

Проверяет основу темы «Замыкания» через чтение кода, предсказание результата и выбор корректной конструкции. Вопросы требуют не только узнать конструкцию, но и проследить выполнение, найти причину дефекта, выбрать исправление и оценить пограничный сценарий. Языковые примеры рассчитаны на Swift 6; задания с Apple SDK рассматриваются в контексте современных платформенных контрактов.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 20 вопросов, на работу отведено 55 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 4 тематические шкалы и подробные объяснения.
Вопрос 1 из 20
Что увидит разработчик после выполнения этого примера по теме «Синтаксис»? Сосредоточьтесь на следующем: вывод сигнатуры и границы сокращённой записи.
SwiftСинтаксис · фрагмент для разбора
let values = [3, 1, 2]
let sorted = values.sorted { $0 < $1 }
print(sorted)
Вопрос 2 из 20
Какой из пяти выводов подтверждается построчной трассировкой? Не упускайте из виду следующее: время жизни и способ захвата локальных значений.
SwiftЗахват · фрагмент для разбора
var total = 0
let add = { total += 1; return total }
print(add(), add())
Вопрос 3 из 20
Проследите типы, изменения состояния и порядок вызовов. Какое описание результата совпадает с кодом? Здесь оценивается момент выхода замыкания за время жизни вызова.
SwiftУбегающие замыкания · фрагмент для разбора
func runEscapingExample() {
    var jobs: [() -> Void] = []
    func schedule(_ job: @escaping () -> Void) {
        jobs.append(job)
    }
    schedule { print("later") }
    jobs[0]()
}

runEscapingExample()
Вопрос 4 из 20
В этом примере важна одна точная деталь механизма «Списки захвата». Что действительно произойдёт? Сосредоточьтесь на следующем: снимок значения и предотвращение циклов удержания.
SwiftСписки захвата · фрагмент для разбора
var value = 1
let show = { [value] in print(value) }
value = 9
show()
Вопрос 5 из 20
Почему этот код не выполняет заявленный контракт? Проверяется вывод сигнатуры и границы сокращённой записи.
SwiftСинтаксис · фрагмент для разбора
func apply(_ transform: (Int, Int) -> Int) -> Int { transform(2, 3) }
let result = apply { $0 + $2 }
Вопрос 6 из 20
Что именно делает этот фрагмент неверным или неочевидным с точки зрения «Захват»? Важно учесть: время жизни и способ захвата локальных значений.
SwiftЗахват · фрагмент для разбора
var handlers: [() -> Void] = []
for i in 0..<3 {
    handlers.append { print(i) }
}
handlers.forEach { $0() }
Вопрос 7 из 20
Какой вывод о типах, владении или порядке выполнения следует из показанного дефекта? Не упускайте из виду следующее: момент выхода замыкания за время жизни вызова.
SwiftУбегающие замыкания · фрагмент для разбора
func store(_ action: () -> Void) -> () -> Void {
    action
}
Вопрос 8 из 20
Разработчик видит симптом, но ищет первопричину. Какое объяснение выдерживает проверку кодом? Важно учесть: снимок значения и предотвращение циклов удержания.
SwiftСписки захвата · фрагмент для разбора
final class Controller {
    var callback: (() -> Void)?
    func install() {
        callback = { print(self) }
    }
}
Вопрос 9 из 20
Какое исправление соответствует правилам Swift и не прячет сбой за обходным значением? Проверяется вывод сигнатуры и границы сокращённой записи.
SwiftСинтаксис · фрагмент для разбора
func apply(_ transform: (Int, Int) -> Int) -> Int { transform(2, 3) }
let result = apply { $0 + $2 }
Вопрос 10 из 20
Какое изменение устраняет именно показанную причину и сохраняет ясный контракт «Захват»? Здесь оценивается время жизни и способ захвата локальных значений.
SwiftЗахват · фрагмент для разбора
var handlers: [() -> Void] = []
for i in 0..<3 {
    handlers.append { print(i) }
}
handlers.forEach { $0() }
Вопрос 11 из 20
Какая правка решает проблему на том уровне, где она возникла? Сосредоточьтесь на следующем: момент выхода замыкания за время жизни вызова.
SwiftУбегающие замыкания · фрагмент для разбора
func store(_ action: () -> Void) -> () -> Void {
    action
}
Вопрос 12 из 20
Какое изменение устраняет именно показанную причину и сохраняет ясный контракт «Списки захвата»? Проверяется снимок значения и предотвращение циклов удержания.
SwiftСписки захвата · фрагмент для разбора
final class Controller {
    var callback: (() -> Void)?
    func install() {
        callback = { print(self) }
    }
}
Вопрос 13 из 20
Какую предпосылку стоит явно записать в документации и тестах? Проверяется вывод сигнатуры и границы сокращённой записи.
Вопрос 14 из 20
Какую предпосылку стоит явно записать в документации и тестах? Проверяется время жизни и способ захвата локальных значений.
Вопрос 15 из 20
На какой границе входов, владения или времени жизни результат может стать другим? Важно учесть: момент выхода замыкания за время жизни вызова.
Вопрос 16 из 20
Какое ограничение темы «Списки захвата» обязательно проверить отдельным граничным тестом? Не упускайте из виду следующее: снимок значения и предотвращение циклов удержания.
Вопрос 17 из 20
Команда выбирает не просто рабочую строку, а устойчивое устройство решения. Какой подход сильнее? Не упускайте из виду следующее: вывод сигнатуры и границы сокращённой записи.
Вопрос 18 из 20
Как организовать этот механизм, чтобы владение и отказ оставались понятными после расширения проекта? Важно учесть: время жизни и способ захвата локальных значений.
Вопрос 19 из 20
Что должно определять архитектуру этого участка, когда появятся новые входы и владельцы? Важно учесть: момент выхода замыкания за время жизни вызова.
Вопрос 20 из 20
Команда выбирает не просто рабочую строку, а устойчивое устройство решения. Какой подход сильнее? Важно учесть: снимок значения и предотвращение циклов удержания.

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

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

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

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