2022java核心知识点总结和面试指南
一、Java
(一). 基础
1.1. Java 入门(基础概念与常识)
1.2. Java 语法
1.3. 基本数据类型
1.4. 方法(函数)
2.1. 类和对象
2.2. 面向对象三大特征
2.3. 修饰符
2.4. 接口和抽象类
2.5. 其它重要知识点
3.1. 集合
3.3. 多线程
(二). 容器
1.1 ArrayList简介
1.2 ArrayList核心源码
3.1 HashMap 简介
3.2 底层数据结构分析
3.4 get方法
(三). 并发
3.1 何谓悲观锁与乐观锁
3.2 乐观锁常见的两种实现方式
3.3 乐观锁的缺点
3.4 CAS与synchronized的使用情景
4.1 Atomic 原子类介绍
4.2 基本类型原子类
4.3 数组类型原子类
4.5 对象的属性修改类型原子类
5.1 AQS 简单介绍
5.2 AQS 原理
5.3 Semaphore(信号量)-允许多个线程同时访问
5.4 CountDownLatch (倒计时器)
5.5 CyclicBarrier(循环栅栏)
(四). JVM
1.1 概述
1.2 运行时数据区域
1.3 HotSpot 虚拟机对象探秘
2.1揭开JVM 内存分配与回收的神秘面纱
2.3 垃圾收集算法
2.4 垃圾收集器
3.1 JDK 命令行工具
3.2 JDK 可视化分析工具
5.1 类加载过程
5.2 卸载
6.1 回顾一下类加载过程
6.2 类加载器总结
6.3 双亲委派模型
二、网络
(一). 计算机网络知识
1.1 基本术语
1.2 重要知识点总结
2.1 基本术语
2.2 重要知识点总结
2.3 最重要的知识点
3.1 基本术语
3.2 重要知识点总结
3.3 最重要的知识点
4.1 基本术语
4.2 重要知识点总结
4.3 最重要知识点
5.1 基本术语
5.2 重要知识点总结
5.3 最重要的知识点
6. 应用层
6.1 基本术语
6.2 重要知识点总结
(二). HTTPS中的TLS
1. SSL与TLS
2.从网络协议的角度理解HTTPS
3.从密码学的角度理解HTTPS
3.1. TLS 工作流程
3.2. 密码基础
3.4. TLS 总结
三、Linux
(一). 从认识操作系统开始
1.1 操作系统简介
1.3 操作系统的内核
1.4 操作系统的用户态与内核态
1.4.1 为什么要有用户态与内核态?
1.4.2 用户态切换到内核态的几种方式
1.4.3 物理内存RAM(Random Access Memory 随机存储器)
1.4.4 虚拟内存(Virtual Memory)
(二). 初探Linux
2.1 Linux简介
2.2 Linux诞生简介
(三) Linux文件系统概览
3.1 Linux文件系统简介
3.2 Inode
3.2.1 Inode是什么?有什么作用?
(四) Linux基本命令
4.1 目录切换命令
4.2 目录的操作命令(增删改查)
4.3 文件的操作命令(增删改查)
4.4 压缩文件的操作命令
4.5 Linux的权限命令
4.6 Linux 用户管理
4.7 Linux系统用户组的管理
四、数据结构与算法
(一). 数据结构(布隆过滤器)
1. 什么是布隆过滤器?
4.通过Java 编程手动实现布隆过滤器
5. 利用Google开源的Guava中自带的布隆过滤器
五、数据库
(一). MySQL
4. 数据操作
7. 列属性(列约束)
8. 建表规范
10. UNION
17. 锁表
19. SQL编程
20. 存储过程
(二). Redis
1.1 Redis 简介
1.2 Redis 五种基本数据结构
2.2 跳跃表的实现
3. 分布式锁深入探究
3.1 分布式锁简介
3.2 Redis 分布式锁的实现
4. Redlock分布式锁
4.1什么是RedLock
4.2 怎么在单节点上实现分布式锁
4.3 Redlock 算法
4.4 失败重试
4.5 放锁
4.6性能、崩溃恢复和fsync
5. 如何做可靠的分布式锁,Redlock真的可行么
5.1 用锁保护资源
5.2使用Fencing (栅栏)使得锁变安全
5.3 使用时间来解决一致性
5.4用不可靠的时间打破Redlock
5.6 结论
6. 神奇的HyperLoglog解决统计问题
6.1 HyperLogLog 简介
6.2 HyperLogLog 原理
6.3 Redis 中的HyperLogLog 实现
7. 亿级数据过滤和布隆过滤器
7.1 布隆过滤器简介
7.2 布隆过滤器原理解析
7.3 布隆过滤器的使用
7.4 布隆过滤器代码实现
8. GeoHash查找附近的人
8.1 使用数据库实现查找附近的人
8.2 GeoHash 算法简述
8.3在Redis 中使用Geo
9. 持久化
9.1 持久化简介
9.2 Redis 中的两种持久化方式
10. 发布订阅与Stream
10.1 Redis 中的发布/订阅功能
10.2更为强大的Stream | 持久化的发布/订阅系统
11. [集群]入门实践教程
11.1 Redis 集群概述
11.2 主从复制
11.3 Redis Sentinel 哨兵
11.4 Redis 集群
12. Redis数据类型、编码、底层数据结构
12.1 Redis构建的类型系统
12.2 5种数据类型对应的编码和数据结构
六、系统设计
(一). RestFul API
2. REST 接口规范
2.1 动作
2.2 路径(接口命名)
2.3 过滤信息(Filtering)
(二). 常用框架
1. Spring常见问题
1.1什么是Spring 框架?
1.2 列举一些重要的Spring模块?
1.3 @RestController vs @Controller
1.4 Spring IOC & AOP
1.5 Spring bean
1.6 Spring MVC
1.7 Spring 框架中用到了哪些设计模式?
1.8 Spring 事务
1.9 JPA
2. Spring常用注解
2.1
2.2 Spring Bean 相关
2.3处理常见的HTTP 请求类型
2.4 前后端传值
2.5 读取配置信息
2.6 参数校验
2.8 JPA 相关
2.9 事务
2.10 json 数据处理
2.11 测试相关
3.2 事物的特性(ACID)了解么?
3.3详谈Spring 对事务的支持
4. Spring IOC和AOP详解
4.1什么是IOC
4.2 IOC 解决了什么问题
4.3 IOC 和DI 的区别
4.4 什么是AOP
4.5 AOP解决了什么问题
4.6 AOP为什么叫面向切面编程
5. Spring中Bean 的作用域与生命周期
5.1 前言
5.2 bean的作用域
5.3 bean的生命周期
6.3 SpringMVC 使用
6.4 SpringMVC 工作原理(重要)
6.5 SpringMVC 重要组件说明
7. Spring中都用到了那些设计模式?
7.1 控制反转(IoC)和依赖注入(DI)
7.3 单例设计模式
7.5 模板方法
7.6 观察者模式
7.7 适配器模式
7.8 装饰者模式
(三). 认证授权( JWT、SSO)
1. JWT 身份认证优缺点分析以及常见问题解决方案
1.1 Token 认证的优势
1.2 Token 认证常见问题以及解决办法
1.3 总结
2. SSO 单点登录
2.1 前言
2.2 SSO设计与实现
(四). 分布式
1. 分布式相关概念入门
1.1 分布式系统的经典基础理论
1.2 分布式事务
1.3 一致性协议/算法
1.4 分布式存储
1.5 分布式计算
2. Dubbo
2.1 重要的概念
2.2 Dubbo 的架构
2.3 Dubbo 的负载均衡策略
2.4 zookeeper宕机与dubbo直连的情况
3.1 什么是消息队列
3.2 为什么要用消息队列
3.3 使用消息队列带来的一些问题
3.4 JMS VS AMQP
3.5 常见的消息队列对比
4. RabbitMQ
4.1 RabbitMQ 介绍
4.2安装RabbitMq
5. RocketMQ
5.1 消息队列扫盲
5.2 RocketMQ是什么?
5.3 队列模型和主题模型
5.4 RocketMQ的架构图
5.5如何解决顺序消费、重复消费
5.6 分布式事务
5.7 消息堆积问题
5.8 回溯消费
5.9 RocketMQ 的刷盘机制
5.10 总结
6. Kafka
6.1 Kafka 简介
6.2 Kafka 的设计与实现
6.3动手搭一个Kafka
7. API网关
7.1 背景
7.2 统一网关的设计
7.3 总结
8. 分布式ID
8.1 数据库自增ID
8.2 数据库多主模式
8.3 号段模式
8.4 雪花算法
8.5 百度(uid-generator)
8.6 美团(Leaf)
8.7 总结
8.8 Redis
9. 限流的算法有哪些?
9.1 固定窗口计数器算法
9.2 滑动窗口计数器算法
9.3 漏桶算法
9.4 令牌桶算法
10. Zookeeper
10.1 前言
10.2什么是ZooKeeper
10.3关于ZooKeeper 的一些重要概念
10.4 ZooKeeper 特点
10.5 ZooKeeper 设计目标
10.7 ZooKeeper &ZAB 协议&Paxos算法
(五). 大型网站架构
1. 如何设计一个高可用系统?要考虑哪些地方?
1.1 什么是高可用?可用性的判断标准是啥?
1.2 哪些情况会导致系统不可用?
1.3 有哪些提高系统可用性的方法?
1.4 总结
1.2 Spring Cloud 的版本
1.3 Spring Cloud 的服务发现框架——Eureka
1.4负载均衡之Ribbon
1.5什么是Open Feign
1.6必不可少的Hystrix
1.7 微服务网关——Zuul
1.8引出Spring Cloud Bus
七、必会工具
(一). Git
1. 版本控制
1.1 什么是版本控制
1.2 为什么要版本控制
1.3 本地版本控制系统
1.4 集中化的版本控制系统
1.5 分布式版本控制系统
2.认识Git
2.1 Git 简史
2.2 Git 与其他版本管理系统的主要区别
2.3 Git 的三种状态
3. Git 使用快速入门
3.1获取Git 仓库
3.2 记录每次更新到仓库
3.3一个好的Git 提交消息
3.4 推送改动到远程仓库
3.5 远程仓库的移除与重命名
3.6 查看提交历史
3.7 撤销操作
(二). Docker
2.4为什么要用Docker ?
3.2 容器与虚拟机总结
3.3 容器与虚拟机两者是可以共存的
4.2 容器(Container):镜像运行时的实体
4.3 仓库(Repository):集中存放镜像文件的地方
5. 常见命令
5.1 基本命令
6. Build Ship and Run
八、面试指南
(一). 程序员简历该怎么写
1. 为什么说简历很重要?
1.1 先从面试前来说
1.2 再从面试中来说
2. 下面这几点你必须知道
4. 项目经历怎么写?
5. 专业技能该怎么写?
6. 排版注意事项
(二). 如何准备面试
1. 如何获取大厂面试机会?
2. 面试前的准备
2.1 准备自己的自我介绍
2.2 搞清楚技术面可能会问哪些方向的问题
2.4 随身带上自己的成绩单和简历
2.5 如果需要笔试就提前刷一些笔试题
2.6 花时间一些逻辑题
2.7 准备好自己的项目介绍
2.8 提前准备技术面试
2.9 面试之前做好定向复习
3. 面试之后复盘
4. 如何学习?学会各种框架有必要吗?
4.1 我该如何学习?
4.2 学会各种框架有必要吗?
1. Java 基础
2. 操作系统与计算机网络
3. 数据结构与算法
4. 前端知识
5. MySQL
7. 常用框架
8. 多线程的简单使用
9. 分布式
10. 深入学习
11. 微服务
12. 总结