DevPrep

Все темы › Что выведет? Головоломки с собеседований

GCD-головоломка: порядок вывода и где дедлок?

Senior PRO

Задача

Код выполняется на главном потоке (например, в main.swift). Что напечатается?

let main = DispatchQueue.main
let serial = DispatchQueue(label: "serial")
let concurrent = DispatchQueue(label: "concurrent", attributes: .concurrent)

main.async {
    print(1)
}

main.async {
    print(2)
    serial.async { print(3) }
    serial.sync {
        print(4)
        concurrent.sync {
            print(5)
            concurrent.sync { print(6) }
            serial.sync { print(7) }
        }
    }
}

serial.sync { print(8) }

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store