前言

前段时间有幸被阿里的一位同学内推,参加了阿里巴巴Java岗位的面试,本人19年双非本科软件工程专业,目前有一年半的工作经验,面试前就职于一家外包公司。如果在自己本人拿到offer之前,如果有人告诉我一年工作经验可以直接从外包进阿里,我肯定是不信。但是真的发生在自己身上,真的觉得非常非常幸运与不可思议。

Alibaba的这次面试总共有五面,包括:

  • 第一轮电话面试(同事面):将近1h20***要是介绍项目与基础知识
  • 第二轮视频面试(组长面):将近1h,同样也是介绍项目与基础知识
  • 第三轮视频面试(主管面):将近40min,更深次的项目以及分布式的解决方案
  • 第四轮视频面试(主管面):将近1h,项目介绍以及基础知识,也会问你的职业规划
  • 第五轮视频面试(项目+hr):将近1h,前半部分是技术面,后半部分是hr面试

image.png

稍整理了一下,主要涉及以下知识:Java、数据库、分布式、中间件、微服务等,我大致将每个部分的问题整理了一下,并且附带了整理与其对应的最硬核的复习笔记(我花了不少时间整理的,希望能对你有用,分享的话☛ (原件--点击获取下载)

第一:Java部分

面试问题:

  1. Jdk1.7与jdk1.8 在g1垃圾回收器上有什么区别?
  2. 常见的加载器有哪些,如何自定义一个加载器?
  3. 生产上有没有遇到JVM参数调优的问题?
  4. 知道什么是内存泄露吗,如何手动去造成内存泄露?
  5. 线程池常见的一些参数,知道Future接口吗?
  6. 常见的代理有哪些,两者有什么区别?

相关复习笔记:

1.JVM复习参考:多线程+垃圾回收+GC+类加载机制...

image

2.Java性能调优实战:JVM+多线程+数据库+设计模式+Tomcat+实战演练...

image

第二:数据库部分

面试问题:

  • 常见的索引类型有哪些?
  • 为什么主键索引使用B+树而不去使用B树?
  • 说一说联合索引最左原则的原理,并且什么情况下索引是生效的?为什么?
  • 常见的隔离级别有哪些?有什么区别?
  • 知道回表查询吗?聚集索引?
  • 项目中有没有使用到分表分库?说一说怎么分的?

相关复习笔记:

1.MySQL数据库复习参考:索引+锁+分库分表...

image

2.MySQL高级知识整合:架构+存储引擎+锁+事务+SQL优化...

image

第三:分布式/中间件部分

面试问题:

  • Redis是单线程的吗?
  • 为什么Redis的性能比较高?
  • Redis集群化的方式有哪些?怎么确保数据的一致性?说一说你对一致性hash的认识。
  • 消息队列中拉模式与推模式的区别?
  • 使用消息队列有没有遇到消息丢失的情况,怎么去设计补偿行为?
  • 说一说项目中为什么使用Kafka而不去使用其它消息队列?
  • 说一说Zookeeper中的Zab协议?
  • 分布式锁的实现方案有哪些?各有哪些优势与缺点?
  • 分布式限流Sentinel中线程模式与QPS模式的区别?
  • Sentinel阈值单机模式与集群模式的区别?
  • 如何解决限流时在一个服务中调用外部服务,不会因为外部服务超时,导致被限流。
  • ElaticJob分布式调度时如何解决数据倾斜的问题?

相关复习笔记:

1.Redis复习参考(68道高频面试解析题):基础+数据结构+高并发处理+集群+缓存...

image

2.Kafka复习参考:集群+生产者+消费者+源码...

image

3.RocketMQ复习参考:消息+源码+队列...

image

4.消息队列高频面试整理:面试官心理分析+面试题详解...

image

5.分布式系统高频面试整理:Dubbo+Zookeeper+分布式事物+分布式锁...

image

第四:微服务部分

面试问题:

  • 有没有遇到dubbo连接数爆满的问题?
  • dubbo如何实现使用zookeeper找到对应的服务?
  • dubbo使用zookeeper作为分布式治理中心有什么弊端?
  • 说说你认为dubbo与SpringCloud的差异?

相关复习笔记:

1.微服务高频面试整理

image

2.SpringCloud Alibaba实战笔记

image

image

其它

  • SpringBoot的启动过程?
  • 如果访问一个域名,说说怎么达到我们的应用服务器
  • 如何解决秒杀模块“库存”超卖的问题?
  • 如何解决秒杀模块“订单超时回库存”的问题?

1.SpringBoot学习教程

image

2.高并发系统设计相关问题

image

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

image

另一方面,“面试造火箭,工作拧螺丝”这可也不是说着玩的,关键还是要对自己有信心,只要自己准备得足够充分,就可以在面试中发挥自如!

关于刷题方面,上面我整理了一份Java高级面试知识整理(包括:消息队列、缓存、MySQL、高并发、分布式、高可用、微服务等)。

其他还有JVM、数据库、消息中间件、分布式、调优、kafka、微服务、SpringBoot、SpringCloud、Redis等等的复习笔记,都有整理对应的文档皆如前文所见!
图片说明

关于这些Java的面试+学习笔记等之类的,如果你觉得我整理得还不错,皆可分享一并学习,☛ (原件--点击下载获取)

image

整理不易,还望多多支持!!同时也祝各位小伙伴前程似锦,Offer不断,挺进Alibaba!!