携程暑期实习一面

#携程求职进展汇总# 面试时间: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. 反问部门业务

面试体验特别好,面试官是特别诚恳、耐心的前辈!
全部评论
mk
2 回复 分享
发布于 03-23 13:21 湖南
写的真好,加油
2 回复 分享
发布于 03-21 14:25 上海
面完有约二面吗,我19面完到现在一点动静没有
1 回复 分享
发布于 03-21 21:30 广东
用的啥项目呀佬
点赞 回复 分享
发布于 04-02 23:47 北京
没有手撕吗
点赞 回复 分享
发布于 04-01 18:55 陕西
笔试后大概多久给面呀
点赞 回复 分享
发布于 03-28 15:57 天津
看得我留下了羡慕的眼泪
点赞 回复 分享
发布于 03-27 18:47 湖北
现在有进展了吗 我也3.21面的还没消息
点赞 回复 分享
发布于 03-25 16:17 四川
佬,项目那个调度筐架是什么
点赞 回复 分享
发布于 03-23 16:22 广东
写的真好,收藏了!佬哪所学校的啊
点赞 回复 分享
发布于 03-23 13:47 湖北
点赞 回复 分享
发布于 03-23 13:01 辽宁
佬tql
点赞 回复 分享
发布于 03-21 15:32 北京

相关推荐

1.问:面向对象三大特征答:封装,继承,多态2.问:hashmap的put过程【转红黑树的过程看一下8和64这俩特定的数字,数组扩容的情况就看扩容阈值】答1.计算哈希值和索引的位置(通过hashcode方法获取其哈希值,得到其在数组中的位置)2.判断桶位是否为空(计算在数组中的位置之后,判断是否产生了哈希冲突,如果没有产生哈希冲突,直接放入,如果产生了hash冲突)3.处理哈希冲突(链表/红黑树) 【不同的键可能计算出相同的哈希值】(通过比较hashcode和equal函数的结果来判断是完成对一个键的更新操作还是添加一个新的键值对)4.容量检查与扩容(不论是空桶上直接插入还是处理哈希冲突都会使hashmap的元素数量增加1,每次size增加后,hashmap都会检查当前的size是否超过了扩容阈值,默认是0.75,如果超过阈值就会扩容产生一个容量为旧容量2倍的数组)3.问:arraylist和linkedlist的区别答:一个是数组一个是链表一个适合读一个适合写4.问:工厂模式和策略模式答:工厂模式:spring使用beanfactory和applicationcontext创建bean对象策略模式:Spring 通过各种接口(如 Resource及其多种实现,允许在运行时根据不同需求切换具体的算法或行为5.问:说说对数据库中索引的理解答:按「数据结构」分类:B+tree索引、Hash索引、Full-text索引。按「物理存储」分类:聚簇索引(主键索引)、二级索引(辅助索引)。按「字段特性」分类:主键索引、唯一索引、普通索引、前缀索引。按「字段个数」分类:单列索引、联合索引。
查看5道真题和解析
点赞 评论 收藏
分享
评论
19
93
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务