#携程求职进展汇总# 面试时间:2025.03.21(面试官人特别好!!!)1. 自我评价2. 问了毕业时间---- 项目拷打(仅整理非业务逻辑强关联的问题,避免大家阅读不畅)3. 服务端可以介绍一下整体架构,以及实体之间的通讯方式吗?4. 服务端主动推送任务和执行器主动拉取的优缺点分析?5. 分布式锁在项目里怎么用的?6. 分布式锁解决多机竞争方面,作为一个分布式框架,性能可能受限,你还有什么别的解决办法吗?(面试官解释:)除了加分布式锁,如果数据量更大,你有什么增强的功能吗?8. 你的这个框架有点类似于MQ,那么对于MQ的话,内部如何实现大量消息的消费?生产者、消费者之间如何去做这样的调度?9. 在你这个框架下,如果让你添加一个定时任务的功能,你怎么考量?(首先,承载定时调度逻辑的server不负责执行,那么server和执行器都需要维护定时器,在此基础上,答了两个思路:1. 提前拉取任务到执行器 2. 预估是否能成功执行,不能则告警,由server分配新执行器)10. 追问:提前分发任务的时间(之前说了十分钟),面试官说有点多(我说这是根据任务平均执行时间来看的)11. 任务执行失败如何处理?12. 既然你的任务由DB维护,server也主要是在做db操作,那么为什么不由执行器直接去写DB?13. 什么时候会分表?按数量滚动分表如何知道数据在哪个表上?---- 八股部分14. Redis分布式锁如何实现续期?(答了redission的续期机制)15. 那么到超时时间1/3时,如何知道是否需要续期?(答主动unlock后肯定不必续期,否则只要任务活跃,就会续期)16. 你的意思是说unlock后再续就续不上了?(答是的,unlock执行顺利的话,锁已经释放掉了)17. DB和缓存一致性问题如何解决?(强一致性禁用缓存,稍弱一点先写后删,最终一致性监听binlog结合MQ异步更新)18. 缓存击穿、雪崩、穿透的异同(吟唱XD)19. 热key的危害及解决方法(答热key最直观的危害体现在对Redis服务的可用性上,首先考虑Redis是否使用了高可用部署,例如主从、分片集群等)20. 现在没那么多机器,应用层面解决这个问题呢?(答本地缓存结合Redis形成多层缓存,但需考虑多实例部署时,不同实例间本地缓存的一致性问题)21. 能否让这个key变得不热(答可以像拆分大key一样,做一下拆分)22. 慢SQL如何优化(领域展开,吟唱中....)23. (面试官前辈打断的好温柔,说时间关系,继续下一个问题)双字段索引单个字段查能否命中捏?(答可以)24. spring boot的启动类注解有什么功能(答由三个子注解组成,吟唱自动配置原理,吟唱配置类注解原理,还没吟唱组件扫描时被温柔打断)25. Java是解释型还是编译型语言?(答均有,答了字节码解释执行、AOT、JIT)26. 编译完的class字节码是二进制存储的吗?(有点愣神,想了下看过那个深入理解JVM虚拟机,里面那个class文件格式,先是魔数,后面是,,,,,答是的,然后表达了解过那个文件格式)27. lambda表达式为啥子使用作用域内局部变量时,提示必须为有效final?(答lambda原理,因为lambda表达式可能在作用域外执行,因此为了避免指针悬空,此处需要进行值捕获,也就是copy一份,这个问题和cpp的lambda是类似的)28. 反问部门业务面试体验特别好,面试官是特别诚恳、耐心的前辈!