SW Swift  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

async/await

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 25 вопросов, на работу отведено 70 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 5 тематических шкал и подробные объяснения.
Вопрос 1 из 25
В этом примере важна одна точная деталь механизма «Асинхронные функции». Что действительно произойдёт? Проверяется сигнатура async и место допустимого вызова.
SwiftАсинхронные функции · фрагмент для разбора
func value() async -> Int { 4 }
func doubled() async -> Int { await value() * 2 }
Вопрос 2 из 25
В этом примере важна одна точная деталь механизма «Точки ожидания await». Что действительно произойдёт? Не упускайте из виду следующее: последовательность и семантика точки приостановки.
SwiftТочки ожидания await · фрагмент для разбора
func first() async -> Int { 1 }
func second(_ x: Int) async -> Int { x + 1 }
func run() async -> Int {
    let a = await first()
    return await second(a)
}
Вопрос 3 из 25
Проследите типы, изменения состояния и порядок вызовов. Какое описание результата совпадает с кодом? Важно учесть: структурное время жизни async let и сбор результатов.
SwiftПараллельные привязки async let · фрагмент для разбора
func a16() async -> Int { 2 }
func b16() async -> Int { 3 }
func total16() async -> Int {
    async let a = a16()
    async let b = b16()
    return await a + b
}
Вопрос 4 из 25
Проследите типы, изменения состояния и порядок вызовов. Какое описание результата совпадает с кодом? Сосредоточьтесь на следующем: сочетание throws, await и отмены дочерних операций.
SwiftОшибки · фрагмент для разбора
enum E16: Error { case bad }
func load16() async throws -> Int { throw E16.bad }
func use16() async -> Int {
    (try? await load16()) ?? 0
}
Вопрос 5 из 25
Какой из пяти выводов подтверждается построчной трассировкой? Сосредоточьтесь на следующем: детерминированное ожидание и отсутствие гонки в тесте.
SwiftТестирование и диагностика · фрагмент для разбора
func eventually16() async -> Int { 7 }
func check16() async {
    let value = await eventually16()
    assert(value == 7)
}
Вопрос 6 из 25
Какую причину стоит указать в отчёте об ошибке, прежде чем предлагать исправление? Проверяется сигнатура async и место допустимого вызова.
SwiftАсинхронные функции · фрагмент для разбора
func fetch() async -> String { "ok" }
func sync() -> String { await fetch() }
Вопрос 7 из 25
Какой вывод о типах, владении или порядке выполнения следует из показанного дефекта? Важно учесть: последовательность и семантика точки приостановки.
SwiftТочки ожидания await · фрагмент для разбора
func local() async -> Int { 1 }
func run2() async -> Int {
    await local()
}
Вопрос 8 из 25
Какой разбор отличает реальную причину от сопутствующего риска? Важно учесть: структурное время жизни async let и сбор результатов.
SwiftПараллельные привязки async let · фрагмент для разбора
func fail16() async throws -> Int { throw CancellationError() }
func demo16() async throws -> Int {
    async let value = fail16()
    return 1
}
Вопрос 9 из 25
На проверку кода принесли этот фрагмент. Какой диагноз точнее всего объясняет проблему в части «Ошибки»? Не упускайте из виду следующее: сочетание throws, await и отмены дочерних операций.
SwiftОшибки · фрагмент для разбора
func one16() async throws -> Int { 1 }
func two16() async throws -> Int { 2 }
func sum16() async throws -> Int {
    async let a = one16()
    async let b = two16()
    return await a + b
}
Вопрос 10 из 25
На проверку кода принесли этот фрагмент. Какой диагноз точнее всего объясняет проблему в части «Тестирование и диагностика»? Важно учесть: детерминированное ожидание и отсутствие гонки в тесте.
SwiftТестирование и диагностика · фрагмент для разбора
func eventually16() async -> Int { 7 }

func test16() {
    var result = 0
    Task { result = await eventually16() }
    assert(result == 7)
}
Вопрос 11 из 25
Какое изменение устраняет именно показанную причину и сохраняет ясный контракт «Асинхронные функции»? Проверяется сигнатура async и место допустимого вызова.
SwiftАсинхронные функции · фрагмент для разбора
func fetch() async -> String { "ok" }
func sync() -> String { await fetch() }
Вопрос 12 из 25
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Важно учесть: последовательность и семантика точки приостановки.
SwiftТочки ожидания await · фрагмент для разбора
func local() async -> Int { 1 }
func run2() async -> Int {
    await local()
}
Вопрос 13 из 25
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Важно учесть: структурное время жизни async let и сбор результатов.
SwiftПараллельные привязки async let · фрагмент для разбора
func fail16() async throws -> Int { throw CancellationError() }
func demo16() async throws -> Int {
    async let value = fail16()
    return 1
}
Вопрос 14 из 25
Какая правка делает намерение кода явным и проверяемым? Не упускайте из виду следующее: сочетание throws, await и отмены дочерних операций.
SwiftОшибки · фрагмент для разбора
func one16() async throws -> Int { 1 }
func two16() async throws -> Int { 2 }
func sum16() async throws -> Int {
    async let a = one16()
    async let b = two16()
    return await a + b
}
Вопрос 15 из 25
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Проверяется детерминированное ожидание и отсутствие гонки в тесте.
SwiftТестирование и диагностика · фрагмент для разбора
func eventually16() async -> Int { 7 }

func test16() {
    var result = 0
    Task { result = await eventually16() }
    assert(result == 7)
}
Вопрос 16 из 25
Какой пограничный случай способен изменить вывод, хотя синтаксис останется почти тем же? Здесь оценивается сигнатура async и место допустимого вызова.
Вопрос 17 из 25
Какой отрицательный сценарий лучше всего проверяет предел применимости этого механизма? Важно учесть: последовательность и семантика точки приостановки.
Вопрос 18 из 25
Какое уточнение защищает решение от слишком широкого толкования? Сосредоточьтесь на следующем: структурное время жизни async let и сбор результатов.
Вопрос 19 из 25
Какой контрпример показывает, что рабочий сценарий нельзя безусловно переносить на все похожие случаи? Важно учесть: сочетание throws, await и отмены дочерних операций.
Вопрос 20 из 25
Что нужно учесть, прежде чем объявлять найденное правило универсальным? Здесь оценивается детерминированное ожидание и отсутствие гонки в тесте.
Вопрос 21 из 25
Что должно определять архитектуру этого участка, когда появятся новые входы и владельцы? Проверяется сигнатура async и место допустимого вызова.
Вопрос 22 из 25
Команда выбирает не просто рабочую строку, а устойчивое устройство решения. Какой подход сильнее? Здесь оценивается последовательность и семантика точки приостановки.
Вопрос 23 из 25
Какое замечание на проверке кода поможет предотвратить повторение такого дефекта? Проверяется структурное время жизни async let и сбор результатов.
Вопрос 24 из 25
Какой подход делает неправильное использование заметным раньше? Важно учесть: сочетание throws, await и отмены дочерних операций.
Вопрос 25 из 25
Какой инженерный принцип лучше всего подходит для долгосрочного сопровождения части «Тестирование и диагностика»? Сосредоточьтесь на следующем: детерминированное ожидание и отсутствие гонки в тесте.

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

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

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

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