首页 > 携程 已经OC + 三轮技术面经
头像
rwp_neverGiveUp
编辑于 2021-04-06 20:44
+ 关注

携程 已经OC + 三轮技术面经

一轮笔试+三轮技术面+1轮HR面结束。java后端,希望能OC吧,别被英语测评卡住了😢
------------------------------------------------------------------
来还愿啦,今天中午OC了,好开心
说好要补的面经: 校招-java后台岗位
一面 3.9
1.从自己做的一个项目出发(基于WebSocket+RabbitMq的实时健康数据采集+展现平台),问了一些问题:
1.1HTTP1.1和1.0的区别有哪些?
1.2socket的长连接和HTTP的关系,你有了解过吗?
1.3你有自己进行过java的网络编程吗?(我说没有很详细了解过,但是大概讲了下自己系统中Socket后端消息推送的实现。也还算过关
1.4OSI网络的七层是如何划分的?TCP和UDP的区别有哪些?TCP3次握手的过程是什么?
1.5HTTPS和HTTP的区别你了解吗?
2.你有看过什么框架的源码吗?(我回答的Spring)
2.1说一下你对IOC的理解。(我主要结合工厂模式对IOC进行了说明,然后表明了一下IOC的两个核心接口BeanFactory和ApplicationContext,为了表明自己看过源码)
2.2Spring中Bean创建过程中的回调函数你了解吗?(主要就是四种方式:init-method、@PostConstruct 、BeanPostBeforeProcessor、BeanPostAfterProcessor,然后我补充了一下这四个回调的执行顺序
2.3Spring中Bean的类型(主要就是单例和原型,然后我补充了一下scope的其他几种javaweb下的类型,然后补充了一下哪些情况下使用单例还是原型【是否需要区分会话状态】)
3.java中线程同步和互斥的方式你知道了哪些?
(关于互斥方式我回答3种:1.synchronized 2.AQS的Lock 3. CAS)
(关于同步方式我回答的2种:1.基于JVM内存模型的synchronized和Object方法的wait和notify等的线程同步策略。2.基于AQS实现的一些同步类,如Condition和CountDownLauch等)
4.java中集合类你可以说明一下吗
(我从java中两个并列的接口Map和Collection展开,讲了一下集合类的框架。然后补充了一下JUC包下的集合类,如阻塞队列,COWList和并发Map等)
5.描述一下Juc包下的并发Map
(这主要就是结合普通HashTable进行区别,核心观点是**减小锁粒度**的分段锁思想,然后补充了一下JDK1.7和1.8中的不同区别【取消了Sagment两段Hash】,再补充了一下改动的原因)
6.最后让我写了一题 归并排序,面试官说要注意**编码风格**。

一面总结:基础要扎实,在回答问题的时候可以适当做一些补充。
------------------------------------------------------------------
二面 3.15
1.惯例聊项目,这次选了我的毕设项目(堆了一下技术栈【springcloud+redis+elasticsearch+rabbitmq+nacos+sentinel等】,整了个高可用),也是我觉得最能体现我目前水平的项目
1.1讲一下你如何用技术解决问题?(这里我认为除了说用什么技术解决问题,还需要讲一下自己**对于技术选型的思考**,我详细说明了我对于缓存GAVA Cache和Redis的思考)
1.2你项目中用了Redis的哪些数据类型?(这里我说了数据类型,然后补充了这些数据类型底层的数据结构【如SortSet底层是 跳表+Hash+压缩列表】,然后赞叹了一下Redis设计的巧妙)
1.3然后我引导面试官问Redis的持久化问题。(这里我结合项目详细讲了一下RDB和AOF的区别,然后说了下我的思考和最终方案。)
1.4还是引导面试官问我项目中关于Redis分布式锁的实现和思考。(这里除了说自己的Redis实现方式,我觉得主要需要说明分布式锁需要注意的问题,【如:1.加锁和解锁的原子性 2.如何防止死锁  3.解锁时区分线程身份】)
1.5项目中Mq你是如何思考的?(惯例,最主要要说,为什么选用MQ,结合项目,如消峰填谷,降低响应时间等等,然后我补充了一下我对于MQ的可靠性的研究【如:1.使用两次确认回调+手动ACK机制保障消息可靠性 2.消费端如何做幂等性处理防止重复消费】)
1.6说一下你简历中写的对于项目 服务限流和降级的思考?(这就结合项目说吧,思路:限流算法啊什么的)
1.7总结。一定要深入熟悉项目中用到的技术,不要只停留在项目的基础上。
2.JMM你了解吗?(java内存模型,主要就是解决多级缓存+处理器优化+指令重排,带来的可见性+有序性+原子性问题。)
(然后我详细解释了一下 JMM中synchronized和volatile的在解决有序性和可见性上的区别,然后将了一下happens-before规则什么的)
3.最后两道算法题,滑动窗口的,比较简单。

二面总结:对项目中的所有技术一定要深入学习。然后用简历去引导面试官提问。

-----------------------------------------------------------------------
三面 3.16  感觉是一个leader,问的问题专注于项目的设计
1.因为我在去年7月份到今年1月份在不知名公司实习,所有问的都是实习的内容(我在简历里写出了主要两个实践)
1.1 结合第一个实践(后端分页处理),进行提问:详细讲一下你这个实践的思考和最终解决
1.2 你后端分页是用的什么方式?(我先提出最开始使用Limit 然后又说了一下大数据量下LIMIT的性能问题,然后将了最终的实现方案:基于ID做一个覆盖索引来优化效率,然后补充了另外一种方案的思考【通过主键where id > 的方式】)
1.3 分析上面提到三种分页方式的优缺点
1.4 将了一下对于实习中SQL优化的过程?(结合Mysql的索引结构,讲了一些优化方案和注意的点。如慢查询优化、explain、show profile【最后将了一下新调优手段optimizer trace】)
1.5问了Mysql的隔离级别和解决的问题?(四种隔离级别+脏读、不可重复度、幻读,最后我补充了一下Mysql实现四种隔离级别的方式【undolog + MVCC解决不可重复读、next-KEY算法解决幻读等等】)
2.然后问了一些项目设计的思考和手段
2.1比如 大文件导入的思路
2.2TopK的思路
3.问我从之前的实习学到了什么?
4.实习过程中有没有发现之前实习的公司有哪些不合理的地方?

三面总结:三面是SP加面,感觉更侧重之前的实习经历和对于项目设计的思考。

----------------------------------------------------------------------
结束啦,最后进了携程的技术中台岗位。嘿嘿,浙江不知名双非能进大厂也算是很满意了😀。努力有回报就很开心。
希望对大家有帮助哦

更多模拟面试

全部评论

(14) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