Server Communication

Server Communication

Q1 處理長耗時的 AI 生成請求

題目描述: 使用者點擊「生成圖片」按鈕。請寫一段 Pseudocode,發送請求給 Server,並等待任務完成。Server 不會馬上回傳圖片,而是回傳一個 job_id。你需要定期檢查該 job_id 的狀態,直到狀態變為 COMPLETED。

Keypoint

策略: AI 生成通常需要幾秒鐘甚至更久,App 不可能一直開著連線等 (Timeout)。

核心模式: Polling (輪詢)。

流程: Client 請求生成 -> Server 回傳 Job ID -> Client 每隔 2 秒問一次 Job ID 完成沒 -> Server 回傳完成 + 圖片。

關鍵字: Async/Await、Sleep、Retry Limit (避免無限迴圈)。

A1

FUNCTION GenerateImageAsync(prompt_text)
    // 1. start the job
    api_url = "/api/generate"
    payload = {"prompt": prompt_text}
    response = HTTP_POST(api_url, payload)

    IF response.status_code != 200 THEN
        RETURN ERROR("Start Failed")
    END IF

    job_id = response.body.job_id
    status = "Pending"
    retry_count = 0
    max_retries = 30 // every 2 second try again, total 1 second

    // 2. Polling Loop
    WHILE status != "Complete" AND retry_count <= max_retries DO
        //  wait 2 second before request
        WAIT(2 second)

        //check status
        status_response = HTTP_GET("/api/jobs" + job_id)
        status = status_response.body.job_id

        IF status == "Complete" THEN
            RETURN status_response.body.image_url
        ELSE IF status == "Failed" THEN
            RETURN Error("Generation failed")
        END IF

        retry_count += 1
    END WHILE 
    
    RETURN Error("Timeout: Generation took too long")

END FUNCTION

Server Communication
https://z-hwa.github.io/webHome/[object Object]/Interview/Server-Communication/
作者
crown tako
發布於
2026年1月17日
許可協議