AI & Data Dreamers練功房
寶箱片場規則
PIPELINE GATES・資料工程關卡・中階・4 題

資料工程中階・冪等寫入、路由、重試與分頁

這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。

  1. 01

    冪等寫入模擬

    中等

    用 dict 模擬一張以 (stock_id, date) 為複合主鍵的表。程式逐行讀取指令直到讀到 end:

    • upsert <stock_id> <date> <close>:主鍵不存在就新增,存在就更新 close
    • show:印出 筆數:<n>,接著每筆一行 <stock_id> <date> <close>(依 stock_id、date 排序;close 用 float 印出)

    同一筆 upsert 兩次,表裡仍然只有一筆——這就是冪等。

    本題在瀏覽器內以 Pyodide 執行,只能用 Python 標準函式庫(json、csv、collections、itertools、datetime、re、math、heapq 等)。

    作答登入後可作答
  2. 02

    任務路由統計

    容易

    第 3 章把任務依名稱分流到不同佇列。變數 task_names 是待派送的任務名稱;路由規則:名稱以 crawler_ 開頭 → 佇列 crawler,以 etl_ 開頭 → 佇列 etl,其餘 → 佇列 default。請統計每個佇列的任務數,依佇列名稱排序印出 <佇列> <數量>。

    本題在瀏覽器內以 Pyodide 執行,只能用 Python 標準函式庫(json、csv、collections、itertools、datetime、re、math、heapq 等)。

    作答登入後可作答
  3. 03

    指數退避重試

    容易

    第 4 章用 self.retry() 重試失敗任務。請依序讀入四個整數:起始等待秒數 base、倍率 factor、最大重試次數 max_retries、等待上限 cap,計算每次重試前的等待秒數 min(cap, base × factor^(n-1)),逐次印出 第 n 次重試:等待 <秒> 秒,最後印出 總等待:<秒> 秒。

    本題在瀏覽器內以 Pyodide 執行,只能用 Python 標準函式庫(json、csv、collections、itertools、datetime、re、math、heapq 等)。

    作答登入後可作答
  4. 04

    API 分頁參數

    容易

    補充 E 的 FastAPI 查詢股價要支援分頁。請讀入三個整數:總筆數 total、頁碼 page(從 1 起)、每頁筆數 size,印出:

    offset=<(page-1)×size>
    limit=<size>
    total_pages=<無條件進位的頁數>
    has_next=<True|False>

    has_next 代表還有下一頁(page < total_pages)。這組數字會直接對應 SQL 的 LIMIT <limit> OFFSET <offset>。

    本題在瀏覽器內以 Pyodide 執行,只能用 Python 標準函式庫(json、csv、collections、itertools、datetime、re、math、heapq 等)。

    作答登入後可作答