CVTE

应用软件开发面经

完整信息

21 条问法 · 21 道题

本篇目录
继续发一下之前整理的面经 -- HashMap扩容的时候,如果两个线程同时触发resize,会发生什么问题?你说的这个链表成环的场景,具体是怎么产生的,画一下。 -- ConcurrentHashMap在JDK8里为什么放弃了分段锁,改用CAS+synchronized,这样设计的好处是什么? -- 讲一下JVM里对象的内存布局,对象头里具体存了什么东西,为什么synchronized锁状态信息能存在对象头里? -- CMS垃圾回收器为什么会有"浮动垃圾"这个问题,G1是怎么规避这个问题的? -- 你说项目里遇到过一次线上OOM,能不能详细讲一下当时dump下来的堆内存快照里看到了什么,最后定位到是哪里的问题? -- 双亲委派模型如果被打破会有什么后果,你知道哪些场景是主动打破这个模型的(比如Tomcat的类加载器设计)? -- AQS里的state变量在ReentrantLock和CountDownLatch里分别代表什么含义,这个设计思路你怎么理解? -- synchronized锁升级到重量级锁之后,还能降级回轻量级锁吗,为什么? -- Spring解决循环依赖用的三级缓存,你能讲清楚每一级缓存分别存的是什么、为什么必须要三级而不是两级吗? -- @Transactional在什么情况下会失效,你在项目里有没有真的踩过这个坑? -- MySQL的B+树索引,如果我在一个字段上建了索引,为什么执行的时候优化器可能选择不走索引,全表扫描反而更快? -- 讲一下MVCC里的ReadView是怎么工作的,可重复读隔离级别下为什么还是有可能出现幻读,用了什么机制去解决? -- 你项目里说做过一次慢SQL优化,具体是怎么通过explain定位问题的,最后加索引还是改写SQL解决的? -- 你简历上写了一个基于大模型做智能客服/文档问答的项目,这个里面用到RAG的话,你是怎么处理检索出来的文档和用户问题相关性不高的情况的? -- 你在这个AI相关项目里有没有涉及到调用大模型API的成本控制,比如上下文长度太长导致token消耗过大,你是怎么处理的? -- 既然你项目里用到了向量数据库做检索,能讲讲你用的是什么方案,为什么选它而不是直接上ES做关键词检索? -- 消息队列这块,你说用RabbitMQ做异步解耦,如果消费者处理失败了,你是怎么保证消息不丢的,重试机制是怎么设计的? -- 如果让你设计一个秒杀系统,你会怎么防止超卖,Redis这块具体怎么用,用了分布式锁还是Lua脚本? -- 你项目里高并发场景下有没有做过限流,用的是什么算法,令牌桶和漏桶的区别你能讲一下吗? -- 最后一个问题比较开放:你觉得现在大模型能不能替代传统的一些后端业务逻辑,比如你做的那个AI项目里,哪些部分是大模型做的,哪些部分你觉得还是必须靠传统代码逻辑兜底? 他们这边会根据你主要熟悉的编程语言来问你相关问题,这次面试给我最大的感觉是,问题问得都不算特别难,但每一个都在往深了问,比如HashMap不会只停在"讲讲原理",而是直接给你一个并发场景让你分析问题会怎么发生,逼着你把原理和实际场景串起来讲清楚。AI那部分反而问得没有八股那么细,感觉面试官更想看你是不是真的动手做过,而不是背了一堆RAG、向量数据库这些名词,问着问着就转回了工程落地的问题上,比如成本控制、检索质量这些很实际的东西。 建议大家准备的时候别只背概念,多想想每个知识点在实际场景里会怎么出问题、怎么解决,这种"场景化"的追问才是这次面试的重点。
本篇目录
  1. 01
    -- HashMap扩容的时候,如果两个线程同时触发resize,会发生什么问题?你说的这个链表成环的场景,具体是怎么产生的,画一下。
  2. 02
    -- ConcurrentHashMap在JDK8里为什么放弃了分段锁,改用CAS+synchronized,这样设计的好处是什么?
  3. 03
    -- 讲一下JVM里对象的内存布局,对象头里具体存了什么东西,为什么synchronized锁状态信息能存在对象头里?
  4. 04
  5. 05
    -- 你说项目里遇到过一次线上OOM,能不能详细讲一下当时dump下来的堆内存快照里看到了什么,最后定位到是哪里的问题?
  6. 06
    -- 双亲委派模型如果被打破会有什么后果,你知道哪些场景是主动打破这个模型的(比如Tomcat的类加载器设计)?
  7. 07
    -- AQS里的state变量在ReentrantLock和CountDownLatch里分别代表什么含义,这个设计思路你怎么理解?
  8. 08
    -- synchronized锁升级到重量级锁之后,还能降级回轻量级锁吗,为什么?
  9. 09
    -- Spring解决循环依赖用的三级缓存,你能讲清楚每一级缓存分别存的是什么、为什么必须要三级而不是两级吗?
  10. 10
    -- @Transactional在什么情况下会失效,你在项目里有没有真的踩过这个坑?
  11. 11
    -- MySQL的B+树索引,如果我在一个字段上建了索引,为什么执行的时候优化器可能选择不走索引,全表扫描反而更快?
  12. 12
    -- 讲一下MVCC里的ReadView是怎么工作的,可重复读隔离级别下为什么还是有可能出现幻读,用了什么机制去解决?
  13. 13
    -- 讲一下MVCC里的ReadView是怎么工作的,可重复读隔离级别下为什么还是有可能出现幻读,用了什么机制去解决?
  14. 14
    -- 你项目里说做过一次慢SQL优化,具体是怎么通过explain定位问题的,最后加索引还是改写SQL解决的?
  15. 15
    -- 你简历上写了一个基于大模型做智能客服/文档问答的项目,这个里面用到RAG的话,你是怎么处理检索出来的文档和用户问题相关性不高的情况的?
  16. 16
    -- 你在这个AI相关项目里有没有涉及到调用大模型API的成本控制,比如上下文长度太长导致token消耗过大,你是怎么处理的?
  17. 17
    -- 既然你项目里用到了向量数据库做检索,能讲讲你用的是什么方案,为什么选它而不是直接上ES做关键词检索?
  18. 18
    -- 消息队列这块,你说用RabbitMQ做异步解耦,如果消费者处理失败了,你是怎么保证消息不丢的,重试机制是怎么设计的?
  19. 19
    -- 如果让你设计一个秒杀系统,你会怎么防止超卖,Redis这块具体怎么用,用了分布式锁还是Lua脚本?
  20. 20
    -- 你项目里高并发场景下有没有做过限流,用的是什么算法,令牌桶和漏桶的区别你能讲一下吗?
  21. 21
    -- 最后一个问题比较开放:你觉得现在大模型能不能替代传统的一些后端业务逻辑,比如你做的那个AI项目里,哪些部分是大模型做的,哪些部分你觉得还是必须靠传统代码逻辑兜底?

相关公司