DevPrep

Все темы › Задачи с реальных собеседований

FIFO-очередь запросов с type erasure (any / some)

Senior PRO

Задача

Есть протокол с associated types. Напиши очередь, которая выполняет запросы строго по одному, в порядке добавления. Метод add должен принимать любой Request.

protocol Request {
    associatedtype Response
    associatedtype Failure: Error

    typealias Handler = (Result<Response, Failure>) -> Void

    var handler: Handler { get }
    func perform(then handler: @escaping Handler)
}

final class RequestQueue {
    func add(_ request: Request) { } // не компилируется — почему?
}

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

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

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

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

Скачать DevPrep в App Store