4.27参加的面试 (一面技术面)
一、 个人经历与项目背景
主要拷打了我的实习经历 在通过实习经历 聊到类加载器方面的知识
二、 JVM 与内存管理Q7: 能说一下 JVM 类的加载机制是怎样的吗?
Q8: 类加载器的具体 3 个过程是什么?
Q9: 类的初始化过程它具体是做了什么动作呢?
Q10: 静态变量和局部变量是怎么存放的?哪些变量存放在栈(Java 栈)里面?
Q11: 数组是存放在哪里呢?栈中还是堆中?
Q12: 垃圾回收主要做了哪一些事情?具体的回收过程是怎样的?
Q13: 内存碎片是怎么整理的?
Q14: 对象从新生代到最后进入老年代,这个过程是怎样子的?
Q15: 对象进入到老年代之后,多久会被回收?
Q16: 能说一下元空间(Metaspace)吗?主要是存什么的?
Q17: 什么时候才需要去扩容元空间?
Q18: 新生代跟老年代的内存比例一般你会配置多大? 为什么
Q19: 如果现在线上发生了 OOM,一般怎么处理?
Q20: 分析 OOM 的时候,你会用哪些工具来排查?//这点我回答的不好 没有详细了解过
Q21: 弱引用和虚引用的区别是什么?
Q22: 虚引用具体使用的场景有哪些?
三、 缓存架构与 Redis 高并发Q23: 项目里使用 Redis 构建多级缓存是怎么去构建的?
Q24: 除了 Caffeine 之外,本地缓存还有其他的实现方式吗?//这点回答的不清楚
Q25: 使用 HashMap 做本地缓存主要会有什么问题?
Q26: 如果使用 Caffeine,你是怎么去管理缓存内存的?
Q27: 什么时候才会去更新 Redis 里面的数据?
Q28: MySQL 数据更新了,你在什么时机才去同步修改 Redis?
Q29: 异步更新缓存的情况下,会产生什么问题?
Q30: 除了版本号(CAS)机制,还有什么方法来解决异步更新缓存时的并发冲突问题?//这里我只回答了 还有悲观锁来实现 但面试官 继续追问我还有什么其他方式来实现 这点不清楚
四、 Java 集合底层(HashMap)Q31: Java 中 HashMap 的底层实现原理是什么?
Q32: 链表的数据长到多大的时候,它才会去切换成红黑树?
Q33: 为什么链表长度是 8 的时候才转化为红黑树?有考虑过这个问题吗?
Q34: 为什么冲突解决用红黑树,不用其他的一些树结构?
Q35: 红黑树的性能优势主要体现在哪里?
Q36: 有去了解过其他语言(如 Go 语言)的 HashMap 实现吗?
五、 消息队列(MQ)组件Q37: 在项目中具体是怎么使用 RocketMQ 的?
Q38: 异步操作为什么选用 MQ?选型选 RocketMQ 的原因是什么?
Q39: Kafka、RocketMQ、RabbitMQ 这几个不同的消息队列有什么区别?
六、 前沿技术与 AI 项目Q40: SSE (Server-Sent Events) 技术是指的什么?
Q41: 能分享一下你使用 AI Coding 的一些实际经验吗?
Q42: 怎么搭建 Elasticsearch 私有知识库的?怎么把景点、酒店数据导入到 ES 里的?
Q43: 导入 ES 的数据有没有做过数据清洗或者结构化处理?
Q44: 结合知识库,具体是怎么去消除大模型推荐过程中的“幻觉”的?
Q45: 有了解过哈希共现(Hash Co-occurrence)特征提取方法吗?
加上反问环节面了50分钟左右 有点拷打的感觉了

全部评论
(1) 回帖