快手支付测试开发一面:Java 基础、并发与 AI Coding
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
基础知识
- 你知道 Java 中的容器吗?举几个你常用的说说
- 并发编程有了解吗?你简单介绍一下什么是并发
- 刚听到你提起线程,你知道进程和线程的区别吗?
- 线程池有了解吗?
- MySQL 知道吗?你可以讲讲你了解的它的索引
- Redis 知道吗?讲讲你熟悉的
实习
- 实习中负责哪些内容?
- 用户意图识别,工具路由错了怎么办?
- JSON 动态工具注入时会出现输入非法参数,导致模型一直循环调用同一个工具,这种场景你们有做什么处理吗?
- 上下文压缩过程中怎么保证返回出来的数值是精确的?
- 节省时间成本怎么量化的?
- 当前业务能力有多少可以迁移到另一个平台中?
AI Coding
- AI Coding 环节:用面试官本地的模型,安装对应的 skill,通过关联面试的连接提交脚本
反问
- 自我发展:学历够不够用,要不要考研
- 介绍你们组的业务
- AI 对测试的提效占比
- 劣势与可提升的地方
《参考解析》
-
并发与进程线程的区别别只背定义:并发是多个任务在同一时间段内交替推进,并行才是同一时刻真正同时执行;进程是资源分配的单位(独立地址空间),线程是调度执行的单位(共享进程内存)。测开岗上这题会往场景上引——多线程批量造测试数据、并发压测同一接口时的数据竞争、线程池打满导致请求排队,能接住这些例子比背课本定义更有说服力。
-
线程池要能背全七个参数并说清推演:核心线程数、最大线程数、空闲存活时间、时间单位、工作队列、线程工厂、拒绝策略。任务提交顺序是「核心线程 → 队列 → 扩到最大线程 → 拒绝」,这一点最常被追问;四种拒绝策略(抛异常、调用者执行、丢弃、丢弃最老的)要知道各自适用面。这场面试还提到了虚拟线程,Java 21 之后 IO 密集型任务可以用虚拟线程替代大线程池,代价是不适合 CPU 密集和
synchronized长时间持锁的场景。 -
Redis 的常规考法要串成一条线:数据结构(String、List、Hash、Set、ZSet 及 bitmap、HyperLogLog 等扩展)各自适合什么场景;缓存穿透(布隆过滤器、空值缓存)、击穿(互斥重建、逻辑过期)、雪崩(过期时间加随机、多级缓存);持久化 RDB 是快照、恢复快但可能丢数据,AOF 记命令、可配置每秒刷盘,生产一般是混合持久化。主从复制回答全量同步与增量同步(repl backlog)即可,别展开得太散。
-
MySQL 索引按 B+ 树讲:为什么用 B+ 树(矮胖、叶子链表便于范围扫描、非叶子只存键);聚簇索引与二级索引的区别,二级索引查非索引列要回表,能用覆盖索引就别回表;联合索引的最左前缀原则,以及范围查询之后的条件用不上索引。失效场景准备几条:对索引列做函数或运算、隐式类型转换、
like '%x'前缀模糊、or两侧有一侧不是索引列。 -
工具调用死循环是 AI 测试岗的高频新题:模型反复用同一个工具、还带非法参数,工程上的处理分几层——入参先用 JSON Schema 严格校验,不合法就直接回一条结构化错误让模型改,而不是让请求打到底层;给单个工具调用设最大重试次数与总步数上限,超了就熔断并降级到兜底回复;工具本身做幂等和超时,避免重试放大副作用;全链路埋点记录每次工具名与参数,方便回查是哪一步开始打转。答的时候按「校验 → 限次 → 幂等 → 可观测」四层说,逻辑最清楚。
-
上下文压缩里数值必须精确的问题:根因是数值经模型转述会失真,所以设计上就不该让模型复述数字。常见做法是压缩时把工具产出的结构化字段留空占位,等摘要生成完再由程序统一注入真实数值;或者把关键数值放进独立的上下文槽位、摘要只引用槽位编号。测试视角可以补一句:这类需求要专门设计断言,用固定输入回放比对压缩前后的数值一致性。
-
AI Coding 环节怎么准备:这类环节一般给一个可交互的编程任务,要求在本地面试环境里用指定模型和 skill、通过关联连接提交脚本。要点是先把题目和输入输出约定读全,本地跑通再提交;注意提交脚本的入口、依赖和超时限制,别把时间耗在环境问题上。哪怕结果不完美,也要保证能跑、有日志、过程可复现。
-
反问清单可以参考:问团队业务与测试对象、问 AI 在测试流程里的提效占比与实际落点(这题面试官答 50%)、问团队对不同背景候选人的培养路径、以及自己可以改进的地方。反问是加分环节,挑两个你真关心的问,比连问四个流程问题更像在选团队。