四面阿里巴巴如愿拿到 offer 定级 P7,为此我筹备了半年

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

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

春节过后,本是金三银四之际,大部分人也都准备好了这在两个月里谋得一份自己心仪的工作,奈何今年的 2020 有些特殊,肺炎肆虐,对我们的工作和生活都造成了极大的影响。那么,是不是这样,我们就不工作,不学习了呢?实际上,正是因为现在正值传染病毒传播期间,所以我们宅在家里好好学习是再好不过的。对于 Java 程序员来说,利用这两三个月的时间,好好学习,着手准备起来,等到疫情好转,开始面试时,也不至于胆怯。

本人也是准备了大半年,最终如愿以偿拿到阿里 offer!

个人情况

我是一个普通的双非本科生,开发三年多(Java 后端),平时学习也比较勤学好问,对待工作也极度认真负责,对自己进入大厂工作还是很有信心的,我的方向是 Java,也知道现在 Java 的竞争比较激烈,大厂比较难进,但我丝毫不胆怯。为此也在半年前就开始筹备了,今年初在一位大佬的内推下加上自己对知识点的复习和努力也如愿以偿的成功拿到阿里的 offer!

在此特别感谢这位大佬给我提供的帮助及内推!

 

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 入门到架构成长笔记;

这份笔记把 Java 后端 95%的技术体系都整理记载清楚了,并且通过工作时间年限来划分了学习的技术!学起来跟升级打怪一样(非常建议大伙看一看)

下面会详细展示这份 Java 从入门到架构成长笔记的内容及涵盖的知识点。

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~你的支持,我的动力;祝各位前程似锦,offer 不断!!!

Java 从入门到架构成长笔记目录

新手村—入门到开发半年(吃透 12K+起步)

  • Java 基础篇: 基础语法+集合+异常+反射+IO+TCP+多线程

  • Java web 篇: MySQL 数据库+JDBC+Servlet

  • 三大框架篇: Spring+SpringMVC+MyBatis+商城实战项目

  • SpringBoot+SpringCloud 分布式开发篇: 微服务入门+实战

  • 项目经验篇: 秒杀系统设计+SpringBoot 商城实战

Java 基础篇

三大框架篇

项目经验篇(秒杀+SpringBoot 实战)

打怪升级第一步—开发 1 到 3 年

  • Java 并发编程底层篇: 并发基础+JMM+线程池+阻塞队列+并发集合+并发工具类+锁+atomic

  • JVM 与性能调优篇: 内存区域+垃圾回收器和内存分配策略+类加载机制+调优

  • 网络编程篇: TCP/HTTP+Netty+多路复用

  • SQL 调优篇: SQL 优化原则+锁+索引+调优+事务+执行计划

  • Tomcat 底层篇: 架构+基础+调优+集群+安全

  • 设计模式篇: 六大原则+23 种设计模式

  • Spring 源码篇: IOC+AOP+声明事务源码解读

  • MyBatis 源码篇: MyBaits 源码架构分析+MyBaits 核心模块分析+二级缓存

并发编程篇

JVM 及调优篇

网络编程篇

MySQL 调优篇

设计模式篇

Spring 源码篇

MyBatis 源码篇

打怪升级第二步:4-5 年资深高开

  • 分布式思维基础: 大型互联网架构演进过程+架构师应具备的分布式知识+主流分布式架构设计详解

  • 分布式监控: Zookeeper+Nginx

  • 分布式消息队列: RabbitMQ+RocketMQ+Kafka

  • 分布式存储: Redis+MongDB+Mycat

分布式监控

消息队列

分布式存储

打怪升级第三步:5 到 7 年架构进阶

  • 微服务架构进阶: Docker+SpringCloud+Spring Cloud Alibaba+K8S

  • 亿级流量性能调优实战: 调优基础+基础代码性能优化+设计模式与性能+并发编程性能优化+JVM 深度调优+数据库性能调优

  • 一线大厂分布式场景实战: 分布式事务解决方案+一线大厂单点登陆方案+分布式任务调度方案+高并发场景下分布锁方案+缓存解决方案

性能调优实战笔记

大厂分布式场景实战笔记

总结

同样是做 Java,有的人工作 5 年工资没变化,有的人工作 2 年就已经年薪 30W。**这个现象或许前几年还不明显,**但随着近几年后端技术疯了一般的快速发展,曾经那个只要会 CRUD 就能走遍天下的时代早已不在了,人才水平的分化也越来越明显。

