历经一个月,在4月24日终于结束阿里巴巴JAVA岗的面试,止步在第四轮。虽然最终的结果是失败的,但是面试的过程也让我学到了不少知识,以及知道自己不足的地方和学习的方向。众所周知,阿里的面试绝大部分会考察原理。因此不管是JDK,还是框架的源码或原理大家都需要知道,并进行深入的学习,不能抱有侥幸心理。至少你敢写在简历上的东西,那么就必须知道它的源码级别的原理。
那下面让我来与大家分享一下四轮面试的我被问到的问题,也希望这些问题能给予大家今后学习的方向。
第一轮(59分钟)
1.自我介绍,项目介绍
2.HashMap,ConcurrentHashMap的原理
3.ThreadLocal的原理
4.ThreadLocal会存在什么问题
5.Synchronized锁升级的过程
6.说说线程池的参数,以及工作原理
7.数据库连接池有用过吗?说说数据库连接池的参数设置(我没回答上,因为没配过。不知道的直接回答不知道了)
8.Mysql隔离级别,可重复读怎么实现的
9.Mysql索引的原理
10.Mysql索引失效的场景说说
11.说说BIO、NIO的区别
12.NIO的实现原理
13.垃圾回收算法说说
14.说说垃圾回收器
15.说说CMS的实现原理,以及存在的问题
16.JDK1.7与1.8,JVM的区别可以说一下吗
17.redis你是怎么使用的,用到了哪些数据结构
18.你刚才说到布隆过滤器,那么你能详细说说吗
19.你是怎么用redis实现分布式锁的
20.一致性Hash算法
21.假如redis集群有2个结点,说说redis集群怎么存储数据的
22.你有什么要问我的吗
第二轮(1小时5分钟)
1.自我介绍,项目介绍
2.说说spring cloud的组件
3.服务如何注册,注册后的服务怎么判断服务是否可用
4.再说说Eureka的原理
5.说说hystrix的原理
6.说说fegin和ribbon的区别
7.既然网关使用了zuul,说说zuul的原理,以及缺点
8.说说其它的spring cloud组件
9.说说你项目中遇到的最大的问题,怎么解决的
10.说说分布式事务
11.说说spring的AOP
12.说说spring的事务
13.说说线程池的原理,线程数如何设置
14.知道dubbo吗,可以说说吗
15.知道Netty吗,可以说说Netty吗
16.你有什么要问我的吗?
第三轮(1小时17分钟)
1.自我介绍,项目介绍
2.服务如何部署的?
3.服务如果需要升级,你会怎么办?
4.服务监控说说
5.说说为什么要zuul网关
6.分布式事务实现方式?
7.说说你的系统qps是多少?
8.再说说你的项目?
9.系统的整体架构是怎么样的?当初为什么这么设计
10.说说你做的模块,你在项目中负责什么?
11.生产环境上服务的注册,发现,超时参数如何配置?
12.对于项目,你还有什么想说的吗?
13.你还有其它问题要问我吗?
第四轮(32分钟)- 总监面
1.自我介绍,项目介绍
2.说说在项目中你负责的模块
3.说说项目中你遇到的最大的一个问题,怎么解决的?
4.与上级意见出现不一致,你会怎么做?
5.与产品经理意见出现不一致,你会怎么做?
6.你之前做的项目,现在想一想,对于某个问题,有没有更好的解决方案?
7.你有什么想问的吗?
总结
以上就是我这次参加阿里社招四轮面试的过程,总结几点:
1.基础非常重要,不管是JUC,集合,IO,jvm,源码和原理
2.我很庆幸这次我没有被问到算法,当然不能抱有侥幸,算法也很重要
3.dubbo或者spring cloud的那一套 组件,原理,你肯定得知道吧
4.项目经历真的非常重要。现在的大环境就是 出去面试 要不然就是 分布式,要不然就是微服务架构。不管是分布式还是微服务架构,都涉及到了大数据量,不说亿级流量吧,万级呢? 总之什么样的环境,你就会经历什么样的场景,获取什么样的经验。我想我第四轮失败的原因就是 之前的项目经历不满足部门的要求吧,项目经历真的非常重要,非常重要,非常重要!
知其然,知其所以然