受疫情影响,阿里、百度、网易等互联网企业都开启了远程面试。
总结下来面试的大体思路都基本一致。比如:
- JVM 参数配置、常用调试工具、分区、类加载,还会问你有需要线上的调试问题吗?遇到死循环 CPU 飙升怎么解决?
- Java 并发包常用工具用法和原理、会配合集合类一起考,对了还会有 volatile、CAS 原理等。
- MySQL 也算是必备了,索引存储结构、索引搜索原理、事务的隔离级别和原理,这些真的是逢考必问。当然除了 MySQL,Redis 和 ES 也是面试长文的,大多都是集中到原理。比如 ES 倒排索引、分片原理,Redis 的 zset 原理和使用场景、多路复用、穿透、熔断等等。
- 框架也是必备的知识点,最常见的就是 AOP 原理,自己怎么实现?Spring Boot 啥原理?框架通常会配合设计模式一起考,比如你最熟悉的设计模式是啥?Spring MVC 里面用了什么设计模式?解决了什么问题?
- 接下来最重要的就是服务治理了,这里面内容就太多了,Dubbo 也好,Spring Cloud 也罢,总之这个地方最能看得出你真实的工作经验和问题的考虑深度,毕竟没有真正在庞大的系统里面锻炼过真的很难应付这个地方。
- 没漏掉还有一个最重要的算法,这个就靠平时多练了。
说了这么多只有一个重点,面试题的大体方向就这么多。
首先你需要有一个知识点轮廓,对着这个轮廓不停的扩展、延伸,自己查漏补缺。因为虽然知识点就这么多,但是面试官的提问方式还是千奇百怪的,所以你需要通过知识点做相应的延伸,才能融会贯通。另附一张思维导图供大家参考学习。
(1)MySQL
MySQL专题部分
- Mysql 中有哪几种锁?
- MYSQL 数据表在什么情况下容易损坏?
- MySQL 里记录货币用什么字段类型好
- MYSQL 支持事务吗?
- 解释访问控制列表
- 什么是通用 SQL 函数?
- 什么是非标准字符串类型?
- Mysql 表中允许有多少个 TRIGGERS?
- 什么样的对象可以使用 CREATE 语句创建?
- NOW()和 CURRENT_DATE()有什么区别?
- 可以使用多少列创建索引?
- InnoDB 是什么?
- Mysql 如何优化 DISTINCT?
- 如何输入字符为十六进制数字?
- 如何显示前 50 行?
MySQL :
![](https://i-blog.csdnimg.cn/blog_migrate/5839736a9a56fa2facf1dd08c09f19a7.png)
(2)Redis
- 什么是Redis?
- Redis相比memcached有哪些优势?
- Redis支持哪几种数据类型?
- Redis主要消耗什么物理资源?
- Redis的全称是什么?
- Redis有哪几种数据淘汰策略?
- edis官方为什么不提供Windows版本?
- 一个字符串类型的值能存储最大容量是多少?
- 为什么Redis需要把所有数据放到内存中?
- Redis集群方案应该怎么做?都有哪些方案?
- Redis集群方案什么情况下会导致整个集群不可用?
- MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
- Redis有哪些适合的场景?
- Redis支持的Java客户端都有哪些?官方推荐用哪个?
- Redis和Redisson有什么关系?
- Jedis与Redisson对比有什么优缺点?
- Redis如何设置密码及验证密码?
- 说说Redis哈希槽的概念?
- Redis集群的主从复制模型是怎样的?
- Redis集群会有写操作丢失吗?为什么?
- Redis集群之间是如何复制的?
- Redis集群最大节点个数是多少?
- Redis集群如何选择数据库?
- 怎么测试Redis的连通性?
- Redis中的管道有什么用?
- 怎么理解Redis事务?
- Redis事务相关的命令有哪几个?
- Redis如何做内存优化?
- Redis回收进程如何工作的?
- Redis回收使用的是什么算法?
- Redis如何做大量数据插入?
- 为什么要做Redis分区?
- 你知道有哪些Redis分区实现方案?
- Redis分区有什么缺点?
- Redis持久化数据和缓存怎么做扩容?
- 分布式Redis是前期做还是后期规模上来了再做好?为什么?
- Twemproxy是什么?
- 支持一致性哈希的客户端有哪些?
- Redis与其他key-value存储有什么不同?
- Redis的内存占用情况怎么样?
- 都有哪些办法可以降低Redis的内存使用情况呢?
- 一个Redis实例最多能存放多少的keys?
- Redis常见性能问题和解决方案?
- Redis提供了哪几种持久化方式?
- 如何选择合适的持久化方式?
- 修改配置不重启Redis会实时生效吗?
Redis
![](https://i-blog.csdnimg.cn/blog_migrate/56f00abf870ef07a63bbc7e539fbe401.png)
(3)JVM
- 内存模型以及分区,需要详细到每个区放什么。
- 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
- 对象创建方法,对象的内存分配,对象的访问定位。
- GC 的两种判定方法
- SafePoint 是什么
- GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
- GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
- Minor GC 与 Full GC 分别在什么时候发生?
- 几种常用的内存调试工具:jmap、jstack、jconsole、jhat
- 类加载的几个过程
- JVM 内存分哪几个区,每个区的作用是什么?
- 如和判断一个对象是否存活?(或者 GC 对象的判定方法)
- 简述 java 垃圾回收机制?
- java 中垃圾收集的方法有哪些?
- java 内存模型
- java 类加载过程?
- 简述 java 类加载机制?
- 类加载器双亲委派模型机制?
- 什么是类加载器,类加载器有哪些?
- 简述 java 内存分配与回收策率以及 Minor GC和Major GC
JVM答案
![](https://i-blog.csdnimg.cn/blog_migrate/b7cdbb467f15accdc2d1cba1c1324b18.png)
其它方面
- 性能优化
- 微服务架构
- 并发编程高级
- 开源框架
- 分布式
![](https://i-blog.csdnimg.cn/blog_migrate/e898a3f4a873a59d0c81498d06f2d789.png)
(2)实战
- Redis实战
- MySQL实战
- Spring Boot实战
- Spring Cloud实战
- 实战Java虚拟机
以实战Java虚拟机为例:
- 初探Java虚拟机
- 认识Java虚拟机的基本结构
- 常用Java 虚拟机参数
- 垃圾回收概念与算法
- 垃圾收集器和内存分配
- 性能监控工具
- 分析Java堆
- 锁与并发
- Class 文件结构
- Class 装载系统
- 字节码执行
![](https://i-blog.csdnimg.cn/blog_migrate/9fc7304915c1390246f32083bf4ff51e.png)
(3)Java核心知识点
![](https://i-blog.csdnimg.cn/blog_migrate/014582c7d4f9088ca93b0e2c4fa2ba4a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6e92ff668a88721a1f243aff9a1d959e.png)