我的阿里之路+Java面经考点(建议收藏)!

Posted 阿里架构师、朱鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的阿里之路+Java面经考点(建议收藏)!相关的知识,希望对你有一定的参考价值。

我的2020是忙碌的一年,从年初备战实习春招,年三十都在死磕JDK源码,三月份经历了阿里五次面试,四月顺利收到实习offer。然后五月怀着忐忑的心情开始了蚂蚁金服的实习。八月,又经历了两轮面试,总算拿到转正offer。到此为止,我总算可以尽情地享受最后的校园时光了。 希望我的经历与感悟能帮助到大家。

我的读研经历

阿里是我读研阶段的一个重要目标,刚上研一的时候我便立下Flag,计划了读研三年要做的事情、要学的东西。翻翻我的博客,居然还能找到当时写的读研计划(想想时间过的真的好快呀)。阿里在我心中一直是技术者的朝圣地,聚集了一群技术狂热分子,为了提升一点点的性能可以废寝忘食。在立下这个flag后,我便把我要去阿里的想法告诉了身边的所有人。我不想给自己留有后路,既然牛逼吹出去了,那就得落实到行动上。

我当时的计划是这样的,研一玩命做项目,毕竟写代码是一项孰能生巧的技术,多写代码自然能加深对技术的理解。事实也确实证明了这一点。我大四毕业的那个暑假,第一次接触《深入理解JVM虚拟机》,当时看完之后是一脸懵逼的,所有的汉字都认识,但连成一条句子后咋就不明白呢?然后怀着这种一脸懵逼的状态,强行把这本书看完了,但由于理解的不够深刻,很快就忘记了。然后经过一年疯狂做项目,当我再抱起这本书时,我对这本书的感觉有了180度的转变,通俗易懂啊。我怀疑自己当时为什么这么傻。而在这一年之内,我一共做了四个项目。所以说,写代码能潜移默化地提升你对技术的理解程度。

记得我们学校考研结果公布是在三月底,得知我录取了,短暂的高兴了一下,第二天便去了导师实验室,参与到项目中去。因为我心理很清楚,我的目标是阿里。 刚去实验室的时候感觉自己完全是一只小白,师兄们开会讨论的东西我竟然一个字都听不懂,刚开始分到的工作也很难顺利的完成。但我是一个天生不服的人,我越是不懂,我越是要征服。(PS:追女生也一样,当时看上了一个高冷型女神。越是高冷,我越要拿下……省略一万字……最后成功了)。我渐渐跟上了师兄们的步伐,从第二个项目开始,我一直是项目负责人了。 我给自己定的方向是Java,而实验室的项目五花八门,Qt、C++、图像图形……,但我心里清楚,这些项目可以拓宽我的视野,可以锻炼我的学习能力、思维方式,但要深入理解的技术还是Java。所以我利用项目空窗期,看了很多Java方面的书籍,文末我列了一份清单供大家参考。

研一做了一年项目之后,感觉自己解决问题的能力、快速上手新技术的能力有所提升,但做项目一味求快、一味赶时间,我对很多技术的理解仅停留表面。所以更多时候我感觉自己是在搬砖,很难写出高质量的代码。当时我决定,研二的上半学期一定要好好稳固基础,深入理解技术背后的原理,放慢做项目的节奏,不一味地盲目求快。

然而研二因为种种原因,我去了一家创业公司实习。既然我无法选择,那我就拥抱变化。既来之则安之,我希望自己所花的时间都有所收获。所以我全身心投入到工作中去。公司安排我做前端,虽然这并不是我想干的事情,但当前别无选择,既然做那就得做好。我花了一个月的时间怒刷前端知识,学习Angular、React,了解它们的设计思想,学习JS背后的原理,也看到了前端目前的发展状况。前端的技术迭代速度很快,但技术背后的原理都是类似的,所以抓住技术背后的本质才是最重要的。 这段实习一直持续到了今年一月,我心理清楚,二月底三月初阿里的实习招聘就要开始,所以我挤出中午休息时间、晚上下班后的时间、周末的时间,复习我之前积累的东西。

