4 年 Java 程序员十面阿里终拿下 offer,评级 P6+ 年薪 30-40w 无股票

前言

每个程序员都有一个大厂的梦,而互联网大厂首当其冲自然是阿里巴巴最吃香,今天小编就来分享一个小伙进阿里巴巴的面经!

“不想进大厂的程序员不是好程序员”哈哈哈

本人也是准备了大半年,最终如愿以偿拿到阿里 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)设计模式

最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、
Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、
Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、
Elasticsearch、Kafka、微服务、Linux等等。可以分享给大家学习。【持续更新中】领取方式【999】就可以领取资料了