竞争永远都是非常残酷的,毕竟成为一个架构师不是那么容易的,一个架构师的成长来自于机会,努力及天分 !在这个后浪奔腾的时代,不管是你是刚工作还是有几年开发了,我相信以上这份 Java 从入门到架构成长笔记你都需要阅读阅读,希望能够对你的职业发展有所帮助。

需要完整 PDF 版的朋友,可以“查看下图”无偿获取!

全部评论

相关推荐

各位前辈好,先说声抱歉,可能又是一篇“求骂醒”的帖子,但我真的需要一个方向。我的情况比大多数人都糟糕:双非软件工程,大四,马上毕业了,0实习经历,0工作经验。秋招根本没参加,原因很傻——我一头扎进了一个自己觉得“挺有意思”的项目里,天真的以为把项目做好工作自然会找上门。现在春招也快结束了,我才如梦初醒,发现简历投出去基本石沉大海。我没有什么能拿出手的背景,唯一能说的就是这个从后端到前端全栈独立开发的电影推荐平台。我知道在各位前辈眼里这大概率就是个小玩具,但我确实是下了功夫去琢磨的,它不是什么网上扒的代码,下面这些是我自己琢磨并落地的东西:项目概况:Spring Boot + MyBatis-Plus + Redis + JWT + MySQL + Vue3(前端是AI辅助生成的)我自己觉得花了心思的几个点:1. 推荐算法落地:没有照搬别人的推荐逻辑。我是基于用户多维行为数据(评分、收藏、浏览时长)去计算标签权重,然后用“评分×log(热度+1)”的公式做加权排序;冷启动场景用热门数据兜底。推荐结果用Redis的ZSet缓存,用户行为一变化就主动删缓存触发重算。2. 缓存体系设计:不是那种“面试八股文背完就扔”的表面理解。我实际遇到了缓存穿透和击穿的问题,然后自己用空值缓存+逻辑过期去解决。热门电影定时预热、批量查询用multiGet减少IO次数,还封装了MyCacheUtils通用模板,让整个项目其他模块也能复用这套缓存逻辑。3. 并发与一致性:用Redis的SET NX EX实现了收藏/点赞的分布式锁,key精确到“用户+操作对象”级别,不是粗粒度的一锁全锁。异常回滚时Redis和MySQL数据一致性问题也思考并落地了。验证码的原子性校验用了Lua脚本来保证。4. 性能是真实数据:我用JMeter做了2000并发的压测,引入Redis缓存体系后,推荐接口平均响应从6466ms降到155ms,吞吐量翻了一倍,缓存命中率干到98%以上。这些数据不是编的,是我自己反复调优跑出来的。说实话,做完这些的时候,看着压测报告我是挺兴奋的,觉得“这也算出活儿了吧”。但现实是,0实习好像成了我简历上的原罪,很多公司直接筛选条件就把我过滤了。所以我想跪求各位前辈指点我几个问题,每一条我都认真看、认真执行:1. 关于简历:0实习的应届生,还有资格谈“项目亮点”吗?我这项目,是不是在专业面试官眼里就是一个“低配版培训项目”?如果这个项目还有救,该怎么在简历上呈现,才能让HR或者面试官至少愿意给我一个电话面试?如果没有,一个0实习的应届生到底该在简历上写什么?2. 关于面试:如何用项目细节证明“我虽然没实习但真的能干活”?我挺怕面试官看到我没有实习经历就直接失去兴趣。真到了面试那一步,我该怎么引导对话,用上面这些技术细节去对抗“没实习=没工程经验”的刻板印象?比如缓存那块,怎么从“我解决了击穿”讲出一个有技术判断力和工程思维的完整故事?3. 关于求职策略:错过了黄金窗口期,现在该冲什么样的公司?大厂我肯定不奢望了。现在这个时间点,我应该去投那些小公司和外包吗?要不要把薪资预期降到最低先入行再说?对于0实习的应届生,什么样的公司是真的有机会让我进去学技术、积累经验的?4. 关于未来:如果现在直接找不到工作,我该怎么办?这段时间我想好了,如果实在是找不到研发岗,我要不要去干测试或者运维先入行?还是找家小公司被压榨一年攒个经验?还是干脆先找个其他工作边干边学等下一轮秋招?我什么建议都能接受。我知道自己起步晚了,代价得自己扛。现在唯一能做的就是面对现实,然后找到一条最有可能逆袭的路。希望前辈们能给我指个方向,即使简单几句“没救了”或者“还能救,去做XXX”我都非常感激。
jiestart:这简历肯定没面试的,你得包装个实习再加一个agent项目才有希望
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务