三月三号,人生的第一次面试,在看到杭州的电话时,那一刻的心情既忐忑又兴奋。在此之前,我并不清楚自己的水平在所有应届生中处于一个怎样的层次,在电话接通之前我已经做好了充分的心理准备,想象了各种被面试官吊打的画面。第一次面试持续了54分钟,面试官似乎破有耐心,整个面试过程相谈甚欢。那一次的面试给了我巨大的信心,因为我清楚,我离我的目标更近了一步。 在接下来的一个月中,我陆陆续续接到了五次面试电话,每一次面试都是一次学习的机会,能发现自己的不足,在与面试官交流的过程中也能了解到最新的技术、最佳的实现方法。

四月十四,记得那天刚替导师给本科生上完算法课,晚饭过后便收到的阿里的offer。当时的喜悦之情溢于言表,这么久的努力没有白费。但我心里也清楚,阿里的实习转正率向来很低,要想通过实习留下来也不是一件容易的事。所以在收到阿里offer之后的那晚,我重新规划了接下来的学习计划,将我的短期目标更新成:拿下阿里转正offer。

5.20,一个美好的日子,我怀着憧憬、忐忑、兴奋的心情走进了支付宝大楼,开始了我三个月的实习生涯。这三个月的实习让我学到了很多,我看到了每天的进步,也看到了自己的不足。这100天经历了太多的事情,有太多的体会,有空我再单独写一篇实习期间的感悟与大家分享。

9.1晚上11点,我的状态从『面试中』变成了『待跟进offer』,我会心一笑,我达成了人生第一阶段的目标。那一刻我没有太多的激动,在经过了2017年8个月的持久作战之后,这个offer早已在我的意料之中。

第二天是周六,这个周末我给自己放了两天的假。虽然在杭州已经呆了102天,虽然支付宝大楼就在西湖边,但每天两点一线的工作,我并没有去过西湖。那一晚我的基友得知我收到offer后便立即买票,坐了一夜的火车来杭州为我庆祝。也托他的福,在这个周末我第一次游览了这座美丽的城市。

最后的校园时光,我给自己定了一个新的目标,这个目标也许充满了挑战、充满了艰辛与困难,但我想如果能达成,我的人生将会有很大的改变。在人生的路上,我还在奋斗。希望与各位共勉。

一些建议

在面试阿里的过程中,博客帮了我很大的忙。并不是说有博客在面试中会加分,而是写博客的过程能加深你对知识的理解,而且回顾起来也特别高效(毕竟是自己写的东西)。

我从研一开始便养成了写博客的习惯,现在先过头来,这两年我一共写了185篇文章,有22W的访问量,也很荣幸称为专家博主。我的博客现在已经成为我一笔最宝贵的财富,记录了我技术的整个体系结构,也记录了学习技术的心路历程。

可能很多同学都有写博客的经历,但能长期坚持的少之又少。我想告诉大家,任何事情都贵在坚持。只要坚持21天就能养成习惯。有的时候对这件事缺乏兴趣了很难再持续下去,但想想自己的目标,咬咬牙坚持下去,养成习惯你就赢了。

我的博客一般都是看完一本书后的总结,我会把一本书中最核心的东西,按照我的理解把它们记录下来。每一本书我都会看三遍,第一遍是快速浏览,了解整本书的体系结构、作者的行文思路,知道书中重要的、不重要的内容,也就是要建立起全局观。第二遍我会精读,把那些我认为重要的内容挑选出来着重阅读、反复理解、吃透。第三遍阅读,往往会冒出新的理解,我时常有这种『书读百遍,其义自见』的感觉。三遍读完后,我便按照自己的理解,把核心内容写成博客。由于是自己的写的东西,所以在复习的时候只要花上三五分钟通读一遍,所有的知识点又被唤醒。

