前言
“闭关修炼”的你是不是已经在为“金九银十”跳槽季发愁呢?若是能将今天说的这富含30个章节的Java核心面试知识整理(包括:VM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算),好好吃透消化,让你面试跳槽不再心慌!
02 JVM
![](https://i-blog.csdnimg.cn/blog_migrate/86712e864923df6f7c041e1476bd3b82.jpeg)
- 线程
- JVM内存区域
- JVM运行时内存
- 垃圾回收与算法
- JAVA四种引用类型
- GC分代收集算法 VS 分区收集算法
- GC垃圾收集器
- JAVA IO/NIO
- JVM类加载器
![](https://i-blog.csdnimg.cn/blog_migrate/be51c97e85730e8e67c17b0f61376ea1.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/599c3fe2a8f20606f1c11db9d74041d5.jpeg)
03 JAVA集合
![](https://i-blog.csdnimg.cn/blog_migrate/a8c4e064eab9745ce9f46c9b166d1228.jpeg)
- 接口继承关系和实现
- LIST
- SET
- MAP
![](https://i-blog.csdnimg.cn/blog_migrate/5ebbaeb9a9e202c9af33cc9617935794.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9974971102c412442ff66a46fa819a2b.jpeg)
04 JAVA多线程并发
![](https://i-blog.csdnimg.cn/blog_migrate/a6132aacb4f41dcb57e3ba3f07c3a30e.jpeg)
- JAVA并发知识库
- JAVA线程实现/创建方式
- 4种线程池
- 线程生命周期(状态)
- 终止线程4种方式
- sleep与wait区别
- start与run区别
- JAVA后台线程
- JAVA锁
- 线程基本方法
- 线程上下文切换
- 同步锁与死锁
- 线程池原理
- JAVA阻塞队列原理
- CyclicBarrier、CountDownLatch、Semaphore的方法
- voliate关键字的作用(变量可见性、禁止重排序)
- 如何在两个线程之间共享数据
- Threadlocal作用(线程本地存储)
- synchronized和ReentrantLock的区别
- ConcurrentHashMap并发
- Java中用到的线程调度
- 进程调度算法
- 什么是CAS(比较并交换-乐观锁机制-锁自旋)
- 什么是AQS(抽象的队列同步器)
![](https://i-blog.csdnimg.cn/blog_migrate/3cd998d21d6be3b3383881c63ea42d85.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/c68fb0d183662ce000e7a1526bc70200.jpeg)
05 JAVA基础
- JAVA异常分类及处理
- JAVA反射
- JAVA注解
- JAVA内部类
- JAVA泛型
- JAVA序列化(创建可复用的Java对象)
- JAVA复制
![](https://i-blog.csdnimg.cn/blog_migrate/049571ceb33640c64217f0bc9680f67d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/decf1aaf21b0ded5afd9e2a7976a7cd2.jpeg)
06 Spring原理
它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合
- Spring特点
- Spring核心组件
- Spring常用模块
- Spring主要包
- Spring常用注解
- Spring第三方结合
- Spring IOC原理
- Spring APO原理
- Spring MVC原理
- Spring Boot原理
- JPA原理
- Mybatis缓存
- Tomcat架构
![](https://i-blog.csdnimg.cn/blog_migrate/b82bd55463095ad65ad4221001c0012f.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/86eb269fd3bbae6655f4b90ef4b0a14c.jpeg)
07 微服务
- 服务注册发现
- API网关
- 配置中心
- 事件调度(kafka)
- 服务跟踪(starter-sleuth)
- 服务熔断(Hystrix)
- API管理
![](https://i-blog.csdnimg.cn/blog_migrate/af8f58898b610aa6adff398d2c6b0e4e.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/73b369f65726d4fe80c14a1b7fcb874d.jpeg)
08 Netty与RPC
Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。
- Netty原理
- Netty高性能
- Netty RPC实现
- RMI实现方式
- Protocol Buffer
- Thrift
![](https://i-blog.csdnimg.cn/blog_migrate/a48d686bb0ef3ed2847e9dd12484690d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/edaf057e4597d4d3d64c805706512491.jpeg)
09 网络
- 网络7层架构
- TCP/IP原理
- TCP三次握手/四次挥手
- HTTP原理
- CDN原理
![](https://i-blog.csdnimg.cn/blog_migrate/3399076f26dadf791c78d0bb790f422a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1d054a6cbc0654d174939b4a9cbd5333.jpeg)
10 日志
- Slf4j
- Log4j
- logBack
- ELK
![](https://i-blog.csdnimg.cn/blog_migrate/ffcaa3b5fd2dd455df4a8e08072e8329.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/e31d6e8848d72b0bc0e831b21d220c47.jpeg)
11 Zookeeper
Zookeeper 是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。Zookeeper 提供了一个类似于 Linux 文件系统的树形结构(可认为是轻量级的内存文件系统,但只适合存少量信息,完全不适合存储大量文件或者大文件),同时提供了对于每个节点的监控与通知机制。
- Zookeeper概念
- Zookeeper角色
- Zookeeper工作原理(原子广播)
- Zonde有四种形式的目录节点
![](https://i-blog.csdnimg.cn/blog_migrate/61a1253d33f4edd9eae9117e957081c4.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/85f93ad7d585fae1500db0f05cb2177a.jpeg)
12 Kafka
Kafka 是一种高吞吐量、分布式、基于发布/订阅的消息系统,最初由 LinkedIn 公司开发,使用Scala 语言编写,目前是 Apache 的开源项目。
- Kafka概念
- Kafka数据存储设计
- 生产者设计
- 消费者设计
![](https://i-blog.csdnimg.cn/blog_migrate/71dd8e80100a987a51703441fa98a4ac.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/d4b7413f4ff336d66392a4f2df42f411.jpeg)
13 RabbitMQ
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗
- 概念
- RabbitMQ 架构
- Exchange类型
![](https://i-blog.csdnimg.cn/blog_migrate/1dfe461bfd2d7423e81973c1139cd04f.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0d494408232e2ffb33e7dfa276eff964.jpeg)
14 Hbase
base 是分布式、面向列的开源数据库(其实准确的说是面向列族)。HDFS 为 Hbase 提供可靠的底层数据存储服务,MapReduce 为 Hbase 提供高性能的计算能力,Zookeeper 为 Hbase 提供稳定服务和 Failover 机制,因此我们说 Hbase 是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。
- 概念
- 列式存储
- Hbase核心概念
- Hbase核心架构
- Hbase的写逻辑
- Hbase VS Cassandra
![](https://i-blog.csdnimg.cn/blog_migrate/29af7505d9335f0e1f711e420cc1e91a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9bf16f495e50b090090d3bf2f9a10ca4.jpeg)
15 MongoDB
MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
- 概念
- 特点
![](https://i-blog.csdnimg.cn/blog_migrate/d1e57721f6a1df8599a53e1b3fd62f52.png)
![](https://i-blog.csdnimg.cn/blog_migrate/211ca1c18463a84f2261d81cb26ae803.jpeg)
16 Cassandra
Apache Cassandra 是高度可扩展的,高性能的分布式 NoSQL 数据库。 Cassandra 旨在处理许多商品服务器上的大量数据,提供高可用性而无需担心单点故障。Cassandra 具有能够处理大量数据的分布式架构。 数据放置在具有多个复制因子的不同机器上,以获得高可用性,而无需担心单点故障。
- 概念
- 数据模型
- Cassandra一致hash和虚拟节点
- Gossip协议
- 数据复制
- 数据写请求和协调者
- 数据读请求和后台修复
- 数据存储(Commitlog、MemTable、SSTable)
- 二级索引
- 数据读写
![](https://i-blog.csdnimg.cn/blog_migrate/c1450aee98091886eab7c114b54b4d8c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/447553517bae2c52800de1b80b737498.jpeg)
17 设计模式
- 设计原则
- 工厂方法模式
- 抽象工厂模式
- 单例模式
- 建造者模式
- 原型模式
- 适配器模式
- 装饰器模式
- 代理模式
- 外观模式
- 桥接模式
- 组合模式
- 享元模式
- 策略模式
- 模板方法模式
- 观察者模式
- 迭代子模式
- 责任链模式
- 命令模式
- 备忘录模式
- 状态模式
- 访问者模式
- 中介者模式
- 解释器模式
![](https://i-blog.csdnimg.cn/blog_migrate/d14e2bbae3a7c107c6ea50e7d515d941.jpeg)
18 负载均衡
载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展 网络设备 和 服务器 的带宽、增加 吞吐量 、加强网络数据处理能力、提高网络的灵活性和可用性。
- 四层负载均衡 VS 七层负载均衡
- 负载均衡算法/策略
- LVS
- Keepalive
- Nginx反向代理负载均衡
- HAProxy
![](https://i-blog.csdnimg.cn/blog_migrate/b714aff77b7ba53bf2305a4af41d415a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0861cb3d01ffb9558c6be95984132371.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/fe52fd5ab5293f9668be94625fc23988.jpeg)
19 数据库
- 存储引擎
- 索引
- 数据库三范式
- 数据库事务
- 存储过程(特定SQL语句集)
- 触发器
- 数据库并发策略
- 数据库锁
- 基于Redis分布式锁
- 分区分表
- 两阶段提交协议
- 三阶段提交协议
- 柔性事务
- CPA
![](https://i-blog.csdnimg.cn/blog_migrate/e3709402e5edf2b8dc3b96804742c699.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/e95e7e0b36e5ded8ab8129987c16c91d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/64af0b98426feb560bea20061ba95708.jpeg)
20 一致性哈希
- Paxos
- Zab
- Raft
- NWR
- Gossip
- 一致性hash
![](https://i-blog.csdnimg.cn/blog_migrate/5de56a03951c9aff0b643c58785139da.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/712bf0c7c8f65949edcd16f35870bce5.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/efd5b3b55bb54c7fc4d9c444df653233.jpeg)
21 JAVA算法
- 二分查找
- 冒泡排序算法
- 插入排序算法
- 快速排序算法
- 希尔排序算法
- 归并排序算法
- 桶排序算法
- 基数排序算法
- 剪枝算法
- 回溯算法
- 最短路径算法
- 最大子数组算法
- 最长公共子序算法
- 最小生成树算法
![](https://i-blog.csdnimg.cn/blog_migrate/2d778d1fc7c08051e0f4bda0b0f92454.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/96ecc1f0c4df9f1e4a293ce4d8cb97ae.jpeg)
22 数据结构
- 栈
- 队列
- 链表
- 散列表
- 排序二叉树
- 红黑树
- B-Tree
- 位图
![](https://i-blog.csdnimg.cn/blog_migrate/e87448d588207a3eecefe21482cbf977.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/ece29e862afd2b5204734ba109ebaa91.jpeg)
23 加密算法
- AES
- RSA
- CRC
- MD5
![](https://i-blog.csdnimg.cn/blog_migrate/d534cf8719aa0b5709b829cbba59657b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/89209beccbab543fa116ecb5aab8f165.jpeg)
24 分布式缓存
- 缓存雪崩
- 缓存穿透
- 缓存预热
- 缓存更新
- 缓存降级
![](https://i-blog.csdnimg.cn/blog_migrate/a2c0b9ab77727d08430da92b73f4ae67.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/4b9995f756bc480a5173a055bc07f0a0.jpeg)
25 Hadoop
就是一个大数据解决方案。它提供了一套分布式系统基础架构。 核心内容包含 hdfs 和mapreduce。hadoop2.0 以后引入 yarn.
hdfs 是提供数据存储的,mapreduce 是方便数据计算的。
- hdfs 又对应 namenode 和 datanode. namenode 负责保存元数据的基本信息,datanode 直接存放数据本身;
- mapreduce 对应 jobtracker 和 tasktracker. jobtracker 负责分发任务,tasktracker 负责执行具体任务;
- 对应到 master/slave 架构,namenode 和 jobtracker 就应该对应到 master, datanode和 tasktracker 就应该对应到 slave.
- 概念
- HDFS
- MapReduce
- Hadoop MaReduce作业的生命周期
![](https://i-blog.csdnimg.cn/blog_migrate/0143e2dbdc65c30ac4eaf0031fe885d3.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/8c1683460ce78218166c2dbe9ee38100.jpeg)
26 Spark
Spark 提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。
- 概念
- 核心架构
- 核心组件
- SPARK编程模型
- SPARK计算模型
- SPARK运行流程
- SPARK RDD
- SPARK RDD流程
![](https://i-blog.csdnimg.cn/blog_migrate/353445b503994002783a4e75dfcee4aa.jpeg)
27 Storm
Storm 是一个免费并开源的分布式实时计算系统。利用 Storm 可以很容易做到可靠地处理无限的数据流,像 Hadoop 批量处理大数据一样,Storm 可以实时处理数据。
- 概念
- 集群架构
- 编程模型
- Toplogy运行
- Strom Streaming Grouping
![](https://i-blog.csdnimg.cn/blog_migrate/e4b099b75571c23ad90fd96561a64bd2.jpeg)
28 YARN
YARN 是一个资源管理、任务调度的框架,主要包含三大模块:ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)。其中,ResourceManager 负责所有资源的监控、分配和管理;ApplicationMaster 负责每一个具体应用程序的调度和协调;NodeManager 负责每一个节点的维护。对于所有的 applications,RM 拥有绝对的控制权和对资源的分配权。而每个 AM 则会和 RM 协商资源,同时和 NodeManager 通信来执行和监控 task。
- 概念
- ResourceMananger
- NodeMananger
- ApplicationMaster
- YARN运行流程
![](https://i-blog.csdnimg.cn/blog_migrate/adad0ae34c593a14e86a2f5394d631ca.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/c0ba7c1caf9110ffa81532ecb3e6d180.jpeg)
29 机器学习
- 决策树
- 随机森林算法
- 逻辑回归
- SVM
- 朴素贝叶斯
- K最近邻算法
- K均值算法
- Adaboost算法
- 神经网络
- 马尔可夫
![](https://i-blog.csdnimg.cn/blog_migrate/38f58e0f2c786498bcc5660be7d33a05.jpeg)
30 云计算
- SaaS
- PaaS
- IaaS
- Docker
- OpenStack
![](https://i-blog.csdnimg.cn/blog_migrate/48676b28c1ac4de8dd4c091316d06764.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9fd69a3c430ae727e7c3d44218344061.jpeg)
最后,由于篇幅有限,以上有需要的小伙伴可以私信【面试】即可!感谢支持!!