尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

招行信用卡中心数据挖掘秋招笔试全解析:题型、考点与备考策略

招行信用卡中心数据挖掘秋招笔试全解析:题型、考点与备考策略 作为一个经历过2019年招商银行信用卡中心秋招IT笔试数据挖掘方向第三批的人我想把这场笔试的完整经历、题型分布、考察重点和备考思路沉淀下来。当时我在牛客网刷了不少面经发现数据挖掘方向的信息少而零散大多是考了SQL考了机器学习基础这种模糊描述真正把题目类型、考察深度和解题链路讲透的几乎没有。所以我写下这篇给后面投递招行信用卡中心数据挖掘岗的同学一份尽量详细的参考。同时银行类金融机构的数据挖掘岗笔试和互联网大厂有明显差异我也会把这些差异点一并拆解清楚。1. 笔试入口与整体基调为什么说这场笔试比想象中正统招行信用卡中心的秋招流程一般是网申、在线笔试、面试。数据挖掘方向的笔试属于IT序列但和纯后端开发、算法工程师的笔试不完全一样。第三批笔试的时间大概在10月中下旬形式是牛客网在线笔试双机位监控全程不允许切屏切屏超过一定次数会被系统记录甚至判违规。整体基调可以用一句话概括考察面宽、深度适中、金融色彩浓。不像互联网大厂那样动辄Hard级别的算法题也不是纯粹的选择题堆砌而是客观题 主观题 编程题的组合每个模块都在有意筛选具备金融业务理解能力的数据挖掘候选人。这一点在后面的具体题目分析中会反复体现。笔试时长我记得是90分钟到120分钟这个区间题量不算小时间压力是存在的。我当时的策略是先通览后攻坚拿到试卷后先花2分钟把所有题目扫一遍大致判断哪些题是送分题、哪些题需要计算、哪些题需要写代码然后按性价比排序作答。这个策略帮我避免了一个常见问题——在前面分值不高的客观题上纠结太久导致后面的编程题时间不够。需要特别提醒的是招行信用卡中心的笔试系统对编程题的输入输出格式要求很严格尤其是Python和SQL。SQL题不是让你写个大概而是要求能在本地环境跑通、通过给定的测试用例。所以平时练习尽量不要只在草稿纸上写要真刀真枪在编辑器里跑。2. 客观题考点分布机器学习、概率统计与业务理解的三角结构客观题在这份试卷中占了相当大的比重我记得大概有30道左右包括单选、多选和判断。考点分布可以归纳为三个支柱机器学习基础、概率统计、业务理解与常识。这个三角结构基本代表了银行系数据挖掘岗位的底层要求。2.1 机器学习基础重点不是模型调参而是原理边界机器学习相关的题目大约占了客观题的40%考察的知识点包括逻辑回归的损失函数形式以及为什么用交叉熵而不是均方误差决策树的特征选择指标信息增益、信息增益率、基尼指数分别对应哪几种算法SVM的核函数选择以及软间隔中惩罚参数C的作用方向随机森林和GBDT的区别重点是Bagging和Boosting的思想差异K-Means算法的收敛条件以及K值选取的常用方法肘部法则、轮廓系数过拟合的常见解决方案L1正则和L2正则的区别这里有一个值得展开的点逻辑回归为什么用交叉熵而不用均方误差。我在笔试中遇到的不只是记住结论而是会问如果用MSE训练逻辑回归梯度下降会有什么问题。答案是逻辑回归的预测值是经过Sigmoid变换的如果使用MSE损失函数关于参数的梯度表达式中会出现Sigmoid的导数项当预测值接近0或1时Sigmoid的导数趋近于0导致梯度消失训练速度变得极慢。而交叉熵损失配合Sigmoid梯度表达式中不会出现Sigmoid导数项梯度更新更平稳。在备考时我不建议死记结论而是最好亲手推导一遍梯度表达式很多类似的题目都能迎刃而解。关于决策树的三个指标笔试中常见的变形题是给一组数据让你手工计算信息增益或基尼指数并判断特征选择的顺序。这种题考察的不是你知道有这三个指标而是你真的理解这三个指标的计算逻辑。手工计算基尼指数时要注意加权平均的处理即按特征取值划分后以每个子集的样本占比为权重对各子集的基尼系数进行加权求和然后选择加权基尼系数最小的特征作为划分特征。2.2 概率统计贝叶斯公式和假设检验是高分关键概率统计是银行系笔试的必考板块考点非常集中条件概率、贝叶斯公式、期望与方差的性质、常见分布正态分布、二项分布、泊松分布、假设检验的基本概念、置信区间的含义。我印象最深的是一道关于信用卡风控场景的贝叶斯题大意是某风控模型预测用户为坏客户的准确率是95%误报率是5%而实际坏客户占比只有2%问如果模型预测某个用户是坏客户那么这个用户真的是坏客户的概率是多少。这道题本质上是贝叶斯公式的直接应用。设A为用户真的是坏客户B为模型预测为坏客户则P(A|B) P(B|A) × P(A) / [P(B|A) × P(A) P(B|¬A) × P(¬A)]代入数据0.95 × 0.02 / (0.95 × 0.02 0.05 × 0.98) ≈ 0.019 / (0.019 0.049) ≈ 0.279也就是说即使模型的准确率高达95%由于坏客户占比只有2%模型预测为坏客户的案例中真正是坏客户的概率也只有约28%。这道题考察的不只是公式记忆更是对先验概率和后验概率关系的直觉理解这也直接关联金融风控场景中模型精确率Precision偏低这一常见现象的理解。在业务落地时模型输出的概率分数往往不能直接作为最终决策依据需要结合人工审核或策略规则做二次确认。实话说这类题如果在考场上一紧张很容易算错。我的建议是考前把贝叶斯公式的推导过程、全概率公式的展开方式写一遍尤其是把误报率和假阳性率这些术语和数学符号对应起来不能在考场上现想。假设检验的考点主要在第一类错误和第二类错误的含义以及置信区间的解读。比如95%置信区间的正确理解是如果重复采样100次并构造100个置信区间大约有95个区间包含总体参数的真值而不是总体参数有95%的概率落在该区间内。这种表述差异在判断题里经常出现需要仔细辨别。2.3 SQL与数据库银行场景下的SQL考察远超预期如果你觉得数据挖掘岗笔试的SQL只是会基本查询就行那这场笔试会改变你的认知。SQL题占了客观题的约30%而且主观题里也有一道大题是SQL。考试范围包括多表连接INNER JOIN、LEFT JOIN、RIGHT JOIN的区别以及NULL值的处理GROUP BY与HAVING的组合使用以及聚合函数的执行顺序子查询的写法尤其是EXISTS和IN的区别窗口函数ROW_NUMBER、RANK、DENSE_RANK、SUM OVER的基本用法日期函数的处理DATE_FORMAT、DATE_ADD、DATEDIFF去重与计数DISTINCT和COUNT的组合银行信用卡业务中最典型的需求就是统计每个客户近三个月的消费总金额筛选最近30天有多次还款逾期的客户计算各账单日的应还款总额等。这些需求本质上考察的都是GROUP BY 窗口函数 日期函数的三件套组合。我在备考时把牛客网SQL题库的中等难度题目刷了一遍基本覆盖了这些考点进考场后看到SQL题心里就有底了。窗口函数是笔试中的高频考点。有一道题我记得很清楚给了一张交易流水表要求按客户ID分组找出每个客户消费金额最高的前3条记录。这道题最简单的做法就是用窗口函数SELECT * FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY amount DESC) AS rn FROM transaction_record ) t WHERE t.rn 3如果不使用窗口函数用自连接或关联子查询也能做但写法会复杂很多而且容易出错。备考时一定把窗口函数的语法熟练掌握尤其是PARTITION BY和ORDER BY在窗口函数中的作用差异。2.4 业务理解与金融常识容易被忽视的隐形分水岭招行信用卡中心的笔试中还有一部分题目纯粹考察候选人对金融业务的理解比如信用卡账单日与还款日的区别、最低还款额的计算逻辑、信用卡年费减免政策、征信报告的查询记录类型、以及常见的风控术语多头借贷、共债风险、额度使用率等。这类题目对于有金融背景的候选人来说基本是送分题但对于纯计算机背景、没接触过金融业务的候选人来说可能就会感到意外。我当时备考时专门花了一个晚上看招行信用卡官网的产品介绍、费用说明和常见问题还大致翻了一下《商业银行信用卡业务监督管理办法》中关于信息披露的条款这些内容在笔试中确实有体现。其实不只是为了应付笔试面试环节的业务问题也经常会围绕这些展开提前了解金融机构和数据挖掘业务的结合点对后续面试也有帮助。我印象比较深的一道题是信用卡最低还款额通常包含哪些组成部分选项包括消费本金的10%、利息、费用、预借现金本金等。这道题的答案是以上都是看起来简单但需要你真正理解信用卡的还款逻辑而不是死记硬背。3. 主观题与编程题从特征工程到代码落地主观题部分是这套试卷区分度最高的模块大概有3到4道大题包括1到2道简答题、1道SQL题、1道编程题。这一部分的答题质量基本决定了你是否能进入面试环节。3.1 简答题特征工程与风控模型的设计思路简答题的典型问法是如何评估一个信用卡申请反欺诈模型的效果或者如何从用户的历史消费数据中构造特征来预测用户流失。这类题目没有标准答案但考察的是你有没有完整的建模思路。我当时的答法是按业务理解 - 数据清洗 - 特征构造 - 模型选择 - 评估验证的逻辑链展开。以预测用户流失为例我列出的特征维度包括消费维度近1个月消费金额、消费频次、消费金额的环比变化率、消费时间段的分布工作日/节假日还款维度还款是否及时、最低还款占比、分期使用频率活跃度维度APP登录频次、优惠券使用率、客服电话进线频次交叉特征消费频次与还款及时率的交互、额度使用率与分期行为的组合回答这类问题时要特别注意可解释性。银行系的数据挖掘和互联网推荐系统不一样模型的决策往往直接影响用户的信贷额度和资金安全所以监管要求和业务方都希望模型能解释为什么给出这个预测。即使问题没有明确问可解释性我也会在答法中加入一句在模型选型时会优先考虑逻辑回归或GBDT这类能输出特征重要度的模型并结合SHAP值做事后解释这会让答案更贴近金融场景的实际需求。关于如何评估反欺诈模型这道题我踩过一个坑就是一开始只写了准确率Accuracy。实际上在欺诈场景中正负样本比例可能严重失衡欺诈样本往往远少于正常样本准确率会失真。正确思路是关注精确率Precision、召回率Recall、F1-Score、AUC、KS值以及在不同阈值下的混淆矩阵变化还要考虑业务上更看重哪种错误——是更怕把好客户误判为欺诈影响用户体验和投诉率还是更怕漏掉真正的欺诈造成资金损失。这个权衡过程本身就是业务理解的一部分。3.2 SQL大题账单日与还款日的业务查询SQL大题的场景是信用卡账单查询表结构包括客户信息表客户ID、姓名、账单日、还款日、消费流水表流水ID、客户ID、消费日期、消费金额、商户类型、还款流水表还款ID、客户ID、还款日期、还款金额。题目要求大概是统计每个客户2019年9月的消费总金额和消费笔数找出2019年9月消费金额超过5000元的客户中还款日期晚于到期还款日的人数计算每个客户的额度使用率近6个月消费总额 / 授信额度这些题目难度并不大但很考验SQL基本功的熟练度尤其是日期函数的处理。第2题我在考场上的写法是先用子查询筛选出9月消费超过5000元的客户再关联还款流水表用DATEDIFF判断还款日期和到期还款日的关系。这类题在牛客网的SQL题库里几乎都有类似的练习题只要平时练过考场上就不会卡壳。3.3 编程题在有限时间内完成一道可运行的代码题编程题部分招行信用卡中心的笔试并没有选择LeetCode那种Hard级别的算法题而是更偏向工程实现和数据拟合类题目。我抽到的题目大意是给定一个数据集CSV格式包含若干特征列和一个目标列要求用Python实现一个简单的逻辑回归模型训练与预测并输出验证集上的AUC值。这道题的时间压力较大因为需要在本地环境或牛客网在线环境里完成代码编写、调试和结果验证。我当时的解法是用numpy手写逻辑回归的梯度下降矩阵运算的写法大概是import numpy as np def sigmoid(z): return 1.0 / (1.0 np.exp(-z)) def train(X, y, lr0.01, epochs1000): m, n X.shape theta np.zeros(n) for _ in range(epochs): z np.dot(X, theta) h sigmoid(z) gradient np.dot(X.T, h - y) / m theta - lr * gradient return theta如果用sklearn的LogisticRegression直接训练代码更少但考试环境不一定预装了sklearn所以平时养成用numpy实现基础算法的习惯非常有必要。就算考试环境允许第三方库手写一个简单版本在面试官眼里也会是一个加分项因为这代表你理解算法的底层逻辑而不只是会调包。这类编程题的核心考察点是在有限时间内写出可运行、结果正确的代码。我的踩坑经验是不要一上来就做复杂的数据预处理先把核心训练和预测流程跑通提交一个能出结果的基础版本再在剩余时间里做优化。毕竟这类在线判题系统的评分依据是测试用例的输出哪怕你代码写得再华丽最终没有跑通任何用例得分依然是零。4. 时间分配与考场实战三道必拿分的顺序优化整场笔试的时间压力和题目间的分值权重决定了你不能采用从头做到尾的线性策略。我在考场上实际执行的时间分配方案如下模块题量参考建议用时策略说明客观题选择/判断约30题30~35分钟快做会的立刻选不确定但能排除一个选项的标记后跳过简答题1~2题15分钟按条理答尽量分点不展开长篇大论SQL题1~2题20分钟先写框架再补细节确保每一条都能跑通编程题1题20~25分钟先跑通基础版本再考虑优化检查与补漏-5~10分钟只检查标记过的题不在难题上恋战这个方案的逻辑很直接客观题是性价比最高的模块做得快还能建立信心简答题按点给分分点作答效率最高SQL题和编程题是区分度最高的模块也是面试官最关注的要保证至少有一种能跑通的版本。我在考场上的一个重要经验是千万不要在一道选择题上纠结超过2分钟。我遇到过一道关于P值检验的选择题选项设置得很绕我花了好几分钟推演最后还不确定。回头看完全没必要这道题最多1分但耽误的时间足以让后面分值更高的编程题变得仓促。遇到这种题标记一下用直觉选一个相对合理的选项果断跳过。另外注意多选题的策略多选、少选、错选通常都不得分但如果题目明确说明少选得部分分那么拿不准的选项就不要选保底拿部分分。银行类在线笔试中这种计分规则比较常见做题前仔细看题干的说明。还有一个细节牛客网的系统支持本地IDE调试代码但编程题的输入输出经常需要自己处理尤其是输入格式可能有多行、多测试用例的情况。我有一个教训是有一次做题时没考虑多组测试用例的输入循环只处理了一组数据就提交结果只过了部分用例。所以在写任何在线编程题时习惯性地用while True配合try...except处理输入是一个保命的操作习惯。5. 从笔试到面试你需要在答题时预埋的信号很多人以为笔试就是做题-交卷-等结果考完就抛在脑后了。但我在实际经历中发现笔试的答题内容在面试环节往往会被翻出来追问。这种情况在招行信用卡中心的面试中相当常见面试官手里很可能有你的笔试卷子或至少看到了你的答题记录然后根据你的回答往下挖。因此笔试答题时就要有这份答案将来要能经得起追问的意识。简答题中你写了用SHAP值做特征解释那面试前最好把SHAP的原理、优缺点、在决策树模型和线性模型中的不同表现搞清楚。SQL题你写了窗口函数面试官可能会问窗口函数和GROUP BY的区别是什么如果数据量很大窗口函数会不会性能差。编程题你手写了梯度下降那关于学习率怎么调特征要不要标准化为什么逻辑回归要做特征标准化这类问题也要能答得上来。我在那次面试中就被问到一道笔试相关的问题你在笔试里写了评估反欺诈模型要看AUC和KS值这两个指标有什么区别各自在什么情况下更适用这个问题的完整答案是AUC衡量模型对所有可能阈值下的整体排序能力KS值衡量正负样本累积分布的最大差距两者都是阈值无关指标但AUC是全局性的KS关注的是最大区分点。在实际风控应用中KS值和AUC经常一起看但KS对阈值的选择更有指导意义而AUC更稳定。如果笔试时只是照搬常见答案而没有真正理解这些概念面试中就容易卡壳。还有一个在笔试中逐步建立起来的认识是银行系数据挖掘岗的面试非常看重概率思维。他们对候选人的数学基础有执念面试中很可能继续追问线性代数、概率论的基础知识而不是只聊项目经历。所以从笔试备考阶段开始就不要只看机器学习模型的调用方法要把背后的数学逻辑一并梳理清楚。6. 备考清单与方向建议如果让我重新准备一次结合我自己的笔试经历和后来的一些复盘如果让我重新准备招行信用卡中心数据挖掘岗的笔试我会按下面的时间线和任务清单来做基础阶段考前3~4周把机器学习常用模型的原理推导过一遍重点包括逻辑回归损失函数、梯度推导、正则化、决策树三种特征选择指标的计算方式、朴素贝叶斯先验和后验的关系、K-Means收敛性和K值选择系统刷SQL题重点覆盖聚合查询、多表连接、窗口函数、日期函数四类题型保证中等难度题目不卡壳复习概率统计基础尤其是贝叶斯公式、期望方差性质、常见分布、置信区间和假设检验强化阶段考前2周每周至少完成一次限时整套模拟题用牛客网的银行历年真题或相似难度的套题练习训练时间分配能力针对金融业务场景主动收集信用卡相关的业务知识包括账单日、还款日、最低还款额、循环利息、年费政策、征信报告内容等把常用算法的numpy实现手写一遍逻辑回归、K-Means、决策树确保在没有第三方库的环境中也能快速写出可运行代码冲刺阶段考前3~5天不再做新题只看错题笔记和公式卡片把SQL窗口函数的各类用法和场景再过一遍尤其是RANK、DENSE_RANK、ROW_NUMBER三个排序函数的差异准备一道完整的特征工程 模型评估问答模板能用自己的话讲清楚逻辑而不是背模板关于备考资料我没有用太多高深的内容主要就是三类机器学习基础李航的《统计学习方法》配合南瓜书补充推导、牛客网的SQL题库和部分Python编程题、以及招行信用卡官网的业务介绍页面。把这三样吃透对付这场笔试基本够用。最后说一个贯穿整个备考过程的心态调整。秋招季的焦虑几乎是普遍存在的但越焦虑越容易陷入广撒网却每个都不深入的低效备考。我当时给自己定了一个原则每天只深度攻克一个核心知识点比如今天把逻辑回归的推导和损失函数的性质彻底搞懂明天专门刷窗口函数的10道题。这种单点突破的方式比每天泛泛地刷50道题更有效因为在笔试中最容易拉开差距的恰恰是对核心概念的深层理解而不是做题数量。招行信用卡中心的数据挖掘笔试整体上是一场广而不深的考试它不像互联网大厂那样追求极限的算法能力而是更在意你是否具备扎实的数学基础、熟练的SQL能力、清晰的特征工程思路以及基本的金融业务感知。如果你能把上述几个板块都准备到位进面试的概率会相当大。希望这篇复盘能帮你少走一些弯路。
返回列表