面灵AI→

快手支付测试开发一面:Java 基础、并发与 AI Coding

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

《面试题目》

基础知识

  1. 你知道 Java 中的容器吗?举几个你常用的说说
  2. 并发编程有了解吗?你简单介绍一下什么是并发
  3. 刚听到你提起线程,你知道进程和线程的区别吗?
  4. 线程池有了解吗?
  5. MySQL 知道吗?你可以讲讲你了解的它的索引
  6. Redis 知道吗?讲讲你熟悉的

实习

  1. 实习中负责哪些内容?
  2. 用户意图识别,工具路由错了怎么办?
  3. JSON 动态工具注入时会出现输入非法参数,导致模型一直循环调用同一个工具,这种场景你们有做什么处理吗?
  4. 上下文压缩过程中怎么保证返回出来的数值是精确的?
  5. 节省时间成本怎么量化的?
  6. 当前业务能力有多少可以迁移到另一个平台中?

AI Coding

  1. AI Coding 环节:用面试官本地的模型,安装对应的 skill,通过关联面试的连接提交脚本

反问

  1. 自我发展:学历够不够用,要不要考研
  2. 介绍你们组的业务
  3. AI 对测试的提效占比
  4. 劣势与可提升的地方

《参考解析》

  1. 并发与进程线程的区别别只背定义:并发是多个任务在同一时间段内交替推进,并行才是同一时刻真正同时执行;进程是资源分配的单位(独立地址空间),线程是调度执行的单位(共享进程内存)。测开岗上这题会往场景上引——多线程批量造测试数据、并发压测同一接口时的数据竞争、线程池打满导致请求排队,能接住这些例子比背课本定义更有说服力。

  2. 线程池要能背全七个参数并说清推演:核心线程数、最大线程数、空闲存活时间、时间单位、工作队列、线程工厂、拒绝策略。任务提交顺序是「核心线程 → 队列 → 扩到最大线程 → 拒绝」,这一点最常被追问;四种拒绝策略(抛异常、调用者执行、丢弃、丢弃最老的)要知道各自适用面。这场面试还提到了虚拟线程,Java 21 之后 IO 密集型任务可以用虚拟线程替代大线程池,代价是不适合 CPU 密集和 synchronized 长时间持锁的场景。

  3. Redis 的常规考法要串成一条线:数据结构(String、List、Hash、Set、ZSet 及 bitmap、HyperLogLog 等扩展)各自适合什么场景;缓存穿透(布隆过滤器、空值缓存)、击穿(互斥重建、逻辑过期)、雪崩(过期时间加随机、多级缓存);持久化 RDB 是快照、恢复快但可能丢数据,AOF 记命令、可配置每秒刷盘,生产一般是混合持久化。主从复制回答全量同步与增量同步(repl backlog)即可,别展开得太散。

  4. MySQL 索引按 B+ 树讲:为什么用 B+ 树(矮胖、叶子链表便于范围扫描、非叶子只存键);聚簇索引与二级索引的区别,二级索引查非索引列要回表,能用覆盖索引就别回表;联合索引的最左前缀原则,以及范围查询之后的条件用不上索引。失效场景准备几条:对索引列做函数或运算、隐式类型转换、like '%x' 前缀模糊、or 两侧有一侧不是索引列。

  5. 工具调用死循环是 AI 测试岗的高频新题:模型反复用同一个工具、还带非法参数,工程上的处理分几层——入参先用 JSON Schema 严格校验,不合法就直接回一条结构化错误让模型改,而不是让请求打到底层;给单个工具调用设最大重试次数与总步数上限,超了就熔断并降级到兜底回复;工具本身做幂等和超时,避免重试放大副作用;全链路埋点记录每次工具名与参数,方便回查是哪一步开始打转。答的时候按「校验 → 限次 → 幂等 → 可观测」四层说,逻辑最清楚。

  6. 上下文压缩里数值必须精确的问题:根因是数值经模型转述会失真,所以设计上就不该让模型复述数字。常见做法是压缩时把工具产出的结构化字段留空占位,等摘要生成完再由程序统一注入真实数值;或者把关键数值放进独立的上下文槽位、摘要只引用槽位编号。测试视角可以补一句:这类需求要专门设计断言,用固定输入回放比对压缩前后的数值一致性。

  7. AI Coding 环节怎么准备:这类环节一般给一个可交互的编程任务,要求在本地面试环境里用指定模型和 skill、通过关联连接提交脚本。要点是先把题目和输入输出约定读全,本地跑通再提交;注意提交脚本的入口、依赖和超时限制,别把时间耗在环境问题上。哪怕结果不完美,也要保证能跑、有日志、过程可复现。

  8. 反问清单可以参考:问团队业务与测试对象、问 AI 在测试流程里的提效占比与实际落点(这题面试官答 50%)、问团队对不同背景候选人的培养路径、以及自己可以改进的地方。反问是加分环节,挑两个你真关心的问,比连问四个流程问题更像在选团队。