前兩天剛帶學員走了一場 BCG X Data Scientist OA 。說實話,這家 OA 做多了會有一種“似曾相識”的感覺。題型基本穩定,這兩年大多數場次都還是 那兩套題來回出。
我們這邊前後帶著做過不少次,題目結構幾乎沒怎麼變。只要之前整理過思路或者寫過一遍程式碼框架,現場做其實挺快的。這場一共 4 道 Python / 資料處理 + 簡單建模題,整體難度不算高,更像是一個小型 data pipeline + ML task。
簡單把這四題的核心內容說一下。

Q1 資料統計題
第一題就是比較典型的資料統計題。給了司機表 + 多個行程資料檔案,最後需要算幾個指標並輸出 CSV。
主要做三件事:
- 從司機表裡算司機平均評分
- 統計有第二語言的司機比例
- 把所有行程檔案合併起來,算成功行程佔比
這裡唯一需要注意的就是行程資料是 多個檔案,需要先拼起來再做統計。其餘基本都是 pandas 的常規操作,比如:
- 讀取資料
- 條件篩選
- 求均值
- 統計比例
最後把三個指標整理成一個小表格,然後匯出 CSV。
Q2 資料預處理
第二題就比較像機器學習專案裡的資料預處理流程。
主要步驟大概是這些:
- 用 訓練集年齡均值 填充缺失年齡(四捨五入)
- 把 訓練集和測試集合並 方便統一處理
- 按訓練集類別順序,對 車型和第二語言 做數值編碼
- 對 小費金額 做標準化處理,並保留五位小數
- 把 司機等級 A / B 對映成 0 / 1
處理完以後再把處理後的訓練集和測試集分別儲存。
這一題本質上就是一個簡化版 feature engineering + preprocessing pipeline。如果平時用 pandas 或 sklearn 比較多,其實寫起來很順。
Q3 資料整合
第三題稍微複雜一點,主要是多表關聯。
資料來自三張表:
- driver
- vehicle
- trip
需要構造幾個新的欄位。
第一個是車輛年檢間隔天數
根據車輛上次年檢時間,算出距離當前時間過了多少天。
第二個是司機駕駛經驗
用一個簡單公式算:
經驗年數 = 2023 - 開始駕駛年份
第三個是司機總點贊數
需要把 trip 表裡的各種點贊統計彙總到司機層級。
做法基本是:
- 按司機聚合 trip 資料
- 把點贊相關欄位求和
- 再 merge 回 driver 表
如果某些司機沒有行程記錄,點贊數需要填 0。
最後把需要的列整理出來,輸出彙總 CSV。
Q4 隨機森林建模 + 閾值調整
最後一題是一個簡單分類模型。
流程比較標準:
1 讀取訓練資料
2 分離特徵和標籤
然後做缺失值處理:
- 數值特徵 → 中位數填充
- 類別特徵 → 眾數填充
接著把類別變數編碼。
模型使用的是Random Forest,同時給B 類設定更高權重,因為題目更關注這一類。
訓練完成後還有一個關鍵步驟:
需要在驗證集上嘗試不同閾值。
目標是:
- 滿足 precision 的最低要求
- 同時儘量提高 recall
找到合適閾值以後,再用這個閾值對測試集做預測,最後輸出結果檔案。
如果你也在準備OA
我們已經帶了不少學員一起過這種 OA,像 BCG、還有一些諮詢公司 DS 崗的題,其實套路都差不多。如果你最近也剛好拍到了類似的 OA,心裡有點沒底,或者擔心考試的時候突然卡思路,其實也可以提前瞭解一下我們的 OA實時輔助服務 。考試的時候有人幫你一起把關,很多同學都是這樣把整場 OA 穩穩做完的。