本科毕业六年,备战一个月,四面阿里巴巴定级 P7
前言
来自一个四面阿里的面经总结
我觉得有一个能够找一份大厂的 offer 的想法,这是很正常的,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司 / 小公司,如果说能够在这样的公司锻炼几年,相信对自己能力的提升还是非常大的。不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的。
因为大厂面试一般都有专业团队负责,某个知识点你到底是掌握了还是单纯背下来,面试官一问就可以看出来(PS:真正到面试特别是你觉得准备面试的时间不够的时候,你可以多挑一些面试常问的问题来看,注意理解,一定不要死记硬背)。一定不要过分寄希望于各种面经,试着去提高自己的综合能力。
“ 80% 的 offer 掌握在 20% 的人手 ” 中这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offer。运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。
阿里面试常问技术有哪些
数据结构,多线程,jvm,Spring,优化,消息框架,分布式,缓存等以及你使用过的框架且第一轮的基础很重要,通过会后录取可能性就相对高了!
一面(主要是 jvm,并发,锁,数据结构等基础)
自我介绍(说说自己的擅长及拿手的技术)
说说 treemap 和 HashMap 的区别?HashMap 和 ConcurrentHashMap 的区别?
HashMap 底层如何实现(JDK1.8 有所改动)?
说说 Hash 的一致算法?
你知道的 GC 算法和回收策略有哪些?GC 的机制是什么?
垃圾回收器的基本原理?是否可以立即回收内存?怎么样主动的通知 JVM 进行垃圾回收?
双亲委派模型机制
线程池创建的几个核心构造参数是什么?
乐观锁和悲观锁?可重入锁和 Synchronized?
他们都是可重入锁吗?哪个效率更高?
CountDownLaunch 和 Cylicbarrior 的区别以及分别是在哪样场景下使用的?
Http 和 Https 的区别以及 Https 加密的方式?
以后的职业规划和想法
二面(主要是数据库,协议,Spring 等)
自我介绍,聊下自己认为做得很好的项目!
InnoDB 支持的四种事务隔离级别名称是什么? 之间的区别是什么?MySQL 隔离级别是什么?
说说事务的特性?讲讲对慢查询的分析?
你理解的 BTree 机制?
有哪些 MySQL 常用的优化方法?
Http 请求过程,DNS 解析的过程?
三次握手和四次握手的过程?
B+树索引和 Hash 索引之间的区别?
Spring IOC 如何管理 Bean 之间的依赖关系,怎么样避免循环依赖?
SpringBean 创建过程中的设计模式?
说说 AOP 的实现原理?
Tomcat 的基本架构是什么?
三面(主要是缓存,高并发,分布式)
自己项目中的总结的并发经验
说说 MySQL 的锁并发?加锁的机制是什么?
高并发场景下如何防止死锁,保证数据的一致性?
集群和负载均衡的算法与实现?
说说分库与分表设计?
分库分表带来的分布式困境与对应之策有哪些?
Redis 和 Setnx 命令使如何实现分布式锁的?使用 Redis 怎么进行异步队列?会有什么缺点?
缓存击穿的概念和解决方案?
Redis 的数据结构? 线程模型? Redis 的数据淘汰机制?
Redis 的数据一致性问题
MQ 底层原理的实现?
阻塞队列不用 Java 提供的该怎么实现?
讲讲负载均衡的原理?
如何实现高并发环境下的削峰、限流?
四面(主要项目入手)
讲讲项目中用到的中间件(Dubbo/MQ/Zookeeper/Redis/Kafka)?
什么情况下会造成雪崩?该怎么避免这种情况?
高并发架构的设计思路?
以前的项目中遇到的问题和解决策略?
生活中遇到过哪些挫折?最后怎么解决的?
小结
一线互联网公司都比较注重实际的项目中解决问题的能力,另外面试点主要围绕 JVM、多线程相关、基础知识的底层原理、处理高并发的能力。这里也不扯什么面试技巧了,轻松发挥就好,祝大家金三银四季能有个高薪满意的工作!
知其然不知其所以然,阿里常问面试技术如何复习?
0-1 年入门:
Java 基础复盘(面向对象+Java 的超类+Java 的反射机制+异常处理+集合+泛型+基础 IO 操作+多线程+网络编程+JDK 新特性)
Web 编程初探(Servlet+MySQL 数据库+商品管理系统实战)
SSM 从入门到精通(Spring+SpringMVC+Mybatis+商品管理系统实战-SSM 版)
SpringBoot 快速上手(SpringBoot+基于 SpringBoot 的商品管理系统实战)
零距离互联网项目实战(Linux+Redis+双十一秒杀实战系统)
1-3 年高工:
并发编程进阶(并发工具类实战+CAS+显示锁解析+线程池内部机制+性能优化)
JVM 深度剖析(理解运行时数据区+堆外内存解读+JDK+内存泄漏问题排查+Arthas+GC 算法和垃圾回收器+类加载机制等)
MySQL 深度进阶
深入 Tomcat 底层(线程模型+性能调优)
3-5 年资深:
数据库(调优+事务+锁+集群+主从+缓存等)
Linux(命令+生产环境+日志等)
中间件 &分布式(dubbo+MQ/kafka、ElasticSearch、SpringCloud 等组件)
5-7 年架构:
开源框架(Spring5 源码+SpringMVC 源码+Mybatis 源码)
分布式架构(Zk 实战+RabbitMQ+RocketMQ+Kafka)
高效存储(Redis+mongoDB+MySQL 高可用+Mycat+Sharing-Sphere)
微服务架构(RPC+SpringBoot+SpringCloud Netflix+SpringCloud Alibaba+docker+k8s)
10 年以上送外卖:开个小玩笑
Part1:0-1 年入门
1.Java 基础复盘
2.Web 编程初探
3.SSM 从入门到精通
4.SpringBoot 快速上手
5.零距离互联网项目实战(仿小米商城)
Part2:1-3 年高工
1.并发编程进阶
2.JVM 深度剖析
3.MySQL 深度进阶
4.深入 Tomcat 底层
Part3:3-5 年资深
1.数据库
2.Linux
3.中间件 &分布式
Part4:5-7 年架构
1.开源框架
2.分布式架构
3.高效存储
4.微服务架构
总结
虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。
架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。
如果你也想成为一名好的架构师,那或许以上这份 Java 成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
阿里成长笔记 点击此处 凭截图即可免费获取
评论