DevPrep

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

Код-ревью: сетевой слой на completion — пять вопросов интервьюера

Middle PRO

Задача

Кандидат написал сетевой слой. Код рабочий. Какие вопросы задаст интервьюер и что ответить?

final class APIClient {
    private let session: URLSession

    init(session: URLSession = .shared) { self.session = session }

    func request<T: Decodable>(_ request: URLRequest,
                               completion: @escaping (Result<T, APIError>) -> Void) {
        let task = session.dataTask(with: request) { data, response, error in
            if let error { completion(.failure(.transport(error))); return }
            guard let http = response as? HTTPURLResponse else {
                completion(.failure(.invalidResponse)); return
            }
            guard (200...299).contains(http.statusCode) else {
                completion(.failure(.http(http.statusCode))); return
            }
            guard let data, !data.isEmpty else {
                completion(.failure(.emptyData)); return
            }
            do {
                completion(.success(try JSONDecoder().decode(T.self, from: data)))
            } catch {
                completion(.failure(.decoding(error)))
            }
        }
        task.resume()
    }
}

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

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

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

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

Скачать DevPrep в App Store