资讯动态

招商银行信用卡中心AI岗笔试复盘:机器学习与编程备考全攻略

发布时间:2026/8/29 7:47:53 来源:尧图企业网站定制
身边好几个朋友都在备战银行系的IT岗位秋招正好有读者问起招商银行信用卡中心AI方向的笔试经验。这个时间点聊这个其实挺应景的——虽然招商银行信用卡中心2019秋招早就结束了但银行系AI岗位的笔试风格、考察侧重这几年来一直是稳中带变的对2020届甚至之后的应届生都有很高参考价值。我当时参加的就是2019秋招IT笔试AI方向第一批考完之后花了很长时间复盘把题目背后真正想考察的东西捋了一遍。这篇文章就把我当时踩的坑、总结的规律、复盘出来的备考思路一次性讲清楚想投银行系AI岗的读者可以少走不少弯路。1. 为什么信用卡中心要单设AI方向的IT笔试先说个很多应届生没想明白的问题招商银行信用卡中心本质是零售金融的核心利润部门它招AI方向的人到底回去做什么如果你以为像互联网大厂那样招过去做推荐系统、做内容分发那就理解偏了。银行系AI岗的落点非常具体信用卡中心的AI需求集中在反欺诈识别、额度决策、客户流失预警、智能客服、营销响应预测这几个方向核心是风控和精细化运营。2020届秋招我投递的时候正好赶上招行信用卡中心把AI方向从统一的IT岗里拆出来单独筛选。第一批笔试其实带有试点性质题量不算大但覆盖面很有代表性。后来我和几个进面试的同学交流大家一致的感受是这套笔试没有刻意去卡人但它筛的是底盘而不是花活。也就是说它不考特别冷门的模型和最新论文而是考你对机器学习基础概念的掌握扎不扎实、对数学原理的理解透不透彻、以及能不能用代码把算法落地。这个定位决定了一个很重要的备考策略不要闷头刷竞赛题不要花太多时间研究最新顶会模型而是把经典算法、损失函数、评估指标、数学推导这四块理解到位。银行系笔试的出题人通常不是算法Leader而是业务团队和HR共同参与的它们的题源往往来自历年校招题库和内部培训材料所以考察风格偏保守、稳定。另一个容易被忽略的点这类笔试是海选工具不是区分度工具。在最初的简历筛完之后笔试的核心作用是把基础明显不过关的人挡在门外所以通过线不会定得太吓人。但正因为如此你不能有短板——选择题考的是知识广度编程题考的是基本功任何一块明显拉胯都可能导致整体分数被拖出线。2. 第一批笔试的题型分布与整体节奏复盘我当时是在线笔试用的是牛客网的系统整个考试时长120分钟。收到通知的邮件里写了三个模块实际进入系统之后才发现题量比预想中紧凑很多。我把整体结构列出来想投类似岗位的同学可以直接参考这个框架去准备。模块题量建议用时考察内容机器学习与深度学习基础25题约50分钟概念、原理、推导计算数学基础15题约25分钟概率统计、线性代数、微积分编程题3题约45分钟数据结构、算法、代码实现从题型上看第一模块全是单选题偶尔会有一两道多选题混在里面题目描述比较直接基本没有脑筋急转弯式的干扰项但有个特点选项之间的差异很细微。比如一道题问你L2正则化与其说等同于多少的权重衰减四个选项除了系数数值对不上还有把权重衰减写成梯度衰减的干扰项。这类题不求你背公式但要求你真的理解公式里每个符号在干什么。数学基础模块反而是我印象最深的部分。很多人习惯性地认为银行系笔试数学不会太难但实际上15道题里有将近一半是概率题而且计算量不小。比如有一道题给了两个高斯分布的均值和方差让你求两个分布的KL散度这不是光记公式就能快速做出来的需要现场推导。还有一道题是已知P(A|B)、P(B)和P(A|非B)求P(B|A)考的就是贝叶斯公式的现场应用选项里给的是两个分数形式的干扰项粗心容易算错。编程题部分有三道整体难度不算高和互联网大厂校招笔试动辄Hard级别相比这套题更接近LeetCode中等偏下的水平。但有个细节值得注意题目描述里的业务背景占了很大篇幅像是信用卡客户在某段时间内的交易金额数组需要统计连续N天消费超过阈值的客户这类场景化描述卷入了大量信息干扰。我一开始没意识到这其实是在考阅读能力和信息抽取能力。时间节奏方面我当时犯了个小错误在一个多选的机器学习题上纠结了差不多8分钟导致后面编程题的时间被压缩。复盘时发现这道题即使完全不会跳过也就损失一道题的分编程题如果因为时间不够没写完损失就大得多。后来我给身边同学的建议是选择题单题超过2分钟果断标记跳过先把所有会做的题做完再回头研究不确定的题目。3. 机器学习与深度学习选择题的考点切片第一模块的25道题我按知识点做了分类梳理下来发现出题人的偏好非常集中哪些知识点反复出、哪些几乎不碰一目了然。先说反复出现的过拟合与正则化、偏差方差权衡、损失函数性质、常见优化器对比、集成学习基础、CNN的感受野与参数计算、RNN的梯度问题。正则化是必考的我当时遇到的一道题是这样的L1正则化和L2正则化同时用于线性回归下列说法正确的是A选了L1使部分权重变为0可做特征选择B选了L2使所有权重都变为0C选了两者都会使权重变为0D选了两者都不会。这道题本质上是考L1和L2在最优解处的几何性质但出题人把它的特征选择用途也融合进来了。正确的是A。L1的正则项在零点不可导最优解往往落在某个坐标轴上导致一部分权重严格为0这个几何直觉如果你只看公式不画图是体会不到的。偏差方差那题更有意思场景是同一个模型在训练集上的准确率从95%降到90%在验证集上的准确率从85%升到88%这说明什么。很多人一看训练集准确率下降就觉得是欠拟合但验证集准确率提升了说明泛化能力变强了这个现象更接近正则化强度增加的结果——训练集上稍微让步换来了验证集的提升。我在考场上做这题时想到了《机器学习》里的学习曲线也想到bias-variance的权衡曲线最后是靠验证集上升说明方差降低这个逻辑判断出来的。损失函数考了一个交叉熵在多分类任务里的梯度形式选择题里直接给了四个候选梯度表达式然后问你哪个是反向传播时第k类的梯度。这个题考察的是softmaxcross entropy的推导结果答案是预测概率减真实one-hot标签。如果没有亲手推导过softmax的梯度这个题就只能凭感觉猜。我的建议是准备这类笔试前把逻辑回归的损失函数、softmax的梯度推导、交叉熵和KL散度的关系这三个推导自己动手过一遍推导完你会发现大量选择题都能秒杀。优化器的对比考了Adam和SGD的区别。选项里有Adam适合稀疏梯度SGD需要手动调整学习率这个表述我选了它作为正确项。其实Adam确实因为一阶矩和二阶矩的偏置校正在稀疏梯度场景下表现稳定而SGD对学习率敏感需要配合学习率衰减策略。这道题不算难但能从侧面反映出笔试对模型训练实操知识的要求。集成学习那题是一个概念辨析题随机森林是基于Bagging的集成方法XGBoost是基于Boosting的集成方法问下列哪个说法正确。考点就是Bagging降低方差、Boosting降低偏差这个核心原理。如果只是知道这两种算法的名字而不知道它们的统计本质这道题很容易选错。出题人把选项写得很有迷惑性比如随机森林是串行训练、XGBoost是并行训练这刚好是反的专门等着基础不牢的人往里跳。CNN参数计算那道题给了一个224x224x3的输入经过32个5x5卷积核、stride为1、padding为2问输出的feature map尺寸。套公式((W-K2P)/S)1得到((224-54)/1)1224输出是224x224x32。这道题虽然简单但我身边的考生里真有人被padding为2这里卡住了说明基础概念不熟。我的经验是CNN的三个核心公式——卷积输出尺寸、感受野计算、参数量计算——建议考前自己推一遍考场上直接用不要现算。RNN那道题考的是梯度消失的根本原因选项里有网络层数太深、使用的是sigmoid激活函数导致梯度连乘、学习率太大、数据集太小。正确项是sigmoid之类的饱和激活函数导致梯度连乘后趋于0。我在复习阶段专门搜过这个点知道这其实涉及两个层面一是反向传播时梯度在时间步上连乘二是sigmoid导数的最大值只有0.25这两点叠加才导致RNN梯度消失。出题人的选项只考了后者但你在考场外把两个层面都理解透考试时才不会慌。4. 数学基础模块概率论和线代是怎么出题的数学基础这15道题很多被刷下来的同学都栽在这里。和互联网公司的笔试不太一样银行系AI笔试的数学模块不是过场而是实打实的淘汰项。我的感受是它更接近考研数学一里概率统计和线性代数的风格但做了AI场景化包装。贝叶斯公式那道题我记得很清楚题目大意是某信用卡交易被标记为欺诈的可疑度为0.9整个交易池的真实欺诈率为0.1%模型在欺诈交易上报警率为99%在正常交易上误报率为1%求当模型报警时这笔交易确实欺诈的概率。这是一个标准的贝叶斯公式应用题P(欺诈|报警)P(报警|欺诈)P(欺诈)/P(报警)0.990.001/(0.990.0010.01*0.999)约等于0.09。说实话这道题的计算量不大但它把准确率99%的模型在极不平衡的数据集上做预测时预测为欺诈的可信度其实只有9%这个反直觉的结论展现得淋漓尽致。我考场上做这道题时心里咯噔了一下——这哪是在考数学这分明是在暗示之后面试可能会问风控场景的类别不平衡问题。还有一道特征值相关的题给定一个2x2矩阵要求判断它的特征值和特征向量是否正交选项里涉及了对称矩阵特征向量必定正交这个性质。题目本身不难但它顺着PCA主成分分析的知识点往里考如果你不知道PCA在做的事就是求协方差矩阵的特征值和特征向量就很难理解这道题放在AI笔试里的意义。我复盘时意识到出题人把线代知识和机器学习结合的场景主要集中在PCA、最小二乘、矩阵分解这几块复习重点应该放在这里而不是去刷偏题怪题。最大似然估计考了一道伯努利分布参数估计的题给了一组0/1观测序列求p的最大似然估计。这个计算很简单就是样本均值。但选项里出现了除以n-1的干扰项那是针对无偏估计的不是MLE。这道题提醒我一个事情最大似然估计和矩估计、无偏估计之间的边界在银行系笔试里是高频考点而且出题人非常清楚大家容易混淆的点。另一个让我印象深刻的是KL散度的计算题两个高斯分布N(0,1)和N(1,1)求前向KL散度。这里要用KL散度在两个高斯分布间的闭式解KL log(σ2/σ1) (σ1^2 (μ1-μ2)^2)/(2σ2^2) - 1/2。代入后结果是0.5。这道题我可以说是完全靠平时推导功底撑下来的因为考试时间紧张不可能临时去推公式。这也给我一个后续备考的重要信号KL散度和交叉熵的公式推导最好能练到肌肉记忆的程度因为出题人喜欢在数学模块里穿插这类有一定计算量但不超纲的题。线性代数部分还有一道矩阵可逆性的判断四个选项分别给了不同形式的矩阵让你选出不可逆的那个。这个考的是行列式为0的等价条件。其实可以快速看出有一个矩阵的两行是线性相关的行列式为0答案直接确定。我看这道题用时不到30秒为我后面概率题省下了时间这说明考前刷一刷线性代数的客观题非常有用能大幅提升做题速度。5. 三道编程题从读题到AC的完整复盘编程题是整场笔试里分数权重最高的一块也是真正能让有算法功底的人拉开差距的地方。我遇到的题目回忆中大致是这样的第一题是字符串处理题。题目大意是给定一个只包含小写字母和数字的字符串要求把所有数字字符移到字符串末尾同时保持字母和数字各自原有的相对顺序。这个问题其实可以用两个指针原地操作或者用额外的字符串存储字母部分和数字部分然后拼接。我当时选择了ArrayList收集数字字符的下标然后把非数字字符前移最后把数字字符填到末尾。复杂度O(n)。这道题的易错点是很多人会忽略保持相对顺序这个条件直接用HashMap统计数字个数然后一次性删除再追加这样顺序就会乱。另一个容易错的地方是字符串在Java里是不可变的如果直接用substring拼接很容易产生大量临时对象但笔试系统不卡性能所以问题不大。第二题是动态规划题。题目场景是信用卡客户连续消费记录给定一个数组表示每天的消费金额要求找出最长连续递增子序列的长度。这里要注意是连续递增不是子序列所以用贪心就能解一个指针遍历维护当前连续递增长度cur和最大值max遇到不满足递增就重置cur1。但如果题目写成最长递增子序列不要求连续那就得用dp加二分了。我当时在第一遍读题时差点当成不连续的子序列来解还好题干里明确写了连续两个字不然算法复杂度就从O(n)变成O(nlogn)代码复杂度也上一个台阶。这提醒我编程题的第一步永远是读清楚题目约束尤其是连续和子序列这种关键词。第三题是稍微综合一点的题。题目要求为一个交易明细数据流维护最近K天的Top N高频交易商户编号且支持两种操作新增一条交易记录包含商户编号查询当前Top N商户编号及次数。本质上是一个实时数据流TopN统计问题。如果直接用HashMap统计次数每次查询时排序复杂度是O(m log m)m为商户总数在K和N很大时会超时。我当时用了HashMap 小顶堆的结构HashMap存商户编号到次数的映射小顶堆维护当前Top N堆顶是最小次数。当某个商户次数增加时需要同步更新堆这里有个坑Java的PriorityQueue在元素更新后不会自动调整堆序所以我在更新次数后手动调用了remove和offer来重新入堆。这个操作虽然让单次更新复杂度变成O(N)但对笔试数据量来说足够。三道题整体难度不高但第二题和第三题都涉及对场景化描述的信息抽取能力。我印象最深的是这三题的题目描述都刻意写了大量业务细节真正有用的信息可能只有两句。后来我指导别人时才想明白出题人这么做是有意为之——银行系程序员日常要面对大量的业务需求文档从冗余信息中提取核心逻辑本身就是一个工作能力要求。所以如果你在考场上花太多时间在读懂业务背景上一定不要焦躁先圈出关键词再把问题抽象成已知的算法模型这道题你就赢了一半。还有一个值得说的细节笔试系统自带了本地IDE的提示但调试起来依然不太方便。如果代码里有编译错误系统只会报错行不会告诉你具体的错误原因所以平时练习时最好养成自己编译、自己看报错信息的习惯。很多人在牛客网刷题时习惯了提交后系统给case显示在笔试时一旦环境变化就会手忙脚乱这部分最好提前用模拟考试系统练几遍。6. 通过这套笔试题看银行系AI岗真正想要的人考完之后我做了很长时间的复盘思考这家机构到底想通过这些题目筛选什么样的人。表面上考的是机器学习和数学实际上它考察的是三件事基础理论的扎实程度、业务场景的阅读理解能力、代码落地的工程习惯。这三件事恰恰对应了银行系AI开发工程师的日常。先说基础理论。银行系不像互联网大厂那样有专门的算法研究团队很多人进去之后要直接面对业务部门的需求用的模型大多是LR、XGBoost、随机森林和深度学习的经典结构。如果你在笔试里连正则化、梯度消失的原因都说不清楚面试官很难相信你能在业务中灵活调参处理模型退化的问题。这套题里的机器学习选择题考的几乎全是模型的统计本质和模型失效时的诊断方向这比考一个偏门的SOTA模型要有用得多。再说业务理解。从编程题的场景描述、数学题里类别不平衡的案例可以看出出题人特别在意候选人能否把数据问题转化成业务语言。反欺诈场景是信用卡中心最核心的AI应用类不平衡、误报率、召回率这些概念不是课本上的抽象概念而是要落到客户被误判为欺诈导致卡片被冻结客户体验受损这种真实后果上的。笔试里那道贝叶斯题本质上是在考察候选人能不能理解即使在模型准确率很高的情况下在极不平衡的正负样本面前我们依然要谨慎使用模型预测结果这个业务常识。最后是代码落地的工程习惯。三道编程题没有一道是纯背模板的题反而都加了一层包装。工程习惯体现在你会不会主动分析复杂度、会不会注意数据边界、能不能快速在本地调试通过。我当时在第三题里主动处理了PriorityQueue的更新问题这种细节只有平时写代码多的人才会条件反射地意识到。笔试系统不会告诉你每一道题的用时但如果你能顺畅地把三道题都做出来说明你的工程基础是合格的。还有一个很有意思的观察整套笔试没有考手写一个完整的神经网络代码也没有考深度学习框架的API调用这在AI笔试里其实不多见。我的理解是这家机构默认候选人需要有一定的自学能力框架调用这种拿来即用的技能入职后很快就能上手所以不值得放在筛选环节。更值得提前筛掉的是那些只会调包但不懂原理的候选人。7. 备考招商银行信用卡中心同类笔试的实操建议说句大实话如果让我重新准备一次我不会像当初那样漫无目的地刷题而是会用更高效的方式把时间花在刀刃上。准备这类银行系AI方向笔试核心策略是选择题抓广度、数学题抓推导、编程题抓稳定性。选择题这块我建议把李航的《统计学习方法》前八章过两遍重点搞清楚每类模型的损失函数、优化目标、正则化形式、优缺点和适用场景。这本书里的公式推导如果能自己推一遍那笔试里80%的选择题都能对付。深度学习部分推荐先把反向传播算法的全连接网络推导做三遍以上再把CNN、RNN、LSTM的典型笔试考点整理成一页纸考前翻一遍就够了。我当时把自己整理的考点分成必背公式易混淆概念推导清单三类用Notion做成的速查表考前一天看一遍效果非常好。数学模块的建议是把考研数学一里的概率统计和线性代数部分挑出来去掉求导和积分等纯计算题只刷概念题和小计算题。重点章节是随机变量及其分布、数字特征、大数定律与中心极限定理、矩阵的特征值特征向量、二次型。这套笔试的数学题风格和考研题重合度很高尤其是选择题的设问方式。KL散度、最大似然估计、贝叶斯公式这几个考点务必手推到位。编程题方面如果你离考试还有一个月刷LeetCode的Hot 100前50题就够用了覆盖度非常广。银行系笔试的编程题难度一般不会超过LeetCode中等难度所以不推荐刷太偏的难题。但有一个点容易被忽略笔试环境是牛客网或赛码网需要自己处理输入输出平时刷力扣只需要写核心函数两者差别很大。我建议考前至少用牛客网的在线编程环境练十道题把输入输出的各种形式都过一遍比如不定长数组的读入、多行输入的循环读取、结果需要在多个空格分隔等。有些考生算法思路完全正确却因为不知道怎么读入数据而卡住这种失分太冤了。时间分配上我给一个参考选择题单题超2分钟标记跳过数学题单题超4分钟标记跳过编程题一道题超过20分钟没有思路就先放弃把所有会的题做完了再回来啃难题。这个节奏是我在复盘时总结出来的如果当时能严格执行我的总分可能还能再高一些。最后说一个考场上容易忽略的点在线笔试系统通常不允许跳出页面一旦切屏超过一定次数会被警告甚至取消成绩。我在参加这场笔试前用牛客网模拟过两次养成了全程不开其他应用的肌肉记忆。另外如果是在宿舍或家里考试务必提前确认网络稳定。我当时有个同学因为网络波动掉线重新登录后答题时间被压缩了十分钟直接影响心态。这些看似和知识无关的细节在真实的招聘流程里往往是决定成败的隐性因素。说到底招商银行信用卡中心2019秋招AI方向第一批笔试并没有考什么超纲内容它考的就是一个合格AI工程师的底线。把基础打牢把经典原理推到肌肉记忆把工程习惯融入平时练习这套笔试并不会成为拦住你的坎。反过来如果你连这套笔试都感觉吃力那确实需要认真审视一下自己是否真的准备充分了——银行系AI岗位的竞争一年比一年激烈只有底子厚的人才能在后边的多轮面试里走得从容。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价