每年九月底到十月上旬,秋招群里总会出现类似的消息:“招行信用卡中心的笔试链接发了,有人之前做过吗?题型啥样?”紧接着就是满屏的“同求”“蹲一个笔经”。我在2019年秋天点开招商银行信用卡中心IT笔试(开发方向第二批)的链接时,其实也抱着同样的心态。当时刚刷完一批互联网大厂的算法题,自认为手热得不行,结果做到一半就意识到一个问题——银行系的IT笔试,和我想象中的“大厂机考”完全是两套打法。
这篇博文就是一次完整复盘。我会把招行卡中心2019秋招IT笔试开发方向第二批的考试形式、题目范围、编程题难度、复习方向和实战细节全部拆开讲。内容不只适用于这一家银行,基本覆盖了大部分银行系金融科技岗位的笔试逻辑。适合正在准备银行科技岗、金融科技子公司、信用卡中心开发岗的应届生参考;如果你手里同时握着几个互联网大厂的笔试链接,也建议花十分钟看完,避免用错复习策略。
1. 笔试整体框架:赛码网、考试时长与题量分布
1.1 依托的在线笔试平台与考试环境
招行信用卡中心的IT笔试当年是通过赛码网进行的,这一点很关键。赛码网这类在线笔试平台和牛客网的界面、判题逻辑有些差异,最直观的区别是:赛码网通常只提供一个轻量级在线代码编辑器,不支持本地IDE调试,也不允许跳出浏览器查资料,系统会全程开启摄像头监控和切屏检测。
我当时考试前特意做了两步准备,这里也建议你照做。一是提前在赛码网上跑一遍“模拟笔试”功能,熟悉代码编辑器的提交按钮、输入输出样例的展示位置和自测逻辑。赛码网的自测和最终提交是分开的,点错按钮不会直接交卷,但确实有人第一次用,把“保存草稿”当成了“提交试卷”,白白浪费了时间。二是准备好一个安静的独立空间,关掉微信、QQ、邮箱弹窗,有广告弹窗风险的软件直接退出,因为一次切屏记录可能就会触发警告,严重的直接取消成绩。
摄像头那边也提醒一句:要求是正脸对准、光线充足、不能戴耳机。男生如果戴着无线耳机忘了摘,考到一半系统弹窗提示,心理压力会瞬间上来。女生把头帘儿梳上去,露额头,这类识别通过率更高。这些细节不复杂,但每年栽在这些地方的人真不少。
1.2 题目结构与时间分配策略
2019秋招开发方向第二批,整体时长设定比较紧张,好像是90分钟出头,具体时间节点每年可能有微调,但题量的结构性可以参考。总题量约50道上下,分三块:非技术的行测/逻辑类选择题占一部分,技术类单选和多选占大头,编程题在最后。我印象里有两道编程题,一难一易,总分值大概占三成。
从时间分配看,行测部分大概15-20道,包含言语理解、逻辑推理、数量关系。技术选择题大概25-30道,覆盖Java/C++语法、数据结构、操作系统、计算机网络、数据库。编程题两道,一般分布在卷末。
我的建议是:先做技术单选多选,再做行测,最后集中精力搞编程题。原因很简单,技术题对计算机背景的同学来说最顺手,行测需要临场切换思维方式,编程题最耗时而且需要进入编码状态,放在最后写能保持思维的连续性。我当时把编程题留到最后,虽然时间不太够,但至少前两部分完成度很高,编程题第一道完整AC,第二道写出来了核心逻辑,踩分点基本拿到。
1.3 一场“门槛型”考试,不是“排位型”考试
银行系笔试和互联网大厂一个根本区别是:银行笔试的目标是筛选出“合格线以上”的人,而不是把所有参加笔试的人拉出来严格排序。
这话怎么理解?互联网大厂笔试题往往有区分度极强的压轴题,一道题就能卡掉90%的人,目的是找出算法思维最突出的少数人。但银行IT笔试更像综合能力体检,技术题考察面广、深度中等,行测考察逻辑和文字感觉。只要你在每个模块都过线,整体分数到了门槛,就能进入后续面试。从这个角度看,安排合适的复习策略比盲目刷难题有用得多。
2. 开发方向技术选择题的考点图谱:广而不深,重在基础
2.1 Java/C++语言基础:Java是绝对主角
招行信用卡中心开发方向的笔试,语言侧重点非常明显,Java相关题目占了编程语言的大部分。结合信用卡中心的技术背景也能理解,核心交易系统、账务系统、营销系统大部分是Java技术栈,笔试自然向Java倾斜。C++的题会有,但占比不大,通常集中在语言机制对比层面。
Java部分的考点集中在这些地方:
- 面向对象三大特性:继承、封装、多态,以及接口和抽象类区别。这类题几乎是必考,考查方式通常是给一段代码判断输出结果。
- 集合框架:HashMap底层原理、HashTable和HashMap区别、ArrayList和LinkedList使用场景。有一道题我印象很深,问HashMap在多线程环境下会出什么问题,答案是在扩容时可能出现循环依赖,这属于Java基础里比较深的考点。
- 异常处理:checked exception和unchecked exception的区别,try-catch-finally的执行顺序,finally块里return会覆盖try块里的return。
- JVM基础:内存区域划分(堆、栈、方法区)、垃圾回收的基本流程。银行笔试很少深入考G1和CMS的区别,但“哪些对象可以作为GC Roots”这种题出现过。
- Java 8特性:lambda表达式、Stream API、Optional类。这个考点当年出得挺多。
C++的题目不算多,集中在虚函数、多态实现机制、指针和引用的区别、malloc和new的区别。如果你Java准备得比较充分,C++的题靠常识推断通常也能答对一部分,不用花太多时间专门复习。
2.2 数据结构与算法:难度停留在“会分析、能比较”
技术选择题里的数据结构与算法题,很少要求徒手写一个红黑树出来,更多是考察概念的理解和复杂度分析。我整理了一下当年考过的相关知识点:
| 数据结构/算法考点 | 常见出题方式 | 复习优先级 |
|---|---|---|
| 栈和队列 | 给定入栈顺序判断可能的出栈顺序 | 高 |
| 二叉树遍历 | 前序/中序/后序/层序遍历序列推导 | 高 |
| 二叉搜索树 | 查找、插入、删除的时间复杂度 | 高 |
| 排序算法 | 稳定排序有哪些,堆排序空间复杂度,快排最坏情况 | 高 |
| 哈希表 | 冲突解决方法(链地址法、开放定址法) | 中 |
| 图的基本概念 | 邻接矩阵/邻接表、生成树、最短路径算法 | 中 |
| 动态规划 | 状态转移方程的分析,不涉及写完整代码 | 低 |
这里多数是经典题目,和大学期末考试题难度接近。如果你刚刷完LeetCode Hot 100,做这些选择题会觉得“太简单了”,但千万别因为题目简单就掉以轻心。这类题的坑在于有些多选题的选项设置比较刁钻,会故意把“堆排序是稳定排序”和“归并排序空间复杂度是O(1)”这种错误表述混在一起,只要对概念记得不够准确,很容易多选错选。
2.3 计算机网络、操作系统与数据库:广度覆盖,浅层考查
三门课在笔试中一般各占3-5道题,分值不低,但幸好考得不深。
计算机网络侧重基础协议:TCP三次握手和四次挥手状态迁移、TCP和UDP区别、HTTP状态码含义、DNS解析过程。银行系笔试还常考一个点:HTTPS的握手过程,以及对称加密和非对称加密的配合方式。这和银行业务注重安全的背景有关,准备时值得多看一眼。
操作系统常考流程管理和内存管理:进程和线程的区别、死锁的四个必要条件、银行家算法、页面置换算法LRU/FIFO,以及进程间通信方式(管道、消息队列、共享内存、信号量)。有一道经典的并发题:三个线程按顺序打印A、B、C,问用synchronized和wait/notify如何实现,这题当年出现在多选题里,选项里有几个干扰项,判断起来要非常仔细。
数据库部分比较直白,核心是SQL查询、索引和事务。SQL题一般给你两个表,让你判断某个查询语句的结果;索引题考最左前缀原则的比较多;事务部分重点考ACID四个特性、四种隔离级别、以及脏读/不可重复读/幻读分别对应哪种隔离级别。这些知识点不偏,认真准备过数据库的都能拿分。
3. 编程题实战复盘:赛码网环境下的“得分型”编码
3.1 客观认识编程题难度:低于互联网大厂
招行卡中心编程题的整体难度,大概介于“本科作业题”和“LeetCode中等题”之间。两道题会有难度梯度:第一道偏简单,目标是基本全对;第二道稍难,但也不是大厂那种“只有5%的人能AC”的压轴题。
不过有一个容易翻车的点:在线笔试的编程题对输入输出格式要求非常严格。赛码网不像LeetCode那样自动帮你处理参数传递,而是像ACM竞赛一样,需要你自己从标准输入读取数据,自己处理字符串拆分、边界条件,再按照指定格式输出。如果读入逻辑写不对,即使核心算法完全正确,最终判题结果也可能是0分。
建议开发方向的同学提前用赛码网的模拟题练几次。重点不是练算法思路,而是练“在线IDE里写完整代码”的手感,尤其是main函数的写法、Scanner和BufferReader的选择、while循环读取多行数据等。这步热身真的很重要。
3.2 第一道编程题:字符串处理类题目的得分要点
第一道题通常出一道字符串处理或模拟题。以当年的风格做参考,我印象里是给一个字符串,需要做某种转换后按要求输出,题目描述中没有给出明显歧义,但必须仔细读清每个输出细节。
解题思路无非是遍历、字符判断、正则替换或按分隔符拆分。关键是把边界情况处理好,包括:
- 输入字符串可能包含空格,不能只用next()读取,要考虑整行读取。
- 输出格式要求精确到空格和换行,最后一个输出项不能多余空格。
- 待处理字符串可能是空串或极端长度,先判空能避免很多低级错误。
- 如果要求按字典排序,直接用Collections.sort或者Java的String.compareTo就是天然字典序,不要自己重写排序比较逻辑。
这类题做多了就会发现,它考的不是算法智商,而是代码的完整性和细心程度。笔试题量大,时间宝贵,没必要追求“优雅写法”,用最直接暴力的循环处理,保证AC比什么都强。
3.3 第二道编程题:算法思路比完整AC更重要
第二道题通常带一点算法设计深度,常见主题是贪心、动态规划或双指针。我在网上搜索当年相关信息时,看到很多人反馈说第二道题做到了“有思路但没完全调通”的状态。
我的看法是:笔试判题是机器判题,最终的分数以用例通过为准,但银行系笔试往往不是只看AC率的,简历筛选和后期面试中,笔试成绩只是一个“达标”参考,并不是唯一的录取依据。如果你第二道题能写出核心解题逻辑,即便最后提交时有一个边界用例没跑通,也明显好过完全放弃。
具体到题目类型,当年类似场景下常见的是:给定一个数组,要求找满足某种条件的子序列、区间或配对方案。这类题的通用思考路径是:
- 先想暴力解法,把所有可能的情况枚举一遍,判断复杂度是否可接受。
- 如果复杂度太高,观察是否有排序、双指针、前缀和能让问题简化。
- 如果还有难度,尝试用动态规划解决,先写出状态定义和转移方程,再用一维或二维数组实现。
这是典型的“先暴力后优化”的套路。在赛码网的编辑器里,就算你最后没有提交最优解,提交一个暴力解法通过了部分用例,也能拿到一部分分数。千万不要因为觉得自己解法“不够高级”就不提交,这是很多人容易犯的错误。
3.4 赛码网编程题的输入输出常见坑
这个部分一定要单独记住,我当年就在这上面吃过亏:
- 赛码网编程题通常用标准输入输出,不支持文件读写。如果题目要求多组输入,需要在循环里不断读取;如果明确是一组输入,只读取一次即可。
- Java语言建议用BufferReader包装InputStreamReader,比Scanner更快。部分题目数据量大,Scanner可能会超时。
- 输出数字时如果需要保留小数,用System.out.printf或String.format,不要自己拼字符串,否则容易丢精度。
- 有些题目的输出要求有“如果无解则输出-1”之类的约定,一定要仔细阅读题目描述,别漏掉这种暗含的分支。
- 编辑器支持代码补全,但自动格式化能力有限,要自己注意大括号匹配。
编程题看似只有两道,但在整份试卷里的时间占比很高。我个人的建议是:先花一两分钟通读第一题,写出完整代码后立即提交拿分;再花10-15分钟做第二道题。如果第二道题在15分钟内没有清晰思路,先把暴力解写上去,保底部分通过,再回头检查前面的选择题。
4. 行测部分为什么不能裸考:非技术题的考核逻辑
4.1 言语理解与逻辑推理:技术同学最容易翻车的模块
很多计算机专业的学生拿到试卷,看到前面密密麻麻的言语理解题会有点懵:“我是来面开发的,为什么要做语文题?”等你考完复盘时会发现,恰恰是这些“语文题”决定了很多人的生死线。
言语理解题一般包括选词填空和段落主旨概括。前者考查对词语含义、搭配习惯和语境的理解,后者考查快速抓取文章核心信息的能力。技术背景的同学平时看文档、写代码,接触的是精确严密的表达,对自然语言里的模糊信息反而容易过度纠结,导致做题速度慢、正确率不稳定。
逻辑推理题更贴近技术思维,包括图形推理、数字推理和类比推理。图形推理的做题方法是找规律,一般从点线面、对称性、旋转翻转、数量变化这几个维度去试。数字推理分为差数列、和数列、倍数数列、幂次数列等,多练题刷出手感很重要。类比推理比较简单,注意词性、逻辑关系和语义层级即可。
这套题本质上考察的是快速反应和规律识别能力。国考行测的题库是很好的练习材料,找近五年的国考真题,每天刷一组言语理解和逻辑判断,坚持一周,速度提升会非常明显。裸考的人不是能力不行,而是不熟悉题型、不掌握技巧,在时间压力下乱了节奏。
4.2 数量关系与资料分析:时间性价比最高的模块
数量关系的题量不大,一般3-5道,但单题耗时高。应用题以工程问题、行程问题、排列组合、概率、利润问题为主。这一块对理工科学生来说,优势很容易发挥。
很多题目核心就是列方程,甚至不用列方程也能估算出来。最重要的是控制时间,一道数量关系如果30秒没思路,果断放弃猜一个答案,千万别在一道题上磨5分钟。这不是让你随便放弃,而是在时间收益上做出最优决策:一道数量关系题的分值和一个技术单选题的分值通常是差不多的,为什么要把时间浪费在可能做不出来的地方,而不留时间去做有把握的技术题呢?
资料分析题是很典型的“看着吓人,算起来简单”的模块。给你一大段文字、一个表格或一张图,让你判断增长了多少、比例是多少、哪个最大。这类题不需要高深的数学技巧,倍数、增长率、比重、平均数这些基本概念搞清楚就行。关键是学会“看选项估算”,不需要精确计算到小数位,很多时候只需四舍五入和排除法就能锁定答案。
4.3 银行特色知识与金融科技常识
招行信用卡中心的笔试题里,还会掺几道银行常识和金融科技的题目。数量不多,但覆盖了金融科技、信用卡行业、银行企业文化等方向。
这类题靠短时间突击也是能拿分的。考试前可以花半小时浏览一下招行信用卡中心近一年的新闻动态、主要产品体系(比如掌上生活App、联名卡产品线),以及金融科技领域的基本概念(如智能风控、大数据营销、开放银行、人工智能客服)。这些概念不需要深入理解,只需要知道它们的定义和主流应用场景。我当时就在复习时偶然看到“智能风控在信用卡反欺诈中的应用”相关文章,结果笔试里真的有一道和风控场景相关的选择题,直接命中。
银行特色知识占到总分比例很低,不值得花费大量时间。但如果其他模块都准备得差不多,这几分就是“白捡”的,不要因为觉得冷门就完全放弃。
5. 银行IT笔试和互联网大厂笔试的核心差异:别用错复习策略
5.1 出题逻辑不同:综合体检 vs 编码竞技
很多同学同一个秋招季会同时投互联网大厂和银行系岗位。最常犯的错误就是:用同一套复习方式应对两类笔试,结果两边都吃亏。
我整理了一个对比表格,基本能说明问题:
| 对比维度 | 招行卡中心IT笔试 | 互联网大厂笔试 |
|---|---|---|
| 题型构成 | 行测+技术选择+编程题 | 绝大多数为编程题,部分有选择题 |
| 行测比例 | 占比达到三分之一左右 | 基本没有 |
| 编程题难度 | 偏基础和中等,一道简单一道中等 | 中高到困难,区分度很大 |
| 考试平台 | 通常是赛码网 | 通常是牛客网或自研平台 |
| 时间压力 | 题量大,时间紧,需要取舍 | 编程题为主,时间主要花在思路调试 |
| 筛选逻辑 | 综合过线,各模块均衡 | 编程题达标,高分胜出 |
银行笔试的技术选择题覆盖范围广,操作系统、网络、数据库、Java基础都要会一点,但不会像互联网那样要求你徒手实现LRU、Top K这类高频题。互联网大厂笔试则完全不考行测,对算法和数据结构的要求更高,一道题可以直接决定了你能不能进面试。
所以,千万不要因为自己LeetCode刷得多就轻视银行笔试的行测部分;反过来,也不要因为银行笔试技术题简单就以为互联网笔试也能用同样的准备方式通过。两个方向要分开复习。
5.2 编程题风格差异:从“造轮子”到“用轮子”
银行系和互联网系在编程题风格上还有一个隐性差异。互联网大厂更青睐“算法竞技型”选手,喜欢考前缀和、树形DP、线段树这类进阶算法;银行笔试的编程题通常更贴近业务逻辑和经典算法,比如字符串处理、日期计算、金额转换、订单匹配、优惠券最优组合等。
这背后是有逻辑的。银行卡中心要的是能写业务代码、能理解业务需求、能把复杂流程拆成清晰模块的开发人员,而非专门研究算法的最强大脑。所以在笔试里,能把一道贴近业务场景的题目写清楚、写完整的人,比追求奇技淫巧的人更符合岗位画像。
5.3 笔面试节奏的差异:银行笔试只是“入场券”
另一个容易忽略的点是:互联网大厂的笔试成绩通常会直接影响后续面试的offer排序,如果笔试成绩排在前面,后续面试会有一定优势。但银行系尤其是招行卡中心,笔试通过的分数线相对温和,笔试只是筛选出“逻辑正常、基础还行”的候选人,真正决定是否录用的其实是后面的技术面试、主管面试和HR面。
这也解释了为什么银行的笔试范围如此庞杂——每个模块考一点,核心不是画出最漂亮的二叉树,而是确保你是一个全面的、有基本常识的人。如果你复习时间有限,把精力重点分配在技术基础题和编程题上,行测只要训练到“不拖后腿”即可。
6. 从投递到考场的完整走位与实操建议
6.1 笔试前的准备时间线
根据当年秋招的时间节奏,招行信用卡中心的IT笔试一般在9月中旬到10月中旬陆续发放通知,笔试通过后一两周内会有面试通知。建议参照这个节奏安排复习计划:
- 8月中下旬:集中刷技术基础。把Java基础、SQL、网络、操作系统、数据结构的核心知识点过一遍,配合牛客或赛码的题库做专项练习。互联网大厂的算法题训练到这里可以暂停,因为银行笔试的算法难度到不了大厂水平。
- 9月上旬:开始刷行测。每天1-2组行测真题,主要练速度和准确率。同时回顾一下技术知识点,补漏查缺。
- 笔试前3天:用赛码网全真模拟一遍完整笔试流程,按照真实考试时间掐表做题,训练自己在压力下分配时间的能力。
- 笔试前一天:不要刷难题了,把Java集合框架、SQL多表查询、TCP三次握手这些高频考点再过一遍,早点休息。
6.2 考场上的时间分配:90分钟怎么花
如果你拿到的试卷结构和当年类似,这里有一个比较合理的时间分配模板:
| 模块 | 建议用时 | 操作策略 |
|---|---|---|
| 技术单选/多选 | 25-30分钟 | 优先做会做的,不确定的先标记,不要恋战 |
| 行测 | 20-25分钟 | 数量关系一题超过40秒就跳过,资料分析快算快选 |
| 编程题第一道 | 15分钟 | 争取一遍AC,先处理边界条件 |
| 编程题第二道 | 20-30分钟 | 先写暴力解,再优化;优化不了就提交暴力解 |
| 剩余时间 | 查漏补缺 | 回头检查标记过的选择题,重点检查多选题 |
很多人问:时间这么紧,要不要直接跳过行测去做编程题?我的意见是不要。银行笔试的行测部分虽然占分不高,但它是“过线”的关键。编程题再强,如果行测全猜,总分可能卡在及格线上。更好的做法是:行测保证做完、不追求全对;技术题保证正确率;编程题尽量拿分。这个组合拳是比较稳妥的。
6.3 在线笔试的“硬规矩”:比题目更现实的问题
在线笔试不像学校机房的线下考试,管理起来有很多特殊之处。这里整理几个“硬规矩”,每一条都是真实的教训。
第一,设备准备。绝大部分线上笔试要求使用电脑,不能用手机和iPad。提前找好摄像头功能正常的电脑,最好另外接一个稳定的USB网线,防止无线网络波动导致断网。提前一天登录赛码网测试设备权限,确保浏览器能调用摄像头和麦克风。
第二,切屏问题。考试期间系统会记录切屏次数,一旦超过限制可能直接强制交卷或被标记为作弊。考试前把所有无关的软件、浏览器标签页全部关掉,股票软件、通讯软件、下载工具一个不留。如果电脑弹了系统更新提醒,不要手滑点重启。
第三,输入法坑。写编程题时,确保中文输入法已经切换为英文半角状态,避免向代码里混入中文标点符号。Java里一个中文分号就是编译错误,这种错误在时间紧张时很难定位。写完代码后建议用自测用例跑一遍,确认能编译再提交。
第四,作弊红线。考试期间不要尝试用手机查答案、不要让别人坐在旁边指点,不要试图用远程控制软件。这类在线笔试系统都有切屏和摄像头监控,一旦判定作弊,不仅这场笔试作废,还可能被拉入这家公司后续招聘的黑名单,得不偿失。
6.4 笔试后的复盘动作:比等待结果更重要的事
考完试不要干等通知。不管感觉自己考得好还是不好,都有三件事值得做。
第一,趁记忆清晰把题目复盘一遍。笔试中不会的选择题、编程题没调通的逻辑,马上搜一下相关的知识点或类似题解。这样做有两个好处:如果通过了笔试进入面试,面试官很可能会从笔试题目延伸提问,复盘能让你在面试中更有底气;如果没通过,这轮复习也不算浪费,因为它为你后续其他银行或公司的笔试积累了弹药。
第二,评估后续流程节奏。招行卡中心一般笔试后一周到两周内出结果,面试通知会通过短信、邮件或招聘官网发布。这段时间保持手机畅通,把短信拦截规则检查一遍。每年都有人因为短信被系统误拦截,错过面试通知,太可惜了。
第三,根据考试情况重新平衡复习计划。如果你发现行测拖了后腿,下一家公司的笔试前就要加大行测训练量;如果发现技术选择题集中在数据库和Java上,就赶紧把这两个模块的短板补上。笔试是一面镜子,能照出你的知识结构短板,把它当成诊断工具,比当成终点更有价值。
我在实际准备这类银行系笔试的过程中,最大的体会是:它不考“你有多聪明”,而考“你有没有认真准备”。行测题中的规律和技巧是可以通过刷题练出来的,技术选择题的考点范围也就那么几块,只要按部就班地准备,这块笔试并不难通过。怕的恰恰是拿着大厂的题库刷到飞起、却完全忽略行测和技术选择题这些银行系特有的考点,反而在“门槛型”考试上摔了跟头。如果你还在准备阶段,就用这套思路把硬骨头提前啃下来,到了考场会从容很多。