面灵AI→

招银云创 一面面经:Agent 客户端开发的银行系基础与安全追问

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

数据结构与算法(手写代码 + 口述原理)

  1. 栈和队列的区别,如何用两个栈模拟一个队列?
  2. 删除单向链表倒数第 N 个节点(快慢指针思路)
  3. 冒泡排序原理,手写实现;完全逆序输入的时候,提前退出优化为什么失效?

Redis

  1. Redis 的使用场景
  2. 缓存雪崩、缓存击穿、缓存穿透的概念和解决方案

MySQL 数据库

  1. 事务介绍以及 ACID 四大特性
  2. MySQL 索引创建原则
  3. 单库容量大于 100G,数据库优化方案

设计模式

  1. 常用设计模式以及对应的使用场景
  2. 手写单例模式(DCL 双重校验锁)

JVM(银行高频)

  1. JVM 内存泄漏完整排查流程
  2. Java 会造成内存泄漏的常见场景

Java 多线程

  1. Java 线程池相关类有哪些?
  2. ThreadPoolExecutor 七大参数、四种拒绝策略,阿里规范为什么不推荐直接使用 Executors?

计算机网络与安全(Agent 岗位重点考察)

  1. HTTP 和 HTTPS 的区别,从业务保障角度讲 HTTPS 的安全能力
  2. 对称加密、非对称加密的适用场景以及常见算法
  3. Base64 是不是加密算法?
  4. 中间人攻击如何防范?

开放性项目问题

  1. 求职意向写的是 Java 开发,本次岗位是 Agent 客户端开发,怎么选择?

《参考解析》

  1. 两道手写题:两个栈模拟队列、删除链表倒数第 N 个节点:队列题入队永远压 in 栈,出队时若 out 栈为空就把 in 栈全部倒入 out 栈再弹出,均摊 O(1),关键是「只在 out 空的时候倒」,否则复杂度分析说不圆;追问多半反过来考两个队列模拟栈。链表题用哑结点加双指针,快指针先走 N+1 步再一起走到尾,慢指针正好落在待删节点的前驱;边界要主动说清——删除头节点、N 等于链表长度、N 非法,有哑结点就不会写崩。

  2. 冒泡排序的提前退出为什么在完全逆序时失效:提前退出靠「某一轮没有任何交换」判断已经有序。完全逆序时每一轮都在交换,直到最后一趟才可能不交换,所以一次都提前不了,比较次数仍是 n(n-1)/2。这题在考你对优化条件成立前提的理解,别只说「优化没生效」。

  3. 缓存三大问题分开答:穿透是查不存在的数据反复打库,用空值缓存、布隆过滤器或参数校验挡掉;击穿是热点 key 过期瞬间大量请求打库,用互斥重建、逻辑过期或热点不过期;雪崩是大量 key 同时失效或缓存整体不可用,靠过期时间打散、多级缓存、熔断限流与集群高可用兜底。

  4. 单库超过 100G 先别急着分库分表:先看能不能瘦身——归档冷数据、清理冗余索引、把日志和大字段拆到独立表;再考虑读写分离、分区表、垂直拆分,最后才是水平分库分表与分片键选择。顺带补一句慢 SQL 治理与缓存,这套顺序比直接答「分库分表」成熟得多。

  5. DCL 单例为什么必须加 volatile:因为实例化是「分配内存、初始化对象、把引用指向内存」三步,编译器和 CPU 可能重排,别的线程会拿到引用已赋值、对象却还没初始化完的半成品。volatile 禁止这种重排,外层判空避免每次加锁,内层判空防止重复创建——两次判空各自解决什么,要能说清。

  6. JVM 内存泄漏排查流程:先看现象(GC 频繁、老年代持续上涨、Full GC 后不回落),再抓现场(jmap 或 jcmd 导出堆转储),用 MAT 一类工具看支配树和 GC Roots 引用链定位持有者,改完回归验证。常见场景要能报出几个:静态集合只增不减、监听器与回调未注销、ThreadLocal 用完没 remove、连接流未关闭、内部类或匿名类持有外部对象引用。

  7. 线程池题的重头是参数与 Executors 规范:七大参数依次是核心线程数、最大线程数、空闲存活时间、时间单位、工作队列、线程工厂、拒绝策略;四种拒绝策略是抛异常、调用者线程执行、直接丢弃、丢弃最老的任务。阿里规范不推荐 Executors,是因为 newFixedThreadPool 和 single 用无界队列可能 OOM,newCachedThreadPool 的最大线程数是整数上限、会无限建线程,所以应该手动 new ThreadPoolExecutor 把参数显式定下来。

  8. HTTPS 与加密这组题串起来答:HTTPS 是 HTTP 加 TLS,解决明文传输、篡改和冒充三个问题;非对称加密用于密钥交换和数字签名,对称加密用于数据加密(因为快),证书链校验把服务端身份绑到公钥上。Base64 只是编码不是加密,它不提供任何机密性。中间人攻击的防范靠校验证书链与域名、信任系统 CA、启用 HSTS,而不是在客户端忽略证书错误。