Ali-Interview-experience

阿里巴巴-校招面经

首先附上【阿里春招内推群】,群主是2020届毕业生,已拿阿里offer。

进群的小伙伴,即便春招没有进阿里,秋招还是有机会的,【群主靠谱内推】。

群内有群主分享的面试相关资料,感兴趣的可以进群看看!!!

阿里春招内推

1.面试题

1.讲一下类加载机制

关于类加载这个问题,自己最起码要回答出:

  • 类的生命周期
  • 类加载过程:加载、验证、准备、解析、初始化,及每个阶段都做了什么

最好是把类的初始化时机:主动引用、被动引用也说出来,体现出自己对这部分知识的了解更深入些。

2.双亲委派模型知道吗?说一下你的理解

首先要说出这个模型是什么?有什么好处?现实中利用双亲委派模型的典型例子(Tomcat)

3.HashMap和ConcurrentHashMap的区别

这个话题很常见,然而提到HashMap就不得不提到【红黑树】这个数据结构,所以还要对红黑树进行深入了解

4.HashMap中为什么用了红黑树?什么是红黑树,它和其他树有什么区别?

5.MySQL中的索引使用的什么数据结构?为什么不用红黑树这种数据结构?

6.MySQL的事务隔离机制有了解吗?MVCC有了解吗?

7.乐观锁、悲观锁知道吗?它们使用场景有什么不同,乐观锁有什么缺点,如何解决?

8.synchronized的实现原理有了解吗,它和ReentrantLock有什么区别?

9.ReentrantLock实现原理有了解吗?

10.Java中的并发工具类你有了解吗?

11.说一下java中的垃圾回收吧

12.了解线程池吗?说一说你的了解

13.谈谈你的实习/项目

14.redis中的数据类型及使用场景,讲一下跳跃表

项目中为什么用redis?用来做什么?redis的内存淘汰机制了解吗?redis为什么那么快?jedis不是线程安全的,为什么使用时没有出现线程安全问题?各种问...

15.设计模式有了解吗?说一下代理模式的类图?

16.现在让你自己实现一个http服务器,你觉得会使用到哪些关于java的技术?

这个题考察你的知识体系和分析能力,可以从要完成的功能进行逐步分析:

  • 请求发送/接收,应该用到什么?总能想起socket的吧
  • 接收请求以后怎么处理?总得能想起Servlet吧
  • 请求特别多得时候,如何优化?总得有个线程池吧
  • 获取到资源要返回给前端显示,怎么处理?说JSP也凑活吧
  • ...

17.dubbo了解多少,怎么学习的

18.IOC和AOP简单说说吧,一个请求从发起到显示出结果,这个中间过程说一下。

19.HTTP状态码了解多少,三次握手,四次挥手讲一下

20.看你实习时候涉及分布式事务,那你能讲一下什么是分布式事务,有哪些解决方案吗?

21.你们为什么用SpringBoot?它有什么优点?你怎么看待微服务?SpringBoot自动配置原理了解吗?读过源码吗?Spring的生命周期了解吗?

22.一个编写好的类,可以正常运行,你说一下这个类执行的过程,越详细越好。

我的第一反应是类加载机制。边想边说的:写好的.java首先得转换程字节码.class文件吧,然后.class得记载到内存吧,这就是类加载的过程,详细说,每个步骤怎么进行的。每个阶段初始化了哪些东西。现在开始运行了,那总得初始化一下吧,就是父类子类的初始化顺序啥的,然后可以使用了。使用时总得注意方法重载/重写吧,最起码要把这些说出来。

23.现在给你5个奴隶,一个奴隶一天可以赚80块.当然你还可以买奴隶,买一个奴隶要50块,问最少多少天你可以有2000块?

这个题中具体的钱数我忘了,个人理解,这个就是一个贪心,有了钱一定要买奴隶,然后到一定天数后,不买奴隶,干几天就能满足要求,于是我一天填算的...

24.画你实习时做的项目的用例图、类图

2.面试感受

能想起来的就这些了。阿里的面试还是很重视基础的,一定要打好基础,建立自己的知识体系。阿里面试很少能遇到原题,面试官太强了,一般的应届生能勉强应付面试官的题就不错了。然后就是要自信、谦虚,遇到不会的可以直接请教。

3.推荐书籍

  • 《Java多线程编程核心技术》

  • 《Java并发编程的艺术》

  • 《深入理解Java虚拟机:JVM高级特性与最佳实践》

4.其他的后续补充