
2019年秋天我坐在电脑前参加招商银行信用卡中心秋招IT笔试报考方向是测试开发第二批。两个小时左右的题量做下来最大的感受是这家机构的笔试题不像互联网大厂那样追求偏题怪题而是把重心放在“基础是否扎实、思维是否周密”上。作为经历过的人我把整场笔试的考情、考点、答题思路和踩坑教训完整复盘了一遍给准备银行系测试开发岗的同学一份能直接参考的攻略。先说结论招商银行信用卡中心的IT笔试测试开发方向的核心考察点有三个——计算机基础知识、编程基本功、测试思维尤其是用例设计能力。这里的“测试思维”才是区分度所在很多开发背景的同学能写完编程题却在测试设计题上丢分严重。这篇文章会把每个模块考什么、怎么答、为什么这样答全部拆开讲清楚。1. 考情概览这场笔试到底在筛选什么样的人1.1 整体题型结构与时间分配先说硬信息。2019秋招第二批的笔试采用的是在线笔试系统整体题型大致分四块单选题、多选题或判断题、编程题、测试设计题主观题。总时长一般在120分钟左右题量不算小需要合理分配时间才能全部做完。从题型比例来看选择题占大头覆盖计算机基础、计算机网络、操作系统、数据库和编程语言基础。编程题一般是1-2道难度接近LeetCode简单到中等偏下不会考特别复杂的算法。测试设计题通常会给出一个具体业务场景比如“信用卡还款功能”或“登录模块”让你设计测试用例。整套题的核心意图很明确不追求你是算法竞赛选手而是看你有没有扎实的计算机功底以及是否有测试岗位需要的结构化思维。这里多说一句银行系的IT笔试通常还有个特点——会嵌入一部分行测或性格测试类题目但招商银行信用卡中心的技术批次基本以纯技术题为主这部分占比极小甚至没有。重点还是技术基础。1.2 测试开发方向与普通开发方向的题目差异同场考试可能分多个方向比如Java开发、数据研发、测试开发。测试开发方向的选择题和开发方向有不少重叠但差异点非常明显算法题难度略低更偏基础数据结构的应用。会增加软件测试理论相关题目比如白盒测试、黑盒测试、覆盖率的含义。主观题明确要求写测试用例而不是系统设计。对数据库和Linux的考察权重更高因为测试岗位日常需要写SQL做数据校验、上服务器看日志。所以如果你是按开发岗的标准去刷题准备可能会在测试理论和用例设计上吃亏。反之如果只准备测试理论而忽略了编程基础选择题和编程题又会拖后腿。两者的平衡点就是整场考试的核心得分策略。2. 核心考点拆解每个模块到底考什么、怎么答2.1 计算机基础数据结构与算法的高频题型计算机基础是选择题的重头戏。数据结构方面数组、链表、栈、队列、二叉树、哈希表是绝对高频。常考的知识点包括各种排序算法的时间复杂度、稳定性对比。比如快速排序最坏情况的时间复杂度是多少O(n^2)堆排序是否稳定不稳定这些细节很容易被忽视。二叉树的前序、中序、后序遍历尤其是给两个遍历序列求第三个或者求二叉树深度。哈希表的冲突解决方法开放地址法和链地址法的区别。栈和队列的应用场景比如用栈实现队列、括号匹配。说一个我印象很深的题给出一个中序遍历序列和后序遍历序列要求选出对应的前序遍历。这种题属于数据结构里的经典题型思路是“后序序列的最后一个节点是根节点再到中序中切分左右子树”递归还原。笔试时没有IDE调试全靠手推所以平时一定要练到条件反射。算法方面不会考动态规划、图论这些重难点顶多出现二分查找、递归、简单字符串处理。准备策略很明确把常见排序的代码和复杂度背熟把二叉树遍历吃透链表反转、字符串反转这类基础操作能手写。2.2 数据库与SQL测试岗位的加分项数据库的题目在测试开发方向占比不低因为测试过程中经常要做数据准备和数据校验。常见考点SQL多表查询尤其是INNER JOIN、LEFT JOIN的区别。GROUP BY与HAVING的使用场景WHERE和HAVING的执行顺序差异。索引的作用和优缺点什么时候索引会失效比如对索引列使用函数或隐式类型转换。事务的ACID特性隔离级别以及各自解决的问题。举个例子典型的题目是有两张表学生表和学生成绩表要求查出平均成绩大于80分的学生姓名和平均分。正确写法是先用GROUP BY按学生分组再用HAVING过滤平均分大于80然后JOIN学生表取姓名。SELECT s.name, AVG(sc.score) AS avg_score FROM student s JOIN score sc ON s.id sc.student_id GROUP BY s.id, s.name HAVING AVG(sc.score) 80;这里有个易错点如果用WHERE AVG(sc.score) 80会直接报错因为聚合函数不能出现在WHERE子句中。这是SQL笔试中非常经典的坑一定要记住聚合条件的过滤用HAVING。索引方面我还遇到过一个问法给一个查询语句问怎么建索引最合适。核心原则是“等值查询优先建索引覆盖索引能避免回表”以及“最左前缀原则”。准备的时候把这三个概念理清楚基本就能应对。2.3 计算机网络与操作系统常考但容易丢分的板块计算机网络的高频考点集中在TCP/IP协议栈TCP三次握手和四次挥手的过程为什么握手是三次而不是两次。HTTP常见状态码的含义尤其是404、500、302、304。TCP与UDP的区别各自的应用场景TCP适合文件传输、HTTPUDP适合视频直播、DNS查询。输入一个URL到页面展示的完整过程这道题几乎是必背的。这里建议把“URL输入到页面渲染”的过程背熟DNS解析、TCP连接、发送HTTP请求、服务器处理并返回、浏览器解析渲染、连接关闭。不仅能应付选择题面试也会问。操作系统方面进程与线程的区别、死锁产生的四个必要条件互斥、持有并等待、不可剥夺、循环等待、进程间通信方式管道、消息队列、共享内存、信号量是常客。再补充一个容易忽略的点银行笔试很喜欢考Linux命令。比如查看端口占用用什么命令netstat或ss实时查看日志输出用什么tail -f查找文件中包含关键字的行grep。后面我会单独讲测试开发方向对Linux的要求。2.4 编程语言基础Java为主导招商银行信用卡中心的技术栈以Java为主所以选择题中Java相关题目出现概率很高。常考的点包括Java基础语法equals和的区别、String和StringBuilder的区别。集合框架ArrayList和LinkedList的底层实现与适用场景、HashMap的底层原理JDK 1.8后是数组链表红黑树。异常机制受检异常和非受检异常的区别。Java内存区域堆、栈、方法区各自存放什么。举个例子HashMap的底层原理几乎是必考题从“put一个键值对后发生了什么”到“什么时候链表转红黑树”都可能考。这里直接给一个标准回答思路计算key的hash值定位到数组下标如果该位置为空则直接插入否则遍历链表存在相同key则覆盖否则尾插法加入链表当链表长度超过阈值8且数组长度大于等于64时链表转为红黑树。如果你是Python或C背景Java基础题可能有点吃亏但也不用慌把上面列举的这几个高频考点速成一遍足够应付选择题。3. 测试开发方向的侧重点这才是拿分关键3.1 测试理论与用例设计方法这是测试开发方向区别于其他方向的核心板块。选择题会考一些概念比如黑盒测试和白盒测试的区别、单元测试和集成测试的目标、语句覆盖和分支覆盖哪个更强。真正的重头戏是最后的主观题给出一个业务模块让你写测试用例。这题分值高、区分度大也是最容易暴露水平的一题。我当时遇到的场景是“信用卡还款功能”要求设计测试用例覆盖正常路径、异常路径和边界情况。这类题的答题框架非常固定就是一个字全。我建议这样组织功能测试正常还款成功、余额不足、还款金额超过欠款、还款金额为0或负数、重复还款、还款卡号错误、还款日当天还款、逾期后还款。接口/数据测试数据库金额是否正确更新、还款流水是否生成、异步通知是否成功。兼容性测试不同浏览器、不同手机型号、不同操作系统。安全性测试支付密码错误次数限制、接口是否加密、是否有越权风险。性能测试高峰期并发还款时系统是否稳定、响应时间是否达标。每个用例都要写清楚前置条件、操作步骤、输入数据、预期结果。比如“还款金额超过欠款”这个用例正确预期应该是“系统提示还款金额不能超过应还金额交易失败”。再举一个“登录模块”的例子帮助理解。登录功能看似简单但用例设计可以写几十条正确的用户名密码登录、密码错误、用户不存在、密码为空、用户名包含特殊字符、连续输错5次密码锁定、勾选记住密码后关闭浏览器再打开、不同设备同时登录同一账号等。每一条代表一个独立的测试场景。如果没接触过测试理论建议先把等价类划分、边界值分析、场景法、错误推测法这四种黑盒用例设计方法吃透。笔试中出现的设计题基本都能用这四种方法覆盖。边界值法尤其要重视很多隐藏bug都出现在边界上。3.2 测试设计题的高分答题模板我总结了一套主观题答题模板考试时直接套用既省时间又不丢项。第一段先写“本次测试的对象和范围”明确你要测什么、不测什么。接下来分几个维度展开功能测试、接口测试、兼容性测试、安全测试、性能测试。每个维度下列出具体用例。这里有一个关键技巧不要只写用例名称一定要写“预期结果”。阅卷人在快速批改时最直观的判断标准就是用例条目是否完整、预期结果是否清晰。只写步骤不写预期结果会被认为测试思维不成熟。再补充一点银行场景的题目一定要考虑安全合规相关的用例。比如涉及支付的场景要考虑支付密码错误次数限制、短信验证码有效期、交易金额是否加密传输。你把这类用例写上去会明显提升答案的专业度。3.3 自动化测试与接口测试常识招商银行信用卡中心的测试开发岗日常工作大概率涉及接口自动化、UI自动化和持续集成。笔试虽然不会让你现场写一套自动化框架但选择题可能会考察相关概念。高频考点有两个第一常见的自动化测试框架有哪些比如Java系的JUnit、TestNGPython系的pytest、unittestUI自动化常用的Selenium接口测试常用的Postman、JMeter、RestAssured。第二接口测试的关注点包括请求参数是否正确、响应状态码是否符合预期、响应数据的字段类型和值是否正确、接口的性能耗时是否达标。举个例子要求你用pytest写一个简单的接口测试用例验证某个登录接口import requests import pytest def test_login_success(): url https://api.example.com/login payload {username: testuser, password: 123456} resp requests.post(url, jsonpayload) assert resp.status_code 200 data resp.json() assert data[code] 0 assert token in data[data]这个用例没有做太多复杂的事就是发请求、校验状态码、校验关键字段。但笔试中能写出类似的代码已经能证明你具备接口测试的基本能力。不要背太复杂的框架代码核心的请求发送和断言逻辑足够。如果选择题中出现了JMeter相关概念也不要慌掌握几个关键词就行线程组模拟并发用户、取样器Sampler发送请求、监听器Listener查看结果、断言Assertion校验响应。考得都很浅。4. 实操经验笔试过程中的策略与节奏4.1 时间分配方案我当时的做题顺序是先快速浏览所有题目做到心里有数然后用45分钟左右解决选择题遇到卡住的先标记跳过再用30分钟做编程题最后留出40分钟专门写测试设计主观题剩余时间检查。这个节奏的核心逻辑是主观题分值高且只要写了就能拿分必须保证充足的时间。选择题如果在一个不确定的题目上纠结太久会挤压后面的大题时间。我见过太多人在选择题上投入过多最后主观题草草几行字收尾非常可惜。编程题如果不能完全AC也一定要写出部分正确的代码哪怕只过了一个示例用例也比空着强。银行笔试的编程题一般不要求优化到极致能跑通最简单的情况就有基础分。4.2 编程题的常见套路字符串、数组与模拟编程题的范围虽然窄但依然有规律可循。我统计了银行类笔试常见编程题类型主要集中在三类字符串处理、数组操作、简单逻辑模拟。纯算法题很少动态规划基本不考。最常见的题目比如给定一个字符串反转其中的单词顺序给一个整数数组找出出现次数最多的元素实现一个字符串转整数等功能。这些题目难度不高关键是能在无IDE环境下写对。举一个我在练习中反复用的例子判断一个字符串是否是回文串。这道题在多家银行笔试中都出现过变体。def is_palindrome(s: str) - bool: left, right 0, len(s) - 1 while left right: while left right and not s[left].isalnum(): left 1 while left right and not s[right].isalnum(): right - 1 if s[left].lower() ! s[right].lower(): return False left 1 right - 1 return True这段代码用双指针法跳过了非字母数字字符统一转小写后比较。现场手写时最容易出错的点是忘记处理空字符串和大小写问题。建议在平时的练习中把“输入为空”“只有一个字符”“大小写混合”这些边界情况都跑一遍。笔试环境下的另一个常见问题是输入输出格式。在线OJ系统有些要求自己写输入解析比如第一行是测试用例数量后面每行是一个字符串。一定要提前熟悉目标平台的输入输出模式否则代码逻辑对了却因为读入方式不对导致超时或报错非常冤。4.3 选择题的“蒙题”技巧与策略虽然不鼓励蒙但遇到不会的选择题有一些简单的提分策略。首先多选题目中拿不准的选项不要选少选得部分分错选直接零分。这是多选题最重要的原则。其次一些概念题可以通过排除法缩小范围。比如问“下列哪个协议是面向连接的”TCP和UDP二选一知道UDP是无连接的答案就出来了。平时积累的几个高频选项要记牢TCP面向连接、UDP无连接、HTTP基于TCP、DNS基于UDP。再一个策略第一直觉往往是对的。在线笔试没有回头检查的习惯时不要反复修改答案除非你非常确定原来的选择是错的。我在多次考试中的经验是纠结后改掉的答案大概率会把对的改成错的。5. 常见问题与排查技巧实录5.1 我踩过的坑在线笔试环境的三个大坑第一个坑是编程题的环境不熟悉。部分银行的在线笔试系统不是标准的LeetCode模式不会帮你处理输入输出需要自己写main函数或标准输入读取。我见过有人用惯了LeetCode的函数补全模式到了笔试环境连Scanner都没写最后整个代码无法编译。建议考前一定要查清楚笔试平台的操作方式。第二个坑是时间分配失衡。我有个朋友当年参加这场考试选择题做得很爽结果最后一道测试设计题只剩五分钟草草写了几个用例就交卷了。后来复盘才发现那道主观题几乎决定了能不能进面试。这个教训非常深刻所以我特别强调主观题至少留40分钟。第三个坑是写测试用例时只写“正常路径”。很多同学能写出正确登录、正确还款这类用例但一到异常路径就短路了。比如密码错误、网络超时、金额为0、重复提交这些场景写不出来。这其实是测试思维不够成熟的体现。我在训练时养成一个习惯列出每一个输入字段然后对每个字段分别考虑“合法值、非法值、边界值、空值”四种情况再考虑业务流程的“正常、中断、重复、并发”等场景。这套思路可以覆盖绝大部分用例设计题。5.2 常见问题速查表为了便于快速回顾我把整场笔试中的高频问题和应对方案整理成一个表格常见问题原因分析解决方案编程题编译不通过不熟悉笔试平台的输入输出模式考前查清题型模式练习标准输入读取测试用例写不全只关注正常路径用等价类和边界值法逐字段分析多选题丢分严重选择了不确定的选项拿不准的选项不选宁少勿错SQL聚合条件写错WHERE误用聚合函数记住聚合条件用HAVING过滤时间不够用选择题耗时过多45分钟做选择题主观题留40分钟HashMap原理说不清只看概念没理解底层流程从put过程入手理解数组链表红黑树5.3 考后复盘笔试通过接下来准备什么笔试通过后一般会进入面试环节。银行面试通常包含技术面试和HR面试。技术面试会追问笔试中的测试设计题让你现场补充用例也会问项目经验。所以笔试结束后不要松懈建议把笔试中没答好的题目再复盘一遍尤其是测试设计题整理成一份标准答案。另外招商银行信用卡中心的面试还会关注“为什么选择银行系”这类动机类问题。如果你准备进金融科技领域建议提前了解一下银行系统对稳定性和安全性的高要求在面试中可以多谈自己对“金融级测试标准”的理解比如数据一致性校验、资金安全、高可用保障等面试官会很认可。我个人在准备这类岗位时给自己定了一个原则“先广度后深度”——花一周时间把计算机基础、数据库、网络、Linux这些必考点过一遍再花一周时间重点攻克测试理论、用例设计和接口自动化。这套复习路线对于银行系测试开发岗的笔试和面试都是通用的值得一试。