招商银行Java后端面经:招银网络科技一面二面HR面考点
- 轮次
- 一面+二面+HR面
- base
- 深圳/杭州/成都
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
招银网络科技 2027 届秋招(Java 后端)· 一面
- 了解哪些设计模式?
- 平时用过哪些注解?
- 为什么要用 BigDecimal?
- 怎么做到快速查用户?
- 布隆过滤器如何优化?
- 手撕:寻找数组中的峰值。
招银网络科技 2027 届秋招 · 二面
- 自我介绍。
- 挑一个熟悉的项目画系统架构图;什么是系统架构图?
- 对哪种数据库比较熟悉?MySQL 默认的事务隔离级别是什么?
- 元空间数据泄露可能是什么原因、怎么排查?
- 堆空间数据泄露怎么排查?用什么工具分析 dump 文件?是否真实分析过 dump?
- 项目中遇到过 Spring 循环依赖吗、怎么处理?除了三级缓存还有哪些方法?@Lazy 注解的作用及缺点是什么?Spring Bean 的生命周期是怎样的?
- 项目里怎么用 Redis?慢 SQL 怎么排查处理?索引失效的场景有哪些?测试环境 SQL 正常、生产环境很慢怎么办?
- 实习中的难点如何处理?领导给的需求短时间内无法完成怎么办?项目计划和同事产生分歧怎么办?
- Kafka 有什么优缺点、和 RabbitMQ 相比如何?你平时怎么学习新技术、最近有没有接触新东西?
- 为什么用 bitmap?怎么限流?突然流量很大、令牌桶并发很小怎么解决?
招银网络科技 2027 届秋招 · HR 面
- 核对信息与自我介绍;成绩单上有哪些课程?你了解招银网络是做什么的吗?为什么选深圳?有没有亲属在招银?
- 实习的组织架构是怎样的、你怎么沟通交流?能不能在实习单位留用、什么时候出结果?
- 你平时怎么获取学习信息、有没有学以致用的例子?有没有做过项目 owner、怎么分配工作、分配的工作有没有导致小组成员不满意?
- 项目有没有上线部署、指标怎么测算?个人项目简单说说?
- 为什么不考研、成绩如何?实习项目主要负责什么、有什么价值、有没有留用机会?目前有哪些其他 offer?base 地为什么不选北京、城市选择优先级怎么排?
- 有没有领导别人做过项目?参加过哪些校园实践活动?实习学到了什么、和预期有什么不同?希望和哪类人合作、不想和哪类人合作?
- 看你是推免,当时有多少选择、为什么选了这个?说一个最后悔的事情?求学路上最艰难的事情是什么?为什么会选择招银?
招银网络科技 2026 届秋招(Java 后端)· 一面
- Java 面向对象三大特性及应用?子类如何访问父类的私有成员、推荐用哪个?
- 一次 URL 请求的全流程是怎样的?HTTP 1.0 和 HTTP 2.0 有什么区别?
- TCP 三次握手和四次挥手是怎么回事?四次挥手在什么场景下第 2、3 步骤可以合并?
- Java 常用集合类有哪些?HashMap 的实现原理及扩容机制?为什么链表转成红黑树而不是别的数据结构?
- Redis 常用数据结构及应用?
- 项目难点是什么?
- 手撕:把链表 L0→L1→…→Ln-1→Ln 重排成 L0→Ln→L1→Ln-1→L2→Ln-2→…。
招银网络科技 2026 届秋招 · 二面
- 自我介绍;介绍一下你的项目。
- 机器学习 / 深度学习了解多少?Transformer、强化学习常用方法、大模型了解多少?
- 平时用什么 JDK 版本开发?JDK 17 的 Optional 是干嘛的?Stream 流的原理是什么?
- Spring 事务怎么实现?Spring 事务的传播行为有哪些?
- 毕业论文及创新点是什么?
- SQL:一张表(姓名、课程、成绩)统计每个学生的成绩总分并按降序;接上述 SQL 找出每门课程考最高分的学生信息。
- 写一段 Java 文件流读取代码。
- 一台 1GB 内存的机器、一个 1TB 的无序数字文件(换行符分隔),如何找出其中最大和最小的数字?
- 从安全和性能角度设计一个用户登录流程;Token 的原理是什么?登录响应一直转圈很慢怎么排查?
招银网络科技 2026 届秋招 · HR 面
- 有什么爱好?爱看什么书?为什么选择招银?期望薪资是多少?
招银网络科技 2026 届秋招(后端开发,四面 + sp 加面)· 一面
- 自我介绍;面向对象编程的特性是什么?
- JVM 内存分配是怎样的?实践中怎么调整 JVM?老年代什么时候回收、什么时候回收失败、该怎么做?
- 常用的数据结构有哪些?优先级队列在实践中怎么用?
- MySQL 事务机制、事务隔离级别是什么?平时用哪个隔离级别、为什么?
《参考解析》
JVM 与线上问题排查:先分清是哪块内存出的问题
元空间泄露的典型成因是类加载器回收不掉:动态代理、反射、热部署或脚本引擎在运行期不断生成新类,旧的 ClassLoader 又被某个静态引用吊住,MC 只涨不跌。排查路径是先 jstat -gc 看元空间使用曲线,再用 jmap -clstats 或 dump 后在 MAT 里翻 Class Loader 视图,定位是谁持有 ClassLoader;堆泄露则是另一套:jmap -dump:live 或提前挂 -XX:+HeapDumpOnOutOfMemoryError 拿 hprof,用 MAT 的支配树和 GC Roots 引用链找「谁在一直引用」,常见元凶是静态集合、没 remove 的 ThreadLocal、没注销的监听器和无上限缓存。老年代回收发生在 Full GC 时,触发点包括老年代空间不足、晋升失败、分配担保失败、元空间告急和显式 System.gc();回收失败意味着连续 Full GC 后仍腾不出空间,最终 OOM,这时先按泄露查、再去调堆和换收集器。实践中的 JVM 调参经验是:-Xmx 与 -Xms 设成一致避免反复伸缩,按容器 limit 留出堆外余量,优先 G1/ZGC,并常开 GC 日志,因为「调优」的前提是先有可观测的数据。
Spring 与 MySQL:循环依赖、事务与慢 SQL 是同一条链路
Spring 靠三级缓存解决单例的字段/setter 循环依赖——成品池、半成品池和能提前暴露 AOP 代理的 ObjectFactory;构造器注入的循环依赖它救不了,会直接抛 BeanCurrentlyInCreationException。除三级缓存外的常规做法是改 setter/字段注入、把公共逻辑抽成第三个 Bean、或用 @Lazy 延迟注入;@Lazy 的代价是注入进去的是代理,依赖环要到运行时首次调用才暴露,启动期发现不了问题。Bean 生命周期可以按「实例化 → 属性填充 → Aware 回调 → BeanPostProcessor 前置 → 初始化方法 → 后置处理(AOP 代理在此生成)→ 销毁」记。事务本质是 AOP 代理加 PlatformTransactionManager,传播行为里 REQUIRED(默认,加入当前事务)、REQUIRES_NEW(挂起外层另开新事务)、NESTED(保存点)最常被追问,默认只对运行时异常回滚,且自调用会让代理失效。MySQL 默认隔离级别是可重复读,靠 MVCC 提供快照读、靠间隙锁/临键锁挡住幻读。慢 SQL 的排查顺序是慢查询日志定位、EXPLAIN 看 type/rows/Extra 判断有没有走索引和 filesort,再针对性优化;索引失效的高频场景是不满足最左前缀、在索引列上做函数或隐式类型转换、LIKE '%x' 前导模糊、OR 连接非索引列。测试环境正常而生产很慢,通常是数据量与分布不同导致执行计划变了、统计信息过期、缓冲池和连接池配置不同,或线上磁盘 IO 与锁竞争更重——把两边的 EXPLAIN 和执行耗时摆在一起比,比盲加索引有效。
Redis、Kafka 与限流:缓存和消息队列都要说清代价
Redis 在这类项目里一般担三类活:旁路缓存、分布式锁/计数、以及 bitmap 这类位级统计——位图把每个用户的布尔状态压到一个 bit,一亿用户也只要十几 MB,还能用 BITCOUNT、BITOP 做聚合。缓存的追问绕不开穿透、击穿、雪崩:穿透用空值缓存或布隆过滤器挡,击穿用互斥重建或逻辑过期,雪崩给过期时间加随机。布隆过滤器的优化方向是「按预期元素量和可接受误判率反推位数组长度与哈希个数」,它天生只能答「一定不存在 / 可能存在」、默认不支持删除,容量估小了就得靠滚动重建换新过滤器。Kafka 的优势是高吞吐——顺序写、零拷贝、批量与分区并行,加上持久化和可重放;代价是运维复杂、分区内才保序、延迟通常高于 RabbitMQ,而 RabbitMQ 的 exchange 路由更灵活、单条确认更轻,量级不大时反而省心,所以对比要落到业务量级与投递语义上。限流的常见选择是令牌桶(允许突发)、漏桶(恒定流出削峰)、滑动窗口与分布式计数;「突发流量很大而桶太小」这类题的正解是分层治理——网关全局限流、服务级限流、热点 key 单机限流,再叠加排队、降级、熔断和横向扩容,集群场景下用 Redis + Lua 共享令牌桶,避免单机桶被瞬间打空。
手撕题与 HR 面:一个考基本功,一个考稳定性
数组找峰值用二分:nums[mid] < nums[mid+1] 说明峰值在右半,否则在左半,O(log n);答之前先和面试官确认峰值是「大于左右邻居」还是「数组最大值」,边界口径不同写法不同。链表重排的标准三步是快慢指针找中点、反转后半段、再交替合并,目标是 O(n) 时间 O(1) 空间。1TB 文件找最大最小不能一次读进内存,靠流式逐行扫描维护两个极值即可,瓶颈在磁盘 IO,多线程分块各求局部极值再归并是加分项。登录流程设计要同时给安全和性能:密码加盐哈希(bcrypt/argon2)落库、全链路 HTTPS、失败次数限制与风控,Token 用 JWT 做到无状态但无法主动失效,所以配短有效期加 refresh token;「一直转圈」按前端网络瀑布、服务端耗时分解、DB 与下游 RPC、GC 与连接池逐段定位。HR 面筛的不是知识,是稳定性、动机和一致性:为什么这家、为什么这个 base、城市优先级、offer 与期望薪资口径、实习留用与到岗时间、成绩与考研选择、团队冲突怎么处理——这些说法后面会和技术面简历细节对账,给确定的答案比给漂亮的答案重要。原帖未写最终结果;第三份面经(后端开发,四面 + sp 加面)只写到一面就被牛客截断,后续轮次缺失。