每年春招这个时间点,贝壳找房的算法岗笔试题总能在圈子里引起一波讨论。它不像互联网大厂那样疯狂堆砌LeetCode hard题,也不像某些实验室风格团队那样只考论文复现,贝壳的题目风格更偏向“业务落地”——给你一堆现实世界里的脏数据,看你能不能把它洗干净、挖出价值、变成可解释的模型结果。这套2023春招数据挖掘/机器学习工程师笔试卷2,我刷完之后最大的感受是:它考的不是你背了多少公式,而是你面对一个真实业务问题时,能不能按照数据挖掘的标准流程,把每一步都走得严谨且高效。
这篇文章我打算按试卷的考察逻辑,把数据挖掘和机器学习的高频考点、解题思路、容易踩的坑从头到尾梳理一遍。不管你是准备春招秋招的应届生,还是想转行做算法工程师的在职人,这套拆解基本能把“贝壳这类业务驱动型公司到底想招什么样的人”这个问题讲透。内容不绕弯子,直接按实操来。
1. 试卷整体设计与考察逻辑拆解
1.1 贝壳这类公司笔试题的底层逻辑
先聊一个很多人会忽略的点:为什么贝壳的算法笔试题长这样?很多人拿到卷子第一反应是“怎么没有手撕红黑树”,或者“怎么不考 transformer 的 attention 公式推导”。这是因为贝壳的核心业务是房产交易和居住服务,它面临的问题不是搜索推荐、不是自动驾驶感知,而是房源价格评估、用户购房意向识别、经纪人匹配效率、楼盘画像构建这类非常接地气的场景。
这意味着,他们招的数据挖掘工程师需要具备的第一能力不是“我会调包”,而是“我拿到一个业务命题后,能把它拆解成数据问题,再拆解成模型问题”。所以试卷里大量考的是特征工程思路、样本不均衡处理、模型评估指标选择、AB实验的坑,这些直接对应日常工作的核心环节。
第二层逻辑是考察“工程落地能力”。算法模型写得再漂亮,线上跑不动或者效果不可解释,在贝壳这类公司是行不通的。所以试卷会穿插一些关于特征稳定性、模型可解释性、离线在线一致性(线上线下一致性问题)的题目,这些恰恰是实际业务中最容易翻车的地方。
第三层才是考察机器学习基础理论的扎实程度。包括偏差方差分解、过拟合处理、正则项作用、梯度下降原理等。这些属于基本功,但是你不会的话,后面特征工程做得再花哨也白搭,因为模型解释不了异常行为。
1.2 整张试卷的题型结构与时间分配建议
从我拿到的试卷2回忆版来看,整体题型大致分为四块:单选题/多选题(覆盖机器学习基础概念)、简答题(偏特征工程和业务场景设计)、计算推导题(集中在模型评估指标和损失函数上)、综合案例题(给出一个业务场景和数据集,要求完整设计方案)。
时间分配是我特别想强调的。很多考生在前面的选择题上纠结太久,导致最后的综合案例题只写了三行字。贝壳这类公司,综合案例题往往分值最高,而且阅卷时看的不是你的最终预测结果,而是你的分析框架和逻辑完整性。我自己的建议是选择题控制在20分钟内,简答题30分钟,计算推导题30分钟,剩下至少40分钟全部给综合案例题。
还有一个容易被低估的点:shell脚本和SQL能力。虽然这是数据挖掘/机器学习试卷,但贝壳的业务数据基本都存储在数仓里,你能不能高效取数,决定了你后续所有工作的上限。试卷里偶尔会出现一道SQL题或者简单的数据处理题,千万别丢分。
2. 核心考点:机器学习基础理论高频题解析
2.1 偏差方差分解与过拟合的底层博弈
这套卷子里,偏差方差几乎是必考项,而且考法很灵活。有时候直接问“下列哪种操作能有效降低模型的方差”,有时候给出一组训练误差和验证误差让你判断模型状态。
我建议用靶心图来理解这件事:偏差是瞄得准不准,方差是手抖不抖。高偏差意味着你的模型连训练集的基本规律都没学到,典型的欠拟合;高方差则是模型把训练集里的噪声都背下来了,换一批数据就原形毕露。
关于降低方差的手段,这里有个容易漏答的点。除了常见的增加训练数据量、引入正则化项、降低模型复杂度(比如决策树剪枝、神经网络减少层数)之外,**集成学习中的bagging(自助聚合)**也是降低方差非常有效的思路。随机森林就是典型的通过并行训练多棵树、最终投票取均值来把方差压下来的方法。这个点在简答题里如果问“列举至少三种降低方差的手段”,你写了前三个不写集成,会扣分。
反过来,降低偏差的手段主要是增加模型复杂度、引入更多有效特征、减少正则化强度。有一点要注意,实际工作中我们往往面临的是偏差方差同时偏高的状态,这时候优先处理偏差还是方差,取决于你的业务容忍度。比如在贝壳的房源估价场景里,你对准确性要求极高,那么前期宁可模型稍微过拟合(高方差),也要先把预测偏差降下来,后期再用交叉验证调参来平衡。
2.2 过拟合的识别与五种常用对抗策略
过拟合的识别其实很简单:训练集表现持续上升,但验证集指标在某个节点后开始走平甚至恶化,这个“分叉点”就是过拟合开始的信号。
针对过拟合,试卷里一般不会只让你说“加正则化”,而是会让你写出更多策略,并按适用场景分类。我整理一个对照表,你们可以直接拿去背:
| 策略 | 核心原理 | 适用场景 | 实操注意事项 |
|---|---|---|---|
| L2正则化(权重衰减) | 限制权重范数,防止某些特征主导 | 线性模型、神经网络 | 特征量纲差异大时先标准化,否则正则化效果偏颇 |
| L1正则化 | 让部分权重归零,同时实现特征选择 | 高维稀疏特征 | 会导致特征不可解释性下降,慎用于需要强解释性的业务 |
| Dropout | 训练时随机丢弃部分神经元 | 深度学习网络 | 测试时一定要关闭,否则预测结果不稳定 |
| 早停法(Early Stopping) | 监控验证集loss,分叉即停 | 梯度下降类模型 | 需要预留验证集,不能直接在训练集上监控 |
| 数据增强/采样 | 扩大样本空间,降低噪声比例 | 图像、文本、序列数据 | 注意增强后的样本分布不能偏离原始分布太远 |
这里我想多说一句:我自己在实际面试复盘时发现,很多考生把“增加训练数据”挂在嘴边,但在笔试题里根本没写“如何增加”——是数据增强?是SMOTE过采样?是自举采样?你得写具体手段,才显得你真正干过这事儿。
另外提醒一个冷门考点:正则化系数λ越大,模型权重就越小,但并不是越小越好。λ太大会把所有权重都压到接近0,模型退化为一个常数预测,这在简答题里如果让你画“模型误差随λ变化曲线”,你要记得标出“偏差上升”和“方差下降”的交叉方向。
2.3 损失函数、梯度下降与优化器选择细节
这块内容在选择题里出现频率极高,而且特别喜欢组合考,比如给定一个损失函数,问你对它做梯度下降时,参数更新公式怎么写;再比如给你一个含L2正则的损失函数,问梯度里多出来的那一项是什么。
先说梯度下降的三种形式:**批量梯度下降(BGD)**每轮迭代用全量数据算梯度,准确但慢;**随机梯度下降(SGD)**每轮只用一个样本,快但噪声大;**小批量梯度下降(Mini-batch GD)**折中,每轮用一个小batch(通常是32、64、128),既稳定又有一定随机性,是实际工程里最常用的。
有个细节容易被忽略:学习率不是越大越快,也不是越小越准。学习率太大,损失函数会在最优点附近来回震荡甚至发散;学习率太小,收敛速度极慢,训练半天还在原地踏步。好的做法是配合学习率衰减策略,前中期用较大学习率快速逼近,后期用小学习率精调。在试卷里如果让你写SGD更新公式,千万别漏了“学习率需要随迭代次数调整”这句话。
优化器这块,试卷里常出现的对比是SGD vs Momentum vs Adam。Momentum的物理含义是有惯性的小球滚下山坡,能穿过局部极小值点;Adam则是在SGD基础上加了一阶矩估计和二阶矩估计的自适应调整。这里有个实际的坑:Adam虽然收敛快,但有时候泛化性能不如调好学习率的SGD。这在贝壳这类生产环境里真的会出现,所以模拟题如果你看到“在测试集上SGD效果优于Adam,请分析可能原因”,你要能写出“Adam对学习率不敏感,但可能在后期震荡较大;SGD配合衰减策略能微调到更平缓的极小值点”这类分析,而不是干巴巴说“SGD更好”。
2.4 生成式模型与判别式模型的经典对决
这个知识点在历年的数据挖掘笔试里出现频率不高,但2023贝壳这套卷子里专门出了一道多选题,问的是“下列哪些模型属于判别式模型”,选项包括逻辑回归、朴素贝叶斯、支持向量机、条件随机场、隐马尔可夫模型。
如果你对这两个概念模糊,这里一次理清:生成式模型是对联合概率分布P(X,Y)建模,然后通过贝叶斯公式推导出P(Y|X),特点是能模拟数据的生成过程,朴素贝叶斯、隐马尔可夫模型、高斯混合模型都是这一类。判别式模型直接对条件概率P(Y|X)建模,或者直接学一个决策边界,逻辑回归、支持向量机、条件随机场、决策树、神经网络都是这一类。
选错的同学大概率是把“朴素贝叶斯”和“贝叶斯”搞混了。朴素贝叶斯虽然名字里有贝叶斯,但它对P(X|Y)做了独立假设,属于典型的生成式模型。而“贝叶斯网络”也不是判别式模型,它是表示变量间概率依赖关系的图模型,是生成式的。这种概念辨析题没有技巧,就是平时积累,做题时用“是否对联合分布建模”这个判据去套,不会错。
3. 核心考点:数据挖掘流程与特征工程实战拆解
3.1 数据预处理:从“脏乱差”到“干净可用”的标准三步
数据预处理是数据挖掘和机器学习的“地基工程”,虽然笔试分值占比不一定最大,但它决定了后面所有环节能不能顺利推进。我看到试卷里有一道题给了一份房源数据,里面包含空值、异常值(比如房价字段出现负数)、重复记录、明显的时间字段格式不统一,让考生补全预处理方案。这其实是贝壳真实业务场景的简化版。
第一步是缺失值处理。主流方法有删除、均值/中位数/众数填充、模型预测填充。但我想提醒一个细节:业务字段缺失率高的时候要造“是否缺失”标记特征。比如“楼盘绿化率”字段有30%的缺失,我除了填充之外,一定额外加一列“绿化率是否缺失”,这个思路在逻辑回归、XGBoost这类模型上都有效。因为在真实业务里,字段缺失本身往往就暗示某种信息——可能是新盘没有数据录入,也可能是某些物业类型本身就不关注绿化率。
第二步是异常值处理。如果你是靠肉眼或者箱线图来判断异常值,那要注意:异常值不一定都是脏数据,也可能是真实但极端的业务信号。比如一套市中心顶层复式豪宅,单价远高于普通住宅,你不能一刀切把它删掉。我建议的处理顺序是:先判断异常值是否在业务逻辑上合理,合理就保留并做对数变换或缩尾处理压低影响,不合理(如面积为负数)再删除。在笔试中你要能写出“通过IQR或Z-score识别异常值,再结合业务判定去留”这个层次,而不是简单说“删掉”。
第三步是数据标准化/归一化。这里有一个高频考点:基于树的模型(决策树、随机森林、XGBoost、LightGBM)对特征尺度不敏感,不需要归一化;但基于距离的模型(K近邻、K-means、SVM)和绝大多数神经网络,必须归一化。原因是树模型做分裂时只比大小,特征尺度不影响分裂点的选择;而距离模型如果不归一化,量纲大的特征会完全支配距离计算。这个点在笔试选择题里几乎是送分题,但每年都有人丢,因为没往深处想为什么。
3.2 特征工程:构造、筛选与业务理解的平衡艺术
特征工程在这套试卷里占比很大,而且考法很“贝壳”——不会凭空让你给一堆无关变量做特征,而是给你一个真实业务场景,比如“预测房源在7天内成交的概率”,让你去设计特征。
我做这种题目的思路是先分三层:
第一层,基础特征,直接从原始字段里清洗后得到的。比如房源面积、户型、朝向、所在楼层、楼龄、物业费、是否有电梯。注意“面积”这种连续值要保留,但“朝向”这种类别值必须做编码。在特征编码上有一个常见选择:名义变量用独热编码(One-Hot),有序变量用标签编码(Label Encoding)。户型虽然也有“三室两厅”这种类别表述,但它是有序的,可以从一室到六室以上做标签编码,保留空间顺序信息。
第二层,统计聚合特征,这一步最考验业务理解。对于每个房源,我可以聚合它所在小区的历史成交记录,算出最近30天同小区成交均价、成交房源总数、平均成交周期。这些聚合特征远优于单套房源的原始价格,因为它们是“市场供需状况”的直接体现。有一道题专门考这个,问“在预测房源成交周期时,哪些特征最有区分度”,答案应该围绕“同商圈/同小区成交热度”“房源自身性价比(挂牌价相对小区成交均价的偏离度)”“业主调价行为(近30天降价次数和幅度)”来展开,而不是说“楼层、朝向、装修”。
第三层,时间序列/行为序列特征。贝壳的数据里有一类非常特殊的特征,是其他行业很难复制的:用户的看房行为轨迹。比如这个房源被收藏了多少次、被约看多少次、每次看房后隔多久再约下一次、同一用户在多少天内重复看了同一房源。这些行为特征直接反映了真实用户的购房意向,模型效果提升非常明显。如果你在笔试里能想到这一层,已经能甩开大多数考生了。
特征筛选方面,我推荐掌握三种思路,按实用程度排序:基于模型重要度(XGBoost的 feature_importance、随机森林的基尼重要度)、基于统计检验(卡方检验、方差分析)、基于正则化稀疏性(L1正则把无关特征系数压成0)。在笔试简答里,你要能说出“保留特征不是越多越好,冗余特征会加剧多重共线性,增加过拟合风险,降低模型可解释性”这个逻辑,并附上一个具体的筛选方法。
3.3 样本不均衡处理:为什么准确率在这里会骗人
贝壳的业务天然存在严重的样本不均衡问题。比如“7天内成交的房源”占所有挂牌房源的比例可能只有5%都不到,如果直接建模,模型只要全部预测为“不会成交”,准确率能到95%,但这个模型毫无业务价值。做数据挖掘的人如果只看准确率(Accuracy),在这种场景下会被骗得死死的。
试卷里专门出了一道题,问“在成交预测场景下,样本不均衡会带来哪些问题,如何解决”。这个题建议按四层来答:
第一,换评估指标。用精确率、召回率、F1-score、AUC代替准确率。这里要特别强调的是:正负样本比例极度悬殊时,AUC仍然可能虚高,建议同时看PR曲线(精确率-召回率曲线)。在房源成交预测这种正样本很少的场景里,PR曲线比ROC曲线更能反映模型真实效果,因为PR曲线的基线会随着正样本比例变化,不会像ROC那样被大量负样本稀释。
第二,数据层面处理。经典三招是欠采样(随机删掉部分负样本,适合负样本量足够)、过采样(复制或插值生成正样本)、SMOTE(在正样本的K近邻之间插值生成新样本)。SMOTE的坑在于它可能会生成不合理的样本,比如两个房源样本插值后得到“面积75平、3个卧室”这种现实中不一定存在的组合,所以在真实业务里用SMOTE后一定要人工抽检。
第三,算法层面处理。给正样本更高的权重,也就是在损失函数里设class_weight参数,让模型对少数类误判付出更大的代价。XGBoost里是 scale_pos_weight 参数,sklearn 里逻辑回归和SVM都有class_weight。这个思路简单有效,是工业界最常用的手段。
第四,异常检测思路。如果正样本实在少到没法训练(比如只有几百条),可以把问题从“二分类”转化为“单类异常检测”,用孤立森林或一类SVM去识别那些“不像正常样本”的房源,把它们筛选出来作为高概率成交对象。这不是出题方给的规范答案,但我实习时真这么干过,效果意外地还行,放在笔试里当成加分项写,也能体现你的知识广度。
4. 实操复盘:从一份模拟房源数据到完整建模方案
4.1 题目还原与业务目标定义
下面这张图是这套试卷的综合案例题,原题大意为:给定某城市过去一年的房源挂牌与成交记录,字段包括房源ID、小区ID、面积、户型、朝向、楼层、楼龄、挂牌价格、小区成交均价、近30天看房次数、业主调价次数、是否7天内成交(目标变量)。题目要求:1)设计特征工程方案;2)选择模型并说明理由;3)设计评估方案;4)说明上线后的监控方案。
这个题本质上就是贝壳内部“房源成交周期预测”的简化版。实际业务中这套模型会被应用到经纪人端,用来辅助决策“哪些房源需要重点推、哪些定价可能有问题”,同时也会进入C端APP,作为“推荐热门房源”的排序因子之一。
拿到题目后第一步不是急着写特征,而是先明确业务目标:我们不是要预测这套房子最终能不能卖掉(那可能是3个月甚至1年后的事),而是要预测“未来7天内成交的概率”。这个目标定义决定了后续所有正负样本的切分方式——把“7天内成交”记为1,把“7天内未成交”记为0,并且所有特征只能使用“挂牌时点”之前已经产生的信息,不能引入任何未来数据,否则就是典型的数据泄露(Data Leakage),模型在离线测试时很漂亮,上线就直接废掉。
4.2 特征工程与模型选型的完整建模过程
基于题目的字段,我的特征方案分为五组:
第一组,房源静态属性。面积、户型编码、朝向独热编码、所在楼层(低/中/高分段)、楼龄。这些特征反映的是房源本身的“硬条件”,在逻辑回归里系数方向要符合直觉:面积在合理范围内越大越有吸引力、楼龄越新成交越快。
第二组,定价合理性特征。这是整个方案里最重要的一组,我不会直接用“挂牌价”这个原始字段,而是构造挂牌价比率= 挂牌价 / 同小区近期成交均价。这个比率大于1说明业主挂高了,小于1说明有性价比。在贝壳内部这套逻辑被称为“价格偏离开力场”,偏离度越大,成交周期越长。
第三组,需求热度特征。近30天看房次数、近7天新增看房次数、收藏数、关注用户数。这些是“人气”的直接体现,和成交概率强相关。需要提醒的是,这些字段需要按照时间窗口聚合,窗口大小本身也要作为超参数去调,不能拍脑袋定7天或30天。
第四组,业主行为特征。近30天调价次数、降价次数、降价幅度、挂牌后是否修改过房源描述。业主频繁调价(尤其是降价)说明急于出手,是强烈的成交信号。
第五组,小区环境特征。小区成交均价、成交量、成交周期均值、小区在售房源总数。这一组是“大盘水位”,用来控制不同小区之间的差异。
模型选型我建议写XGBoost或LightGBM为主模型,逻辑回归作为baseline对照。理由有三条:一是表格数据上梯度提升树几乎没有对手,二是自带处理缺失值能力,三是特征重要度可以天然支持业务解释。逻辑回归虽然效果可能不如GBDT,但它可解释性强,适合作为上线前的合规性验证模型。在这类笔试题里,你只要能写出“基于树的模型擅长捕捉非线性关系,且对异常值鲁棒;逻辑回归作为强解释性baseline用于对比公平性”,就能拿到大部分的分数。
训练流程上,我按照80/20切分训练集和测试集,并在训练集内部做5折交叉验证。评估指标选用PR-AUC为主,兼顾F1-score,因为7天成交率本身很低,只盯AUC容易被负样本量迷惑。
一个实操细节是:GBDT类模型训练前不需要对特征做标准化,但需要把类别特征做标签编码处理。如果你选了LightGBM,可以直接指定categorical_feature参数,让模型内部处理类别特征,比手动编码效果更稳。这个细节写进试卷答案里,会显得你真的在工程上摸过这些模型。
4.3 模型上线后的监控方案与常见坑
有经验的面试官看这个题,最后看的不是模型效果,而是你有没有线上监控意识。试卷给的空白处很多,但多数人只写“上线后用A/B测试验证效果”,这太单薄了。我要强调两件事:
第一,离线在线一致性监控(线上线下一致性)。训练时用的特征分布和线上实时算出来的特征分布如果出现偏差,模型效果会迅速衰减。比如小区成交均价这个特征,离线用的是截止到某个时间点的历史均值,线上实时计算的时候如果用了包含未来的数据,特征分布整体就会偏移。这种bug在行业里特别常见,监控方式就是每天对比线上特征均值和离线训练特征均值,设置一个漂移阈值,超阈值就告警。
第二,模型效果退化监控。用**PSI(人群稳定性指数)**监控预测分数的分布是否随时间发生显著变化,同时每日计算线上真实成交率与模型预测概率的校准度(Calibration)。如果监控到模型预测分整体偏高但实际成交率没有上升,说明模型需要重新训练了。在房产这种周期性很强的行业,市场转冷时3个月前的模型就很可能失效。
这两点如果能写在综合题里,你的答案会自然比那些只写“A/B测试”的考生高一档,因为这体现的是真实的工程闭环思维。
5. 常见问题与考查陷阱速查表
整张试卷做下来,我总结出以下常见问题和命题陷阱,你们复习时对着这一节自查就可以了。
5.1 概念辨析类陷阱
| 陷阱考点 | 错误认识 | 正确理解 |
|---|---|---|
| L1 vs L2正则 | L1和L2都只能防止过拟合 | L1有特征选择能力,L2更平滑但不会把权重压成0 |
| 精确率 vs 准确率 | 两者可以混用 | 精确率是“预测为正的里面有多少是对的”,准确率是“整体预测对的比例”,在不均衡场景下精确率更关键 |
| Bagging vs Boosting | 都是集成学习,没区别 | Bagging降低方差,Boosting降低偏差;随机森林是Bagging,GBDT/XGBoost是Boosting |
| 归一化 vs 标准化 | 两者是同一件事 | 归一化是缩放到[0,1],标准化是转为均值为0方差为1,两者适用模型不同 |
| 欠拟合 vs 过拟合 | 只看训练集表现 | 判断标准是训练集和验证集的相对表现,两者差距过大才是过拟合 |
5.2 业务场景类陷阱
这套卷子里的陷阱题特别喜欢“看起来很有道理”。比如有一道选择题问“下列哪个做法能提升成交预测模型的区分度”,选项是:A. 删除缺失值较多的特征;B. 新增业主是否调价的特征;C. 增加训练集里的负样本量;D. 把所有特征做标准化。
很多人看到A就选,但实际答案是B。原因很简单:删除缺失值较多的特征也许能减少噪声,但也丢失了信息,不一定提升区分度;业主是否调价是直接的行为信号,表征求购逼切程度,与成交概率高度相关,从业务逻辑上就能感受到强区分度。这类题本质考的不是技术知识,而是你对业务特征的“直觉灵敏度”。建议刷题时多问自己一句:“这个特征在业务上是不是直接指向我的目标?”如果是,那就是强特征。
5.3 实操场景类陷阱
还有一道题问“在构建二手房价评估模型时,以下哪一项会造成数据泄露”。很多人选了“加入了附近学校的口碑评分”,但正确的答案往往是**“加入了该房源成交后的实际成交价格作为特征”**。如果模型输入里包含了未来才产生的成交价字段,那就等于开了天眼,离线效果再好也没用,上线直接崩。
复习数据泄露时,你只需守住一条原则:建模时用的所有特征必须在预测时点上是“已知”的。凡是能从未来“带回来”的信息,都是泄露。这条原则不仅笔试用得上,真实项目里也是最容易犯的错,我见过太多新人在特征表里join了一张包含未来数据的表,导致上线后模型效果拦腰斩。
6. 复习路线与备考策略建议
如果你正在准备贝壳或者其他互联网公司数据挖掘/机器学习岗位的春招,我建议按下面这个顺序安排复习计划。
第一阶段(基础巩固,2周),重点过一遍李航的《统计学习方法》前八章,以及周志华《机器学习》的模型评估、线性模型、决策树、支持向量机、集成学习这些核心章节。数学推到什么程度?至少能手推逻辑回归的梯度更新公式、朴素贝叶斯的后验概率推导、SVM的对偶问题转换。别看这是基础,贝壳这类公司笔试时就是喜欢在细节上出题,你以为你懂了,一推导就露馅。
第二阶段(业务特征工程专项,1周),把典型业务场景的特征工程做一遍专项归纳。衣食住行里,“住”是最复杂的一块,因为房地产市场是低频、高值、区域性强的交易,样本量天然有限,特征噪声大。你需要掌握的核心能力是“从交易行为序列里提取有效信息”,这在贝壳这类公司比模型本身更受重视。推荐去Kaggle上找几个房价预测项目做一遍,熟悉真实数据中的缺失值分布、异常点形态和时间特征处理。
第三阶段(真题刷练与SQL补强,1周),每天做一套互联网公司数据挖掘岗真题,做完后整理错题。这个阶段不要只刷贝壳,链家之前也叫链家,行业类似,其他如美团、滴滴、携程的偏业务类数据挖掘题目也有很强的参考价值。SQL天天练,窗口函数(ROW_NUMBER、RANK、LAG/LEAD)必须烂熟于心,因为综合题里最后往往需要你写一段SQL去取数。
第四阶段(综合模拟与复盘,考前3天),把自己的简历项目重新梳理一遍,重点准备“项目遇到的最大挑战是什么,怎么解决的”这类开放型问题。这套试卷的风格决定了它不太可能只考你知识点,大概率还会结合简历深挖项目细节,如果你简历里写了“做过用户流失预测”,那你至少要能回答出来:正样本定义是什么、类别不平衡怎么处理、用了哪些特征、AUC是多少、上线后怎么监控的。
7. 写在最后:数据挖掘工程师的底层能力模型
刷完这套试卷,我最大的感受是:贝壳找房的春招笔试题不是用来筛选“谁背的书多”,而是用来筛选“谁真的能上手干活”。在业务驱动型公司,数据挖掘工程师的核心竞争力是三层结构的:底层是扎实的机器学习理论基础,中层是面对脏数据时的工程处理能力,顶层是对业务场景的理解深度。
很多人校招时拼命刷算法题,结果到综合案例题这种考察业务理解的环节反而没话可说,这是很可惜的事情。数据挖掘这个岗位,归根到底解决的是“用数据驱动业务决策”的问题,你算法再炫,如果分析的结果没法帮助业务方做判断,那在公司里的价值就大打折扣。
从备考角度看,我的建议是:复习知识点的时候,每学一个算法,都顺手想一想“这个算法在二手房交易场景里可以用来做什么”。比如K近邻可以做相似房源推荐,聚类可以做客群分群,逻辑回归可以做成交概率预测,时间序列模型可以做房价趋势预测。带着应用视角去学,不仅笔试能答好,面试时面对“你对我们业务有什么理解”这类问题,你也能聊得比别人深。
最后分享一下我做这套题时的个人经验:拿到卷子,先花三分钟把每一道大题的分值和考点快速扫一遍,然后在草稿纸上列出综合案例题的结构提纲,再去逐题作答。这样能保证你最擅长的部分不会因为时间不够而失分。数据挖掘笔试拼的从来不是“我什么都会”,而是“我会的都能正常发挥出来”,这个心态比多刷十道题都管用。