2021年阿里巴巴Java岗位面试
前言
作者蹊源前段时间有幸被阿里的一位同学内推,参加了阿里巴巴Java
岗位的面试,本人19年双非本科软件工程专业,目前有一年半的工作经验,面试前就职于一家外包公司。如果在自己本人拿到offer
之前,如果有人告诉我一年工作经验可以直接从外包进阿里,我肯定是不信。但是真的发生在自己身上,真的觉得非常非常幸运与不可思议。
正文
阿里面试总共有五面,包括:
- 第一轮电话面试(同事面):将近1h20min,主要是介绍项目与基础知识
- 第二轮视频面试(组长面):将近1h,同样也是介绍项目与基础知识
- 第三轮视频面试(主管面):将近40min,更深次的项目以及分布式的解决方案
- 第四轮视频面试(主管面):将近1h,项目介绍以及基础知识,也会问你的职业规划
- 第五轮视频面试(项目+hr):将近1h,前半部分是技术面,后半部分是hrg面试
主要涉及的知识
Java部分:
Jdk1.7
与jdk1.8
在g1
垃圾回收器上有什么区别?- 常见的加载器有哪些,如何自定义一个加载器?
- 生产上有没有与到
JVM
参数调优的问题? - 知道什么是内存泄露吗,如何手动去造成内存泄露?
- 线程池常见的一些参数,知道
Future
接口吗? - 常见的代理有哪些,两者有什么区别?
数据库部分:
- 常见的索引类型有哪些?
- 为什么主键索引使用B+树而不去使用B树?
- 说一说联合索引最左原则的原理,并且什么情况下索引是生效的?为什么?
- 常见的隔离级别有哪些?有什么区别?
- 知道回表查询吗?聚集索引?
- 项目中有没有使用到分表分库?说一说怎么分的?
分布式/中间件部分:
Redis
是单线程的吗?- 为什么
Redis
的性能比较高? Redis
集群化的方式有哪些?怎么确保数据的一致性?说一说你对一致性hash的认识。- 消息队列中拉模式与推模式的区别?
- 使用消息队列有没有遇到消息丢失的情况,怎么去设计补偿行为?
- 说一说项目中为什么使用
Kafka
而不去使用其它消息队列? - 说一说
Zookeeper
中的Zab
协议 - 分布式锁的实现方案有哪些?各有哪些优势与缺点?
- 分布式限流
Sentinel
中线程模式与QPS
模式的区别 Sentinel
阈值单机模式与集群模式的区别- 如何解决限流时在一个服务中调用外部服务,不会因为外部服务超时,导致被限流。
ElaticJob
分布式调度时如何解决数据倾斜的问题
微服务部分:
- 有没有遇到
dubbo
连接数爆满的问题 dubbo
如何实现使用zookeeper
找到对应的服务dubbo
使用zookeeper
作为分布式治理中心有什么弊端- 说说你认为
dubbo
与SpringCloud
的差异
其它:
SpringBoot
的启动过程- 如果访问一个域名,说说怎么达到我们的应用服务器
- 如何解决秒杀模块“库存”超卖的问题
- 如何解决秒杀模块“订单超时回库存”的问题
总的来说,阿里的面试会结合你的项目经验问的还是相当全面的,我们在准备面试的时候要对自己“拿的出手”的项目做好充分的准备,面试官可能会让你介绍一下这个项目包括项目背景、项目架构、QPS
等等。另一方面,要对自己有信心,只要自己准备的足够充分,就可以在面试中发挥自如。
其它
同时我希望下面的文章可以略微帮助大家:
- 蹊源的Java笔记—集合之Collection接口
- 蹊源的Java笔记—集合之Map接口
- 蹊源的Java笔记—JVM
- 蹊源的Java笔记—线程并发与线程安全
- 蹊源的Java笔记—Spring
- 蹊源的Java笔记—Mysql数据库
- 蹊源的Java笔记—Redis服务器
- 蹊源的Java笔记—消息队列
- 蹊源的Java笔记—分布式
- 蹊源的Java笔记—微服务
- 蹊源的Java笔记—设计模式