交通银行信息科技岗面经:上海北分软开总行多轮面试与笔试考点
- 轮次
- 一面+二面+群面+笔试
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
上海分行 · 金融科技岗(一面)
- 有没有参加过比赛?有没有 IT 相关证书?有没有实习经验?简单说一下实习内容。
- 你会哪些编程语言?数据库的使用情况怎么样?
- 为什么选择上海?
上海分行 · 金融科技岗(二面)
- 请做一下自我介绍。
- 介绍一下你做的项目(不涉及技术细节)。
北京分行 · 科技岗(群面 + 笔试)
- 无领导小组讨论 30 分钟,拿到话题后你如何争取角色、推动小组形成结论?
- 笔试里的编程题(2 道 Python + 1 道 Java,没有运行环境、只能在文本框里作答)会考什么?
北京分行 · 金融科技岗(线上无领导小组)
- 线上无领导小组约 15 分钟,如何针对指定问题发表看法,并做一段简短自我介绍?
软件开发中心 · 软件开发岗(线下)
- 限时 10 分钟手撕一道核心代码模式的简单算法题,可自选语言,写完怎么讲清思路?
- Java 基础八股会问到哪些内容?
- MySQL 的索引会问到哪些内容?
- Redis 会问什么?
- JVM 会问到哪些内容?
- JUC 和 Spring Boot 会问到哪些内容?
- 你报名的 base 地想选哪里?
- 你家在哪里?
- 你手上现在有哪些 offer?
软件开发中心 · 总行软件开发工程师(base 深圳,仅 1 轮)
- 你的意向工作地点是不是深圳?
- 毕业设计中与计算机 / 软件开发相关的内容是什么?
- 介绍一下你的个人技术栈。
- 数组和链表有什么区别?各自的优势和适用场景是什么?
- 介绍一下树这种数据结构。
- 堆和栈有什么区别?各自的优势和适用场景是什么?
- 介绍一下快速排序算法。
- C++ 的内存对齐是什么意思?
- 实习(滴滴)主要做了哪些工作、接触了哪些技术、有什么收获?
《参考解析》
银行科技岗的流程差异与筛选重点
交行同一个「信息科技岗」,不同机构的流程差别很大:上海分行是 Zoom 线上,助理核对身份证后按顺序拉进会议间,一面两位面试官、全程不问技术,二面形式类似(一位开摄像头、另一位在旁观察),同样是先自我介绍再聊项目;北分把无领导小组放在前面(30 分钟或 15 分钟一档),过了才发笔试;软件开发中心是线下面试,先交材料,再限时 10 分钟手撕,最后是八股加 base 地、家庭所在地、手上有哪些 offer 这类收尾追问。笔试也是同一路子——2 道 Python 加 1 道 Java 只在文本框里作答、没有运行环境,考的是写出来的代码本身对不对(边界、循环终止、手写输入输出),不能指望补全和跑用例。这类环节筛的其实不是算法能力,而是表达是否清楚、简历能不能站得住、以及稳定性:愿不愿意去这个城市、会不会拿它当备胎。所以简历上每一条(比赛、证书、实习)都要能展开成 30 秒的口述,项目按「背景—我做了什么—难点—结果」准备;群面则提前练两件事,拿到话题先给结构和分工(谁记时、谁总结),最后几分钟主动收敛结论,而不是一直抢话。
Java 基础与 JVM、JUC、Spring Boot
八股部分银行问得不深但铺得很广,答题的原则是先给结论、再补一层原理,避免只背名词。Java 基础高频落在集合(HashMap 的数组加链表/红黑树结构、扩容与哈希扰动)、String 的不可变、== 与 equals 的区别、异常体系和泛型擦除。JVM 一般从内存区域(堆、栈、方法区/元空间、程序计数器)切入,接着问对象创建与回收:分代回收怎么划分、CMS 与 G1 在停顿上的取舍,以及线上 OOM 的排查路径(jstat/jmap 看堆、MAT 找支配关系)。JUC 重点在线程池的参数与拒绝策略、AQS 与 ReentrantLock 相比 synchronized 多了什么(可中断、可超时、公平性)、CAS 与 ABA,以及 ConcurrentHashMap 的并发粒度。Spring Boot 则集中在自动配置的加载机制、Bean 生命周期与三级缓存如何化解循环依赖、AOP 在什么条件下走 JDK 动态代理、什么条件下走 CGLIB——说清条件比背注解更有说服力。
MySQL 索引与 Redis
MySQL 索引大概率从「为什么是 B+ 树」开始:它矮胖,几层就能装下千万级数据,非叶子节点不存数据所以扇出大,叶子节点又用链表串起来,范围查询和排序都能少很多随机 IO;往下是聚簇索引与回表、最左前缀、覆盖索引,以及索引失效的典型场景(列上做函数运算、隐式类型转换、like '%x' 这类前导通配)。问到优化就落到 explain:type 有没有到 range/ref、key 用没用上、rows 估算多少、Extra 里有没有 filesort。Redis 的常考线是单线程加 IO 多路复用为什么够快、常用数据结构与底层编码的对应、缓存穿透/击穿/雪崩分别怎么解(空值缓存或布隆过滤器、互斥重建或逻辑过期、过期时间加随机抖动),以及 RDB 与 AOF 在恢复速度和数据安全上的取舍。分布式锁要答全「setnx 带过期 + 唯一 value + Lua 校验后删除」,并知道单实例锁在主从切换的窗口里会失效。
数据结构基础与手撕算法
基础题看着简单,失分往往在只答定义不答取舍。数组内存连续、随机访问 O(1),插入删除要搬元素、扩容有拷贝成本,适合读多写少和需要下标的场景;链表靠指针串联,插入删除 O(1),代价是随机访问 O(n)、节点有额外开销且缓存不友好。树先讲清最典型的二叉搜索树(左小右大、平均 O(log n),但会退化成 O(n),所以工程上用红黑树、B+ 树自平衡),再按需展开遍历方式。堆和栈是两组容易混的东西:内存意义上的堆由程序手动申请释放、空间大但不连续,栈由系统自动管理、连续且快但容量有限;数据结构意义上的堆是完全二叉树加堆序(优先队列、Top-K),栈是后进先出(函数调用、括号匹配、表达式求值)。快排要能说清分治与分区、平均 O(n log n) 而最坏 O(n²)(有序输入),并主动提随机化 pivot 或三路划分。线下限时 10 分钟的手撕不跑用例,练的是不开 IDE 也能写对边界:空值、单元素、越界和循环终止。C++ 的内存对齐是指编译器为了让 CPU 高效取数,把成员放到地址为自身对齐数整数倍的位置,不够就插填充字节,因此结构体大小通常大于成员之和;可以用 #pragma pack 或 alignas 调整,代价是可能跨缓存行、反而更慢。