今年初拿了个饿了么P7的offer,
同时大家顺便看看我怎么途虎一轮游的。废话不多说,直接上题吧。
###一面
首先上来就是自我介绍,简单的说下自己的项目经验,涉及的技术栈之类的。
- 01当然,第一个必不可少的问题来了:说说你印象最深刻的项目!
这个已经被问的都不想说了!
挑个有很多槽点的来说,并且自己已经知道问题答案的,于是我说了一个服务迁移同时双写的解决方案。 - 02第二个问题国际惯例先来一个HashMap原理
简单说下HashMap数组+链表结构,hash的实现方式和好处,高低位异或降低冲突,扩容的方式,头插和尾差这些差不多就好了。
然后!
这里我也不等他问了直接讲!
1、ConcurrentHashMap
2、1.7和1.8的实现区别啊
3、1.7使用分段锁啊,而1.8使用CAS+synchronized实现
4、增加了红黑树避免链表过长导致的性能问题
5、put和get的实现我一般就不主动说了太累了,等他问问了就说,不问就省点功夫。
6、synchronized那就说说它的原理
7、monitor对象啊,对象头啊,锁信息、分代年龄、GC标志一些难懂的话
8、锁的优化吧,自旋、消除、粗化、轻量级、重量级、偏向都说一遍
然后,发现java面试真的是八股文套路,又来了新词了!CAS原理又说一通,然后有的面试官又会问ABA的一些东西,又扯下乐观锁版本号之类的。 - 03说到这里面试官好在没跟着乐观锁直接走到数据库去了,问了下线程池原理。
这个太简单了,几个名词maxSize、coreSize、keepAliveTime、queue说一说就好了,基础。 - 04完了真的就开始数据库了,都是常规题,索引B+数啊,覆盖索引,回表啊什么的,
还有也是必问的事务ACID,隔离级别,MVCC原理。
一面都比较基础吧,也没什么难点,简单就过了。
###二面-交叉面
过了快一周接到了二面的电话。
国际惯例,自我介绍+印象最深刻项目!
二面是交叉面,其他组的一个架构师来面的,
上来就是送命题,
- 01问题是:假设有1亿的用户session数据缓存到redis,怎么做保证高可用?
这种题我觉得都是看你有没有思路了,
比如我问他我们根据日活或者其他的数据可以选择缓存一部分热点数据啊,根据停留时长选择过期时间、过期策略,然后看存储的数据类型来选择什么数据格式。
接着讲怎么保证redis的高可用,这个可就简单多了,这就是面试技巧了,讲高可用就讲会出现的问题就行了,redis就直接从主从复制、哨兵、集群、持久化什么AOF RDB说,够说10分钟,说完了看情况接着说缓存击穿、雪崩、穿透、热key怎么解决,把能说的都说一遍就结束了。
面试官肯定一看这小伙子不错,我都没问他就说完了,妥了妥了。 - 02问题说:cpu负载和CPU使用率区别?
我告诉他医院有3个医生,10个病人都排在一个医生下面,另外2个医生没人,这时候CPU使用率是33.33%,但是负载就非常高了。
然后接着问系统负载过高怎么办?不是CPU负载也不是IO负载!
这一题我没回答,主要是感觉没太明白意思,后面去网上搜了一下,说是阿里面试必问题,大家有兴趣可以去搜搜看。 - 03然后,聊了下GC,年轻代老年代的收集器哪些?GC过程,不是很深入。
- 接着说饿了么日订单过千万,针对这个场景分库分表你怎么做?
我的回答:这个按照我们之前的经验说了下之前的解决方案,根据用户或者商家维度sharding,历史数据归档,只能查询3个月或者半年数据,有更多的需要走离线数仓这种。
然后一定会问那根据用户sharding其他维度的查询怎么办,这里就是关联表啊,索引啊,如果可以一定带着sharding_key去查询啊,实在不行只能多线程扫表啊,还有打宽表之类的。 - 04又聊MQ,怎么保证消息的可靠性?
因为我们之前用阿里云的ONS,就以RocketMQ举例子,丢失的场景啊,生产者发送失败、MQ自己丢失、消费者消费失败3个方面说就好了。 - 04最后就聊了下1.8的新特性stream啥的说说,BIO\NIO说说最后就结束了。整体感觉还行,除了那个负载的问题有点坑,另外就是NIO这个确实基本没用上靠背书了。
###三面-老板面
3面就是以后直属老板面试了。
这一轮没太多聊技术问题,主要是聊项目怎么做的啊,怎么设计啊,让你设计的话你怎么设计,
不过这一轮感觉当时脑子有点抽就是面的不太行,反应迟钝,反而最简单的是面的最不好的一轮。
总结
如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了,如果你有需要的话,请一定点赞分享本文,然后点击这里获取免费下载方式!
《Java中高级核心知识全面解析》
小米商场项目实战,别再担心面试没有实战项目:
…(img-QpaQEnV9-1628130670982)]
小米商场项目实战,别再担心面试没有实战项目: