携程春招实习 后端 一二面
线下面的,在等hr面,什么部门忘记问了😓
一二面连在一起,全凭回忆,想到啥写啥
- 项目架构,一二面都问了项目架构,问的挺细
- 前端的问题(简历里我也做了前端,所以问的),大屏地图用了什么组件,怎么标点的,坐标系有了解过吗,序列化方法(JSON),跨域问题了解过吗
- 消息推送系统的责任链是什么,概括一下(类比pipeline的实现)
- 消息发送过程中,如果某一步出问题,怎么定位问题(打印日志,结合日志锚点实现) 锚点怎么嵌入到责任链模式中,会有并发问题吗(这个我答得不好,没理解问题,面试官勉强觉得可行)
- 线程池参数,阻塞队列什么时候会用到
- 动态线程池,如何动态更改变量,是创建一个新的线程池吗(结合Apollo来回答)
- 项目有过kafka消息丢失得问题吗,什么情况下发生,怎么解决的(Consumer端手动提交,说了这种方法的优缺点)
- 项目redis的作用是什么(消息去重) 怎么实现的去重(滑动窗口) 你用滑动窗口会出现数据量过大的问题吗(没有,我用的滑动窗口是会删数据的) zset用的键怎么保证唯一性(拼接消息模板id+消息内容参数+接收人)
- redis的string的底层数据结构(只提了sds,说只是知道) 跳表了解过吗(了解过,简单说了下,貌似觉得我不是很了解,没继续问)
- redis的io模型了解过吗(IO多路复用),介绍下IO多路复用(面试官应该想知道细节,但是我答得很乱)
- JPA是什么,你用的是哪个JPA实现(Spring Data JPA),JPA懒加载(完全不会)
- 项目是单机的吗?为什么不考虑分布式(说项目比较复杂,时间不太够,能力可能不太够,面试官说,不用拆分模块,直接把单机项目部署到多个机器,配置nginx负载均衡。好吧!)
- 分布式的话,怎么保证不出现问题(没太理解,我答了分布式锁的大概怎么用的,应该是对的)
- 你如何理解线程安全,什么情况会发生线程安全问题 怎么解决(加锁,CAS,原子类)
- synchronized和Lock区别(一个是底层ObjectMonitor,一个是AQS)
- AQS是什么
- 用Lock有什么好处(没太听懂,我答了ReentrantLock可以Conditional)
- ReentrantLock的加锁可以被打断吗(可以,ReentrantLock的interruptedLock()
- ABA问题如何解决(AtomicStampedReference),AtomicStampedReference怎么解决ABA的(代码大概怎么写)
- 重写equals为什么要重写hashcode(这个要深入理解)
- 一面算法问了二分查找,二面栈实现队列,队列实现栈,秒