前言:阿里其实是我想去的地方,昨天offer call了。部门是新零售。许愿offer。
其实春招我基本就结束了,就面了三个地方:阿里,腾讯,美团。腾讯和美团目前都拿到了Offer,阿里还在等待。纵观所有的面试中,其实感觉对于我最大帮助的有两个,第一就是算法能力,这个让我在笔试还是面试手撕代码都很轻松,基本上没有碰到难题,都是一眼秒。第二就是实习经历,在字节学到了很多东西,见识了很多新技术。其他公司简历也投了,有的也邀请笔试,比如pdd,快手。这个还没开始,后面佛系随缘了。有空就参加,没空就g了。
1.一面。
(1)自我介绍
(2)聊聊项目中的难点?
(3)你们服务中的qps大概是多少?(这个其实还是挺大的,有几千万)
(4)怎么解决的高并发?(从负载均衡到存储说了一遍)
(5)刚才听你说了后端存储是MySQL+Redis。说说MySQL?
(6)MySQL主从同步怎么实现的?
(7)MySQL索引?
(8)修改主键会有什么影响?
(9)Redis雪崩/击穿/穿透的概念?
(10)怎么解决这些问题?
(11)能说说Redis常用的架构吗?
(12)分布式缓存一致性知道吗?
(13)一致性Hash算法说说?
(14)操作系统了解吗
(15)能说说死锁吗
(16)死锁的解决?(从死锁的产生条件,预防,解除等)
(17)刚才听你说了银行家算法,能说说这个算法吗
(18)有什么想问我的?
2.二面
(1)自我介绍
(2)看你简历上写了了解Kafka,Rocket MQ ,nsq等,能说说这些吗?
(3)说说你们项目上消息队列的选型?
(4)Kafka高吞吐的原因?
(5)Kafka 用于流式计算做过吗?
(6)Rocket MQ为什么经常被用于在线业务?
(7)刚才听你说了tag过滤,能说说这是个什么东西吗?
(8)你们为什么要从nsq迁移到Rocket
MQ?(这个我咋知道,公司推得大家都得迁移。。。。,但是当时幸亏有大佬来讲了讲,我听了一下,说了几个重要的点,主要是nsq的双机房容灾这些)
(9)多线程了解吗?
(10)说说synchronized关键字?
(11)wait/sleep的区别?
(12)nitify/notifyall 的区别?
(13)线程的创建方式?
(14)callable 的优点?
(15)future 接口用过吗?
(16)线程池有几种?
(17)你平时用的哪一种?
(18)说说常用的拒绝策略?
(19)锁知道吗?
(20)自旋锁是什么?(这个最后还说了一下自适应自旋锁)
(21)乐观锁在JDK哪里有?(ConCurrentHashMap里面有)
(22)JAVA的GC?
(23)GC算法/垃圾回收器/分代回收
(24)频繁Full GC怎么处理?
(25)Linux 了解吗?
(26)IO模型说说?
(27)多路复用怎么实现的?
(28)epoll 一定比select/poll 高效吗?(不一定,具体要考活跃的连接数量)
(29)查看当前cpu的状况的命令?(top 就知道这一个)
(30)查看tcp端口?(netstat -t )
(31)微服务了解吗?
(32)服务注册发现是什么意思?
(33)熔断的概念能说说吗?
(34)能说说常见的熔断算法吗(说了一个基于水滴漏斗的算法)
(35)有什么想问我的?
二面说实话,身体被掏空。几乎把我知道的都问了一遍。感觉就是在探底的。然后面完没有一个小时,查了一下就过了。
3.笔试。
面完又被拉去做了笔试,两道编程题。
(1)N个人选出i个组成一队,再从这i个选出一个队长,有多少种方案?这个题很简单。抽象完就是这个:
这个求和很简单,答案是:
至于为啥,简单推理一下,考虑二项式:
对这个二项式求导,然后就会发现结果了。最后令x=1就是答案。这个推到我当时直接在脑子里完成的,前后没有到30秒。这个题需要用到快速幂,大概3分钟就秒了第一题。
(2)一个搜索+DP。我写了一个bfs+dfs+dp 。写了100多行勉强AC.
4.代码评测
本来以为笔试完了就没了,然后又要部门代码评测。四个题。两个算法题我已经记不清楚了,因为很简单。还有两个JAVA多线程。
(1)用两个线程交替打印1-100里面的数字,一个奇数一个偶数。
(2)写个简单的多线程网络程序,这个写的比较简答,写的是基于TCP的同步阻塞搞法,最后又说了可以用JDK的NIO框架或者封装好的Netty可以高效实现。
5.三面
(1)自我介绍
(2)学校里干了啥?
(3)JAVA 学了多少?
(4)框架了解过吗?
(5)能说说Spring里的IOC吗?
(6)依赖注入是什么意思?
(7)AOP呢?
(8)Spring AOP 的底层实现?
(9)Proxy 类里面的Invoke是什么意思?
(10)说说你对回调的理解?
(11)Spring Boot 也了解过吗?
(12)说说它和Spring的区别(幸亏,因为我真的没用过,只知道区别)
(13)网络了吗
(14)说说TCP的三次握手?
(15)四次挥手呢?
(16)为什么要有TIME_WAIT?
(17)包会在链路里面一直死循环吗?(不会,有个ttl)
(18)说说你在字节的项目吧
(19)服务端推送你们是怎么实现的?(说了个WebSocket的搞法,其实我没怎么做这个)
(20)你们的数据量多大?
(21)怎么提高吞吐量?
(22)刚听你说了Faas?能说说这是什么吗?
(23)说说IAAS,PAAS,SAAS?
(24)你怎么看待Faas这个东西?和之前的有什么改进?
(25)刚才听你说你的Faas上游延时其实很高,怎么解决的。(这个瞎说了几个点,其实我一般都是屏蔽掉延时报警。。。。)
(26)有什么想问我的?
三面其实聊得挺舒服的,面完查了一下也直接过了。
6.四面
(1)自我介绍
(2)说说你在字节的项目
(3)权限控制怎么做的?
到了这里,我介绍了一下xxx,然后xxx,最后xxx。
面试官提了一个问题,他这个问题在我看来不是问题,因为不可能出现这种情况。我没get到他的点,就一直bbll这个东西,有10多分钟吧。。。。。最后不了了之。因为我都告诉他了,这种情况不会出现,就是出现在中间件部分就被拦截了,不会打到我这里。他硬要说不安全,问我怎么解决,我就说我再加一层鉴权逻辑。。。。然后我俩bbll个没完了。
(4)好吧,其实你没讲清楚。换个话题。JAVA学的怎么样?
(5)说说你对线程的理解。
(6)多个线程之间的同步?
(7)synchorized 和Lock的区别
(8)能说一下JVM的synchronized支持吗
(9)集合类用过多少?
(10)HashMap 的实现?
(12)线程安全吗?不安全说一下哪些安全?
(13)HashTable 和HashMap 的区别?
(14)设计模式用过哪些?
(15)单例会在哪些应用场景中使用?
(16)单例的线程安全怎么保证?
(17)观察者模式是怎么实现的?
(18)说说消息队列的应用场景。
(19)Rocket MQ 的特点?
(20)为什么常用与在线业务(低延时)
(21)平时看过那些书?
(22)能实习多长时间,什么时候开始?
(23)有什么想问我的?
四面面完感觉没了。。。。因为最后问了一下面试官比较看重面试中的那些点,他说对问题的理解,看看能不能解释清楚,这不是摆明了说我有些问题没说明白吗?感觉gg
过了几天,查了一下还是过了。
7.HR面。
聊了很多,从高中聊到大学以及未来。为啥学计算机?为啥去这个大学?好吧,还算行。
8.昨天 Offer Call 了。
阿里面试算是结束了,看一下还是挺不容易的。