Daily iOS
동시성

비동기 네트워크 클라이언트 설계

Swift Concurrency(async/await, actor)로 여러 화면에서 동시에 쓰는 네트워크 클라이언트 API를 설계해 보세요. 메인 스레드를 절대 막지 않아야 하고, 같은 요청 중복 제거·취소·재시도가 필요합니다. 인터페이스와 내부 동시성 구조를 설명해 주세요.

면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

인터페이스는 func fetch<T: Decodable>(_ endpoint: Endpoint) async throws -> T. 내부는 actor가 in-flight Task 사전으로 중복 요청을 합치고, 취소는 호출자 Task 취소를 URLSession으로 전파하되 마지막 대기자가 사라질 때만 요청을 끊으며, 재시도는 지수 백오프 + 취소 인지 sleep으로 구현한다.

받은 질문 공유