前言:阿里其实是我想去的地方,昨天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个选出一个队长,有多少种方案?这个题很简单。抽象完就是这个:

                                                                          阿里春招面试_redis

这个求和很简单,答案是:

                                                                           阿里春招面试_死锁_02

至于为啥,简单推理一下,考虑二项式:

                                                                  阿里春招面试_redis_03

对这个二项式求导,然后就会发现结果了。最后令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 了。

阿里面试算是结束了,看一下还是挺不容易的。