重点集结阿里/京东/美团等高频Java面试知识点(2021最新版)
在IT行业有这样一句话:面试造火箭,工作拧螺丝,就是针对程序员的。
一、面试造火箭
大家都知道,面试时间很短(相对其他职业面试算是长的) ,而面试官却要在这么短的时间内了解面试者,因此会通过各种问题试探面试者。“造火箭”不仅考察了你的知识储备情况,而中间夹杂的很多与IT无关的问题,一个是看看你这个人咋样,另外也是摸索下你思路,能否适应这个岗位需求。
二、工作拧螺丝
很多人觉得自己经过百般努力通过堪比”造火箭“的面试,你却让我拧螺丝,真的是大材小用,属于典型的岗位技能需求被严重放大化!而实际上企业通过”造火箭“选拔出你们,是为了更了解你,将你所在岗位工作更细化,更适合你,看起来你是在拧螺丝,实际上你是在造火箭,因为那个螺丝是火箭上的。这就叫“面试造火箭,工作拧螺丝,螺丝拧不紧,火箭会坠地!”
炎热的六月毫无征兆的来了,想必有不少人已在着手准备秋招了吧...
吸取教训,这几天整理了在春招阿里、京东、美团的一些比较高频面试点并列举了我在面试过程中碰到的问题,研究一下,为秋招做做准备。
三、阿里巴巴面经问题列举(底层+线程+JVM+网络+MySQL)
1. 开发中Java用了比较多的数据结构有哪些?
2. 谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?
3. 这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的,接着问你有没有线程安全的map,接下来问了conurren包。
4. 对JVM熟不熟悉?简单说说类加载过程,里面执行的哪些操作?问了GC和内存管理,平时在tomect里面有没有进行过相关的配置?
5. 然后问了http协议,get和post的基本区别,接着tcp/ip协议,三次握手,窗口滑动机制。
6. 开发中用了哪些数据库?回答mysql,储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。
7. 然后问了我SpringMVC和MyBatis的工作原理,有没有看过底层源码?
四、京东面经问题列举(分布式+MySQL+JVM+微服务)
1. Dubbo超时重试?Dubbo超时时间设置?
2. 如何保障请求执行顺序?
3. 分布式事物与分布式锁?(扣款不要出现负数)
4. 分布式session设置?
5. 执行某操作,前50次成功,第51次失败a全部回滚b前50次提交第51次抛异常,ab场景分别如何设置Spring?(传播性)
6. Zookeeper有哪些用?
7. JVM内存模型?
8. 数据库垂直和水平拆分?
9. MyBatis如何分页?如何设置缓存?MySQL分页?
10. 熟悉IO么?与NIO的区别,阻塞与非阻塞的区别?
11. 分布式session一致性?
12. 分布式接口的幂等性设计?「不能重复扣款」
五、美团面经问题列举(JVM+线程+并发+MySQL+Redis)
1. JVM老年代和新生代的比例?
3. 数据库的索引有哪几种?为什么要用B+树来做索引?组合索引和几个单个的索引有什么区别?数据库的大表查询优化了解吗?MVCC机制了解不?MVCC机制有什么问题?怎么去解决这个问题?mysql慢语句调优做过吗?说说你是怎么做的?(数据库连环炮轰)
4. jstack,jmap,jutil分别的意义?如何线上排查JVM的相关问题?
5. 线程池的构造类的方法的5个参数的具体意义?
6. 单机上一个线程池正在处理服务如果忽然断电该怎么办?(正在处理和阻塞队列里的请求怎么处理)?
7. 使用无界阻塞队列会出现什么问题?
8. 接口如何处理重复请求?具体处理方案是什么?
9. 如何解决 Redis 的并发竞争 Key 问题?
10. 实现负载均衡和顺序轮询机制?(考虑并发)
六、我的复习之路
以下我要说的面试、源码、分布式、微服务、MySQL、网络、JVM、线程、并发等等都有整理相应的学习笔记,牛掰不(嘻嘻嘻~),如果你不想再去找,可以直接找我领取,点击传送门即可!!
6.1 面试真题(一个字:刷!!!)
说到刷题我就来劲儿,为了准备面试,真真的通宵刷题...其中我收集的这套25大专题面试,个人觉得非常好用(面试刷题就它了),包括了JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、Elasticsearch、Kafka、微服务、Linux等25个专题有超1000道真题,足足熬夜刷了两遍(真的要熬成“神”了~哈哈~)。
25大面试专题(1000多道)
6.2 源码
- 第一个是我滴Spring高级源码笔记,主要是包括下面这些内容
主体内容大概
Spring高级源码笔记
- 第二个是MyBatis源码(来一本小小的 MyBatis 源码分析书)
- 最后一个是SpringMVC源码...
6.4 分布式
分布式也有收集整理一些,来看看。
分布式
6.5 微服务
微服务
6.6 MySQL
高频的知识点、调优笔记、学习路线等等
6.6 网络
说到网络,不得不来看看这本“HTTP权威指南(716页)”,有以下六大部分21章的内容。
HTTP权威指南
6.7 JVM
调优知识、路线大纲、知识点整理。
JVM
6.8 线程
来看份“Java多线程编程核心技术PDF_322页”
Java多线程编程核心技术PDF_322页
6.9 并发
学习路线图
并发
太多了,点到为止
其实还想说一个算法(很重要很重要),但基本上这个LeetCode,好像大家都刷的差不多了,这里不再说了..
还有很多像Redis、kafka、数据结构等等之类的,也不介绍了,其实面试这一块早在第一个说的25大面试专题就全都有的。以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣,没有收集的朋友,你可以直接来找我分享给你,点击传送门即可!!
别弄错啦,重要的事情再说一遍,转发+转发(可以让更多的老铁看见)点击点击传送门即可!!