前两天刚带学员走了一场 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 稳稳做完的。