前言
前段时间有幸被阿里的一位同学内推,参加了阿里巴巴Java岗位的面试,本人21年双非本科软件工程专业,目前有一年半的工作经验,面试前就职于一家外包公司。如果在自己本人拿到offer之前,如果有人告诉我一年工作经验可以直接从外包进阿里,我肯定是不信。但是真的发生在自己身上,真的觉得非常非常幸运与不可思议。
Alibaba的这次面试总共有五面,包括:
- 第一轮电话面试(同事面):将近1h20min,主要是介绍项目与基础知识
- 第二轮视频面试(组长面):将近1h,同样也是介绍项目与基础知识
- 第三轮视频面试(主管面):将近40min,更深次的项目以及分布式的解决方案
- 第四轮视频面试(主管面):将近1h,项目介绍以及基础知识,也会问你的职业规划
- 第五轮视频面试(HR):将近30min,离职原因和薪资问题

第一轮电话面试(同事面)
- HashMap和HashTable以及CocurrentHashMap详细说明
- 网络IO模型?什么是多路复用IO?select和epoll的差别?
- TCP三次握手的过程,如果没有第三次握手有什么问题?
- 常用的线程池有哪些?各自的应用场景?
- Java类加载机制?双亲委派模型的好处?
- JAVA并发包组件了解多少?
- 什么时候多线程会发生死锁?怎么来预防
- 操作系统的用户态和核心态切换条件以及为什么要切换
- 数据库事务特点?事务隔离级别?项目中的事务实现?脏读、不可重复读、幻读各举个例子?
第二轮视频面试(组长面)
- 数据库索引?B+树?为什么要建索引?什么样的字段需要建索引,建索引的时候一般考虑什么?索引会不会使插入、删除操作效率变低,怎么解决(分表分库作)?
- 设计模式,单例模式,怎么保证线程安全?锁效率太低,怎么提高效率?
- CAS?CAS本质是什么?什么是原子性?Compare and Swap两步操作,为什么能保证原子性(涉及到CPU指令)?
- 分布式锁的实现知道到哪些?你更推荐哪一种锁?
- Redis的持久化操作有哪些?
- 如何利用redis处理热点数据
第三轮视频面试(主管面)
- 有接触过哪些消息队列中间件?如何来选型?
- 谈谈你的SOA以及微服务的理解?
- 具体谈谈Spring Cloud服务和注册?
- 分布式的cap了解么,分别指什么?
- 网络编程nio和netty相关,netty的线程模型,零拷贝实现?
第四轮视频面试(主管面)
- Redis是单线程还是多线程?Redis的分布式集群怎么做?
- 了解过集群雪崩么?
- 谈谈高并发场景下削峰,限流的实现?
- 你之前工作的项目里个人最满意的,谈谈你的架构设计思路?
- 未来2年是怎样打算的?
第五轮视频面试(HR面)
- 为什么要从上一家公司离职?
- 为什么要选择这里?
- 如何看待加班问题?
- 平时自己是怎么学习技术的,除了Java相关,还会去了解其他什么技术?
- 期待的薪资是多少?
总结
稍整理了一下,主要涉及以下知识:Java、数据库、分布式、中间件、微服务等,我大致将每个部分的问题整理了一下,并且附带了整理与其对应的最硬核的复习笔记(我花了不少时间整理的,希望能对你有用-公众号【不脱发有志青年】
第一:Java部分
面试问题:
- Jdk1.7与jdk1.8 在g1垃圾回收器上有什么区别?
- 常见的加载器有哪些,如何自定义一个加载器?
- 生产上有没有遇到JVM参数调优的问题?
- 知道什么是内存泄露吗,如何手动去造成内存泄露?
- 线程池常见的一些参数,知道Future接口吗?
- 常见的代理有哪些,两者有什么区别?
相关复习笔记:
1.JVM复习参考:多线程+垃圾回收+GC+类加载机制...

JVM复习参考:多线程+垃圾回收+GC+类加载机制...
2.Java性能调优实战:JVM+多线程+数据库+设计模式+Tomcat+实战演练...

Java性能调优实战:JVM+多线程+数据库+设计模式+Tomcat+实战演练...
第二:数据库部分
面试问题:
- 常见的索引类型有哪些?
- 为什么主键索引使用B+树而不去使用B树?
- 说一说联合索引最左原则的原理,并且什么情况下索引是生效的?为什么?
- 常见的隔离级别有哪些?有什么区别?
- 知道回表查询吗?聚集索引?
- 项目中有没有使用到分表分库?说一说怎么分的?
相关复习笔记:
1.MySQL数据库复习参考:索引+锁+分库分表...

MySQL数据库复习参考:索引+锁+分库分表...
2.MySQL高级知识整合:架构+存储引擎+锁+事务+SQL优化...

第三:分布式/中间件部分
面试问题:
- Redis是单线程的吗?
- 为什么Redis的性能比较高?
- Redis集群化的方式有哪些?怎么确保数据的一致性?说一说你对一致性hash的认识。
- 消息队列中拉模式与推模式的区别?
- 使用消息队列有没有遇到消息丢失的情况,怎么去设计补偿行为?
- 说一说项目中为什么使用Kafka而不去使用其它消息队列?
- 说一说Zookeeper中的Zab协议?
- 分布式锁的实现方案有哪些?各有哪些优势与缺点?
- 分布式限流Sentinel中线程模式与QPS模式的区别?
- Sentinel阈值单机模式与集群模式的区别?
- 如何解决限流时在一个服务中调用外部服务,不会因为外部服务超时,导致被限流。
- ElaticJob分布式调度时如何解决数据倾斜的问题?
相关复习笔记:
1.Redis复习参考(68道高频面试解析题):基础+数据结构+高并发处理+集群+缓存...

Redis复习参考(68道高频面试解析题):基础+数据结构+高并发处理+集群+缓存...
2.Kafka复习参考:集群+生产者+消费者+源码...

Kafka复习参考:集群+生产者+消费者+源码...
3.RocketMQ复习参考:消息+源码+队列...

RocketMQ复习参考:消息+源码+队列...
4.消息队列高频面试整理:面试官心理分析+面试题详解...

消息队列高频面试整理:面试官心理分析+面试题详解...
5.分布式系统高频面试整理:Dubbo+Zookeeper+分布式事物+分布式锁...

分布式系统高频面试整理:Dubbo+Zookeeper+分布式事物+分布式锁...
第四:微服务部分
面试问题:
- 有没有遇到dubbo连接数爆满的问题?
- dubbo如何实现使用zookeeper找到对应的服务?
- dubbo使用zookeeper作为分布式治理中心有什么弊端?
- 说说你认为dubbo与SpringCloud的差异?
相关复习笔记:
1.微服务高频面试整理

微服务高频面试整理
2.SpringCloud Alibaba实战笔记

SpringCloud Alibaba实战笔记

SpringCloud Alibaba实战笔记
其它
- SpringBoot的启动过程?
- 如果访问一个域名,说说怎么达到我们的应用服务器
- 如何解决秒杀模块“库存”超卖的问题?
- 如何解决秒杀模块“订单超时回库存”的问题?
1.SpringBoot学习教程

SpringBoot学习教程
2.高并发系统设计相关问题

高并发系统设计相关问题
总的来说,其实Alibaba的面试总会结合你项目经验QQ提问,还是相当全面的。所以在面试之前,除了刷题,你还得有能够“拿得出手”的项目做好充分的准备!面试官可能会让你介绍一下这个项目包括项目背景、项目架构、QPS等等...

另一方面,“面试造火箭,工作拧螺丝”这可也不是说着玩的,关键还是要对自己有信心,只要自己准备得足够充分,就可以在面试中发挥自如!
关于刷题方面,上面我整理了一份Java高级面试知识整理(包括:消息队列、缓存、MySQL、高并发、分布式、高可用、微服务等)。
其他还有JVM、数据库、消息中间件、分布式、调优、kafka、微服务、SpringBoot、SpringCloud、Redis等等的复习笔记,都有整理对应的文档皆如前文所见!

本文记录了一名普通本科、一年外包经验的开发者成功跳槽阿里的五轮面试经历,包括电话面试、视频面试,涉及Java、数据库、分布式、微服务等多个技术领域的问题。面试中讨论了TCP三次握手、线程池、JVM优化、数据库事务、分布式锁等核心知识点。
911

被折叠的 条评论
为什么被折叠?