Java面试考点梳理

一直想整理出一份完美的面试宝典,但是时间上一直腾不开,这套一千多道面试题宝典,结合今年金三银四各种大厂面试题,以及 GitHub 上 star 数超 30K+ 的文档整理出来的,我上传以后,毫无意外的短短半个小时点赞量就达到了 13k,说实话还是有点不可思议的。

一千道互联网 Java 工程师面试题

内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、mysql、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈(485页)

初级—中级—高级三个级别的大厂面试真题

阿里云——Java 实习生/初级

List 和 Set 的区别 HashSet 是如何保证不重复的

HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?

HashMap 的扩容过程

HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?

对象的四种引用

Java 获取反射的三种方法

Java 反射机制

Arrays.sort 和 Collections.sort 实现原理 和区别

Cloneable 接口实现原理

异常分类以及处理机制

wait 和 sleep 的区别

数组在内存中如何分配

答案展示:

美团——Java 中级

BeanFactory 和 ApplicationContext 有什么区别

Spring Bean 的生命周期

Spring IOC 如何实现

说说 Spring AOP

Spring AOP 实现原理

动态代理(cglib 与 JDK)

Spring 事务实现方式

Spring 事务底层原理

如何自定义注解实现功能

Spring MVC 运行流程

Spring MVC 启动流程

Spring 的单例实现原理

Spring 框架中用到了哪些设计模式

为什么选择 Netty

说说业务中,Netty 的使用场景

原生的 NIO 在 JDK 1.7 版本存在 epoll bug

什么是 TCP 粘包/拆包

TCP 粘包/拆包的解决办法

Netty 线程模型

说说 Netty 的零拷贝

Netty 内部执行流程

答案展示:

蚂蚁金服——Java 高级

题 1:

  1. jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?

  2. ConcurrentHashMap

  3. 并行跟并发有什么区别?

  4. jdk1.7 到 jdk1.8 java 虚拟机发生了什么变化?

  5. 如果叫你自己设计一个中间件,你会如何设计?

  6. 什么是中间件?

  7. ThreadLock 用过没有,说说它的作用?

  8. Hashcode()和 equals()和==区别?

  9. mysql 数据库中,什么情况下设置了索引但无法使用?

  10. mysql 优化会不会,mycat 分库,垂直分库,水平分库?

  11. 分布式事务解决方案?

  12. sql 语句优化会不会,说出你知道的?

  13. mysql 的存储引擎了解过没有?

  14. 红黑树原理?

题 2:

  1. 说说三种分布式锁?

  2. redis 的实现原理?

  3. redis 数据结构,使⽤场景?

  4. redis 集群有哪⼏种?

  5. codis 原理?

  6. 是否熟悉⾦融业务?记账业务?蚂蚁⾦服对这部分有要求。

好啦~展示完毕,大概估摸一下自己是青铜还是王者呢?

前段时间,在和群友聊天时,把今年他们见到的一些不同类别的面试题整理了一番,于是有了以下面试题集,也一起分享给大家~

如果你觉得这些内容对你有帮助,可以加入csdn进阶交流群,领取资料

基础篇


JVM 篇


MySQL 篇



Redis 篇




由于篇幅限制,详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

需要的小伙伴,可以一键三连,下方获取免费领取方式!
在这里插入图片描述

以上是关于我的阿里之路+Java面经考点(建议收藏)!的主要内容,如果未能解决你的问题,请参考以下文章

双非菜鸡的我是如何一举斩获阿里字节腾讯百度等大厂offer?(详情面经,建议收藏)

「面经」阿里蚂蚁金服 offer 之路

热乎乎的蚂蚁金服面经分享,offer已到手建议收藏(Java岗附答案解析)

热乎乎的蚂蚁金服面经分享,offer已到手建议收藏(Java岗附答案解析)

Android 面经分享阿里技术专家的 5年 Android 开发的求职之路

Android 面经分享阿里技术专家的 5年 Android 开发的求职之路