面灵AI→

江苏银行与杭州银行校招笔试同日实录:行测、408 与两道编程

轮次
笔试
时间
2026-10
来源
牛客网

《面试题目》

江苏银行:

  1. 行测。
  2. 较为困难的数据库复杂知识:存储过程、主从同步、函数、多表连接查询、事务回滚等。
  3. 密码学(候选人表示完全不会)。
  4. 各种小游戏:找不同、躲小球、记忆位置等。
  5. 编程题一:a 和 b 两个字符串,找到 a 字符串里每个字符在 b 字符串中出现的次数,要求每个之间用逗号隔开,最后一个后面没有逗号。
  6. 编程题二:扑克牌排序(两副牌),按大小王、花色大小排序。

杭州银行:

  1. 纯粹的 408(包含很多 Java 里的错误处理、类继承的输出判断)+ 编程两个。
  2. 编程题一:一串数字,找到所有出现次数大于等于 3、并且在数组里的位置下标满足等差数列的数字。
  3. 编程题二:一个数字串,找所有连续的子序列,使得序列里每种数字的数量是偶数。

《参考解析》

银行笔试的题型结构与应对节奏

这两套卷的结构差异很有代表性。江苏银行是「行测 + 数据库实战 + 密码学 + 认知小游戏 + 编程」,数据库部分明显偏工程使用而非理论(存储过程、主从同步、函数、多表连接、事务回滚),说明这个岗位关心你能不能上手写 SQL 与理解运维相关机制;小游戏类(找不同、躲小球、记忆位置)属于认知能力测评,考查注意力和短时记忆,通常有明确的时间压力,练不出来的部分就按策略快速作答、别恋战。杭州银行则是「纯 408 + 编程」,其中含 Java 错误处理与类继承的输出判断题,这类题要特别小心 Java 的细节——静态代码块与构造块的执行顺序、继承时的字段隐藏与方法重写、try/catch/finally 的返回值覆盖规则、以及 Integer 缓存与 ==/equals 的行为,这些是输出判断题的常客。备考建议是把 408 四门(数据结构、操作系统、计算机网络、计算机组成原理)的常考概念过一遍,同时专门刷一轮 Java 语言细节题。

两道容易被细节坑到的编程题

第一题(a 的每个字符在 b 中出现的次数、逗号分隔且末尾不带逗号)考的是输出格式与字符计数的基本功:先用哈希表或长度为 26 的数组统计 b 中各字符的频次,再遍历 a 输出即可;真正的坑在于格式化——如果先拼接字符串再统一处理,末尾会多一个逗号,所以要么在循环里用「非首个元素前加逗号」的写法,要么把结果收集到列表后用 join 输出(这也是最不易出错的做法)。要顺带考虑大小写敏感、空格与标点是否计入、以及字符集是否只含小写字母——这些要在动手前跟出题人(或按题目描述)确认。

第二题(两副扑克牌按大小王、花色大小排序)考的是自定义比较规则与稳定的多关键字排序:先给每张牌抽出「主关键字」与「次关键字」(比如先按牌面大小、再按花色,大小王单独给最高权重),然后按自定义比较器排序;实现上要注意两副牌里同一个牌面会有重复,所以排序要稳定或把「副数」也纳入关键字;如果语言支持 sorted(key=lambda ...) 或 Comparator,用它比自己写冒泡或快排干净得多。另外要确认题目要求是升序还是降序、大小王排在最大还是最小。

杭州银行第一题(出现次数 ≥ 3 且下标成等差数列)的解法是:先统计每个数字出现的次数与下标列表(哈希表存列表),筛掉次数小于 3 的,剩下的判断下标列表是否等差(检查相邻差值是否全部相等),是就收集起来。时间复杂度 O(n)、空间 O(n)。边界要问清:出现多于 3 次时是否仍算(等差数列可以包含全部下标,只要差值一致);输出的顺序与格式。

第二题(连续子序列中每种数字数量都是偶数)的关键技巧是用「奇偶状态 + 前缀异或」把问题转成哈希计数:给每个数字一个二进制位(如果数字的取值种类很多就用哈希编码),遍历数组时维护「每种数字出现次数的奇偶性」这一状态(用异或翻转当前数字对应的位),那么「某个子数组内所有数字出现次数都是偶数」等价于「该子数组起点前与终点后的奇偶状态相同」。因此只要用哈希表记录每种状态第一次出现的位置,遇到相同状态就得到一个合法区间,取最长的即可,时间 O(n)。如果数字种类超过 64,可以把状态编码成字符串或用 map 计数向量做键;这也是「变体前缀和」的典型套路,值得单独记下来。原帖说时间不够没做完,实际面试与笔试中遇到这类题,正确的做法是先说出思路与复杂度,再争分夺秒写出哈希表版本——而不是从头尝试枚举所有子序列。