前言

要说程序员最想要进入的大厂,阿里,腾讯,百度必定是首当其冲,而互联网大厂必定是阿里巴巴首当其冲,今天就来分享一下我面试阿里的一些经历与心得。

不想进大厂的程序员不是好程序员!

本人也是经历了大半年的准备才拿到了阿里的offer,下面与大家聊聊我个人的一个坎坷经历与转折点,再到最后我是如何挤进阿里定级P7的。

个人经历

普通专科毕业,12年转行进入软件开发行业。在杭州工作两年,14年来到深圳,从事java开发一晃8年。尝试过2次开发方向的转变,一次是2014年左右,移动APP的浪潮时期,自学了安卓开发半年,结果还没等转开发方向成功,移动开发的浪潮就逐渐过去,第一次转变尝试就这样胎死腹中,白忙活一场。第二次是2015~16年,这个时间点正是大数据开发最热门的时期,自学各种大数据框架,无奈受限于学历,并没有找到满意的工作,只能回归java。

盲目的追逐了几次技术浪潮,但是又没有真正对自己的职业生涯有多大的帮助。

总的来说,工作8年,做过一些尝试和努力,但可能没有遇到好的机会或者选择的方向错了,导致至今混得不尽如人意。

人生顿悟

出于对现状的不满,我决定要努力奋斗了!

因为觉得这样确实是在浪费自己时间,(看着同期的同学都在茁壮成长) 与其坐以待毙,不如我自己先出去试试水,去一家能够迅速成长的公司。提完离职申请,我开始有意识看些面试问题,重拾培训时的笔记,背题目,看些基本的知识问题……

人生的路,一步慢,步步慢。如果在一开始就落后的话,只会与那些早有准备的人越离越远。

这段时间看过的书《Java核心知识》《Java面试宝典》《高并发与多线程》《Java程序性能优化》、《Spring实战》、《Zookeeper》、《高性能MySQL》、《亿级网站架构核心技术》、《可伸缩服务架构》、《Java编程思想》

这些书也只是看了一部分,并没有全部看完,有时会经常带着问题就进入了梦乡,所以这段时期我的进展并没有太大明显。

由于是自学导致学的过于杂乱无章,所以这段时期面试了很多公司,结果只收到一家不理想的offer最后就不了了之了。

小转折

经过这段时期面试的失败我总结了一个道理:学习需要的也不是一腔热血,需要的是长期的规划,需要一个系统的整理,构建一个完整的框架知识体系,这才是不浪费时间的学习,那些碎片化东拼西凑的学习,对我来说是在浪费时间;学完之后发现自己什么也知道,但是又什么不懂,像无头苍蝇一样非常容易进入误区不能由点连成线,由线连成面,不利于搭建自己的完整技术栈

这里分享一个对应阿里P8架构师路径图;https://docs.qq.com/doc/DVEx4dFRtV1pYeVR0

 

以下再分享下我系统学过的一些必备的知识点的视频

spring

Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。

 

K8S

Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

 

zookeeper

zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

简单来说zookeeper=文件系统+监听通知机制。

 

Netty

Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。

它活跃和成长于用户社区,像大型公司 Facebook 和 Instagram 以及流行 开源项目如 Infinispan, HornetQ, Vert.x, Apache Cassandra 和 Elasticsearch 等,都利用其强大的对于网络抽象的核心代码。

 

经历了这段时期系统性的学习后,筹备了半年终于又一次得到了去阿里面试的资格。

Java中间件一面

1.技术一面考察范围:

  • 重点问了Java线程锁:synchronized 和ReentrantLock相关的底层实现
  • 线程池的底层实现以及常见的参数
  • 数据结构基本都问了一遍:链表、队列等
  • Java内存模型:常问的JVM分代模型,以及JDK1.8后的区别,最后还问了JVM相关的调优
  • 参数分布式锁的实现比较

2.技术一面:

  • 1.自我介绍
  • 2.擅长哪方面的技术?
  • 3. Java有哪些锁种类? (乐观锁&悲观锁、可重入锁&Synchronize等)
  • 4.比较重要的数据结构,如链表,队列,栈的基本理解及大致实现
  • 5. J.U.C下的常见类的使用。ThreadPool的深入考察; BlockingQueue的使用
  • 6. Java内存分代模型,GC算法, JVM常见的启动参数; CMS算法的过程。
  • 7. volatile关键字有什么用(包括底层原理)
  • 8.线程池的调优策略
  • 9. spring cloud的服务注册与发现是怎么设计的?
  • 10.分布式系统的全局id如何实现
  • 11.分布式锁的方案,redis和zookeeper哪个个好,如果是集群部署,高并发情况下哪个性能更好。

Java中间件二面

1.技术二面考察范围:

  • 问了项目相关的技术实现细节
  • 数据库相关:索引、索引底层实现、mysql相关的行锁、表锁等
  • redis相关:架构设计、数据一致性问题
  • 容器:容器的设计原理等

2.技术二面:

  • 1.参与的项目,选一个,技术难度在哪里?
  • 2. Collections.sort底层排序方式
  • 3.负载均衡的原理
  • 4.设计模式与重构,谈谈你对重构的理解
  • 5.谈谈Redis相关的集群有哪些成熟方案?
  • 6.再谈谈-致hash算法(redis)?
  • 7.数据库索引,B +树的特性和建树过程。
  • 8. mysql相关的行锁,表锁;乐观锁,悲观锁
  • 9.谈谈多线程和并发工具的使用
  • 10.讲讲Redis的架构和组件
  • 11. Redis的数据一致性问题(分布式多节点环境&单机环境)
  • 12. docker容器

Java中间件三面

1.技术三面考察范围

  • 主要谈到了高并发的实现方案
  • 以及中间件:redis、rocketmq、kafka等的架构设计思路
  • 最后问了平时怎么提升技术的

2.技术三面题目

  • 1.高并发情况下,系统是如何支撑大量的请求的?
  • 2.接着上面的问题,延伸到了中间件,kafka、 redis、 rocketmq、 mycat等 设计思路和适用场景等
  • 3.最近上过.上哪些技术站点; 最近在看哪些书。
  • 4.工作和生活中遇见最大的挑战,怎么去克服?
  • 5.未来有怎样的打算

Java中间件四面

最后,你懂的,主要就是HR走流程了,主要问了未来的职业规划。

历经半年筹备,终入职阿里巴巴,定级P7;

针对性的了解相关的知识

这半年多时间一直都在针对学习路线找相关的资料,也通过一位京东的朋友要到了一份京东架构师写的Java面试宝典(284篇)我把京东架构师给我的一份Java面试宝典啃完了,从而还找了Java后端以及一些大厂的面试场景和面试题不断刷题提高自己的眼界,https://docs.qq.com/doc/DVEx4dFRtV1pYeVR0

Java核心面试宝典复习知识

这本Java核心知识把每个知识点解析的很深,对大家应该很有帮助,它把大部分的Java知识集结在一起深入的解析出来(非常建议大伙看一看)

 

往期Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术https://docs.qq.com/doc/DVEx4dFRtV1pYeVR0

根据自身面试经历整理以及不断收集的(珍藏版)、相关的电子书、底层源码、阿里巴巴必备学习知识点

 

结束语

很多人感叹“学而无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

以上学习资料均免费放送,最后祝愿各位身体健康,顺利拿到心仪的offer!