面灵AI→

得物 Java 一面(10.17)

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

《面试题目》

  1. String a = “s”、String b = “s”、String c = new String(“s”) 创建了几个对象?
  2. 线程池 core=5、max=10、queue=10 时,提交 4、9、14、25 个任务分别会怎样?
  3. 线程池有哪些拒绝策略?
  4. Spring 用了哪些设计模式?
  5. 最长连续子序列的思路是什么?
  6. 十万人抢十个商品,系统怎么设计?
  7. 如何保证一个人只能抢一个商品?
  8. 羊毛党怎么排除?
  9. 十万 QPS 下 Redis 也扛不住怎么办?
  10. 你平时 AI 用得怎么样?

《参考解析》

字符串题要区分常量池和堆对象:字面量 “s” 会复用常量池对象,new String(“s”) 至少创建一个堆对象,还可能因常量池初始化再创建一个。回答时先声明 JDK 版本和是否首次加载,避免绝对化。

线程池题要按“核心线程、队列、最大线程、拒绝策略”的顺序推演。core=5、queue=10 时,前 5 个建核心线程,接着 10 个入队,超过 15 个才扩到 max=10,再到 25 个触发拒绝。不同 JDK 和队列实现细节略有差异,但主线是这样。

秒杀系统要分层:静态资源 CDN、网关限流、Redis 原子预扣、数据库唯一约束防重、消息队列异步下单。一人一单可以用用户 ID + 商品 ID 唯一键;羊毛党靠设备指纹、账号画像、风控规则和事后审计组合,不能只靠一个阈值。Redis 扛不住时要做分片、本地缓存、请求合并和降级,而不是无限加机器。