阿里Java研发 面经全记录 许愿offer call
一面(25m)
1. 自我介绍
2. 简单介绍一下Hadoop生态圈
3. HDFS是如何进行工作的(回答了读写数据的流程)
4. Hadoop2.0的高可用简单介绍一下,为什么要使用ZooKeeper
5. Hadoop和Spark的区别,分别在哪些地方使用
6. 是否还了解其他流式处理的工具
7. 说一下Kafka的特点(从分区,副本,Consumer Group等方面说了一下)
8. Kafka分区机制有什么优势
9. 了解Kafka的零拷贝吗?(这个当时没答上来)
10. 如何解决项目中的高并发问题的(答了使用Mysql乐观锁更新的思想,面试官觉得并发太高可能会有问题,就继续让想想能不能加入Redis进行优化)
11. Redis的IO模型了解吗(答了多路复用,就让我继续展开讲讲IO多路复用的实现)
12. 为什么要使用Hbase(项目中有提,从随机存储,易扩展,hdfs等方面回答的)
13. 手里有其他公司Offer嘛,然后聊了一下事业群的一些事情。当场告诉我接下来会有同事来进行一个比较全面的面试,包括Java基础等等。希望我好好准备,并能够总结一下项目的成果和创新点等等。
一面应该算是简历面,基本上就是照着简历问的。不过没有太多的涉及到Java知识,开始还奇怪,后来发现二面、三面都狂攻Java的知识点。
二面(1h10m)
1. 有什么问题想先问我么?我简单问了一下bu的业务等等
2. 说一下你理解的封装,继承和多态
3. 使用过Java集合吗,介绍一下集合 (我说了一下List,Set,Map几种实现类的区别和特点)
4. 说一下LinkedList和ArrayList插入的复杂度
5. 刚才你说ConcurrentHashMap是线程安全的,如何保证的
6. 了解异常体系吗,介绍一下异常体系
7. 异常捕获时,是先捕获小异常还是大异常(不确定,回答了小异常)
8. 有用过线程池么,介绍一下有哪几种线程池
9. 使用过ThreadLocal吗,介绍一下
10. 线程池中使用ThreadLocal会有什么问题
11. 说一下乐观锁和悲观锁
12. 介绍一下各种排序算法的时间复杂度
13. 说一下你知道的树,并讲一讲他们有什么特点(说了字典,AVL,红黑,B树,B+,并且提了B+用在数据库索引的原因)
14. 讲一下Mysql的四个隔离级别
15. 是否有数据库调优的经验,主要在哪些方面(慢查询,索引失效等等)
16. 使用过哪些中间件和框架等等
17. 平时阅读过哪些源码
18. 聊项目,收获、亮点、成就,是否落地等等
19. 最后聊了一会
三面(1h 7m)
1. 自我介绍
2. 平时通过哪些途径去学习的
3. 使用什么版本的Java,介绍一下该版本的垃圾回收机制
4. 了解G1垃圾收集器吗
5. Linux下如何看CPU的运行状态,如何看具体进程线程的情况
6. 线程的六大状态
7. 程序出现死锁时,CPU和内存的变化
8. 程序出现死锁如何进行定位,如何解决(答的不是很好,回答了用jstack定位代码,并应该尽量提前避免死锁,比如使用tryLock之类带时间限制的)
9. 一个程序,while(true){new Thread().start()}运行会发生什么(不是很清楚,回答了抛异常,应该会堆或者栈溢出,但是下来跑程序什么也没抛,好像是JVM1.8限制了最大创建线程数量?)
10. 用过什么线程池,使用Fixed的线程池时如果一个线程出现异常,那么核心线程会发生什么变化
11. 介绍一下ConcurrentHashMap的数据结构以及为何线程安全。它的size()函数怎么保证返回正确值。是否有更好的方法可以更加去优化它的锁机制(没有答出来)
12. Synchronize和ReentrantLock有什么不同
13. 网络七层模型介绍一下,HTTP和TCP分别位于哪一层
14. TCP和UDP的区别
15. Spring Bean的生命周期
16. Spring中Bean创建中可能出现的冲突问题Spring是如何解决的
17. 使用过什么数据库(mysql),什么版本(5.7),这个版本有什么新特性(这个没回答上来,只知道5.5开始底层引擎使用innodb作为默认的了)
18. 详述一下你知道的几个数据库引擎,比较一下他们的差别
19. 介绍一下最近学习的大数据方面知识(之前自我介绍有说在学大数据,就扯了一些Hadoop和Spark的知识)
20. 简述一下MapReduce的工作流程,如何和HDFS一同工作等
21. 说一下一致性哈希算法
22. 说一下Redis的分布式锁,使用过哪些方式上锁
23. 还用过其他分布式缓存吗(答MemCache,让我比较两者的区别)
24. 介绍一下你了解的机器学习算法(线性,SVM、决策树等等列举了一下,平时用过sklearn、TensorFlow算法这块没做什么准备,不敢多说)
25. 简单说一下CNN
26. 说一件你认为曾经最困难的事情,是如何克服下来的
27. 讲述一下你的优点和缺点
28. 反问,问了一下自己的技术栈有没有什么问题和需要补充的,大佬介绍了很多学习的方式,也希望我能够继续去深入研究数据和算法这块,告诉我这肯定是未来一段时间很重要的一块
三面面试官是P9,部门大Boss,面试过程中明显感觉到压力,试图深挖一些东西和我的一些思考。
四面(交叉17m)
1. 自我介绍一下
2. 随便聊了一会,学过哪些课程,什么学的比较好?(说基础课程中操作系统和网络比较熟悉,其实是其他的有点久了)
3. 操作系统的内核态和用户态说一下区别
4. 进程和线程的通信有什么区别
5. 听说过协程吗?
6. 使用过Flink嘛?它和Spark的区别是什么(没有,只用过Spark)
7. 为啥选择学Spark呢?(当时学Hadoop后面推荐流处理用spark,就继续往下学习了)
8. 看到你项目用过Redis,讲一下穿透,击穿雪崩这些和解决方法
9. 习惯用什么语言?(Java)讲一下volatile关键字吧,在什么地方用到过,能举个例子嘛
10. 有什么想问我的吗?
四面面试官应该超级忙,语气中带着一丝焦急,是蚂蚁金服的P9,果然大佬部门好忙的
Hr面(20m)
1. 是哪里人?(杭州)具体在哪个地方?读的什么高中?高中成绩怎么样?
3. 本科和研究生你感觉有什么不一样
4. 本科就是做这块的,没有直接来工作吗?后来为什么打算考研了
5. 考研有没有什么困难的经历?
hr下午打电话过来,刚好在上网课,就约了晚上,后来9点样子来的电话,觉得hr问的很常规,就是聊聊天,没有传言的那么可怕,人也超级好的。