前言
每个程序员都有一个大厂的梦,而互联网大厂首当其冲自然是阿里巴巴最吃香,今天小编就来分享一个小伙进阿里巴巴的面经!
“不想进大厂的程序员不是好程序员”哈哈哈
春节过后,本是金三银四之际,大部分人也都准备好了这在两个月里谋得一份自己心仪的工作,奈何今年的2020有些特殊,肺炎肆虐,对我们的工作和生活都造成了极大的影响。那么,是不是这样,我们就不工作,不学习了呢?实际上,正是因为现在正值传染病毒传播期间,所以我们宅在家里好好学习是再好不过的。对于Java程序员来说,利用这两三个月的时间,好好学习,着手准备起来,等到疫情好转,开始面试时,也不至于胆怯。
本人也是准备了大半年,最终如愿以偿拿到阿里offer!
个人情况
我是一个普通的双非本科生,开发4年多(Java后端),平时学习也比较勤学好问,对待工作也极度认真负责,对自己进入大厂工作还是很有信心的,我的方向是Java,也知道现在Java的竞争比较激烈,大厂比较难进,但我丝毫不胆怯。为此也在半年前就开始筹备了,今年初在一位大佬的内推下加上自己对知识点的复习和努力也如愿以偿的成功拿到阿里的offer!
面试总结
虽然天猫,蚂蚁金,菜鸟都归属阿里旗下,但每个面试官问的问题都不一样,相同点主要在流程方面。面试开始会让自我介绍,主要业务架构和技术架构两部分。业务架构一般不会深究,但要面试官听明白,并且一般面试官会顺着问是如何根据这些业务去设计技术架构的。
技术架构部分,会根据自我介绍中提到的技术点问,是为什么使用这些技术,解决了哪些问题,碰到哪些困难,是如何思考和解决的,最后再顺带一些技术本身底层的设计方面的问题:
例如:有redis,会问哪些场景用,解决了什么问题,数据量有多少,用的过程出现过哪些问题,怎么去定位解决的,还有它的hash原理等。诸如此类的问题。总结了面试官最喜欢问的方面有mq,jvm,多线程,锁机制等。
不管哪个技术点,能答到面试官无法在这个问题上问下去了,或者能答到计算机硬件上就过了。 有不清楚的可以直接回答,有一些不会的不影响整个面试。
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走流程了,主要问了未来的职业规划。
面试准备
半年复习筹备,直达阿里巴巴
了解学习相关知识
这段时间我不断找资料学习,也通过很多渠道和朋友要到一份美团架构师写的Java面试宝典(284篇)我把美团架构师给我的一份Java面试宝典啃完了,从而还找了Java后端以及一些大厂的面试场景和面试题不断刷题提高自己的眼界
小编整理出一篇Java进阶架构师之路的核心知识,同时也是面试时面试官必问的知识点,篇章也是包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等
由于pdf文档里的细节内容实在过多所以只编辑了部分知识点的章节粗略的介绍下,每个章节小节点里面都有更细化的内容!以下就是部分章节目录,由于头条的篇幅限制目录上的详细讲解也无法一一列出,文末底下有获取以下章节的所有详细知识讲解。
一,JVM
JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。
二,Spring 原理
它是一个全面的、企业应用开发站式的解决方案, 贯穿表现层、业务层、持久层。但是Spring仍然可以和其他的框架无缝整合
三,微服务
四、RabbitMQ
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。
数据库
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。存储引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Archive, 5. Federated
由于头条篇幅有限,我只是截取一部分文档中会含有的知识点,接下来会截取出文档中含有的知识点,有需要的可以私信我获取到
扫描上方二维码即可免费获取到
架构开发技术之路的学习经验
(1)常用源码框架
(2)互联网分布式架构
(3)团队协作开发
(4)架构基础
(5)微服务专题
(6)性能调优专题
(7)并发编程
(8)设计模式
如何获取?