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

資料工程高階・排程與派工

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

  1. 01

    Airflow 資料區間

    中等

    第 10 章提到 Airflow 的排程「跟直覺不同」:每日 DAG 的某一次 run 代表的資料區間是 [logical_date, logical_date + 1 天),而實際觸發時間是區間結束時。請讀入 start_date(YYYY-MM-DD)與 run 數 n,印出前 n 次 run:

    run 1:logical_date=2026-10-01 區間 2026-10-01 → 2026-10-02 實際觸發 2026-10-02

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

    作答登入後可作答
  2. 02

    DAG 拓撲排序

    中等

    變數 deps 是用 Airflow 寫法描述的依賴("a >> b" 表示 a 先於 b)。請算出一個合法的執行順序:

    • 使用 Kahn 演算法(入度為 0 的節點可執行)
    • 同時有多個節點可執行時,取名稱字典序最小者(確保答案唯一)
    • 若有節點永遠無法執行(循環依賴),印出 偵測到循環依賴

    正常情況印出一行,節點以 -> 串接。

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

    作答登入後可作答
  3. 03

    多 worker 派工模擬

    困難

    模擬 RabbitMQ 把任務派給多個 worker(prefetch=1:worker 做完一個才拿下一個)。變數 durations 是 10 個任務的秒數,依序進入佇列;請讀入 worker 數 k。規則:每個任務交給「最早空閒」的 worker,若多個 worker 同時空閒,交給編號最小者。印出每個 worker 的完成時間 worker <編號>:<完成秒數> 秒(編號從 1 起),最後印出 總完成時間:<最大完成秒數> 秒。

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

    作答登入後可作答