BCG X Data Scientist OA 复盘:四题顺利通过,基本都是老题

73Times read
No Comments

前两天刚带学员走了一场 BCG X Data Scientist OA 。说实话,这家 OA 做多了会有一种“似曾相识”的感觉。题型基本稳定,这两年大多数场次都还是 那两套题来回出。

我们这边前后带着做过不少次,题目结构几乎没怎么变。只要之前整理过思路或者写过一遍代码框架,现场做其实挺快的。这场一共 4 道 Python / 数据处理 + 简单建模题,整体难度不算高,更像是一个小型 data pipeline + ML task。

简单把这四题的核心内容说一下。

BCG X Data Scientist OA 复盘:四题顺利通过,基本都是老题

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 稳稳做完的。

author avatar
Jory Wang Amazon资深软件开发工程师
Amazon 资深工程师,专注 基础设施核心系统研发,在系统可扩展性、可靠性及成本优化方面具备丰富实战经验。 目前聚焦 FAANG SDE 面试辅导,一年内助力 30+ 位候选人成功斩获 L5 / L6 Offer。
End of text
 0