Linux
(一). 从认识操作系统开始
- 操作系统简介
- 操作系统简单分类
- 操作系统的内核
- 操作系统的用户态与内核态
- 为什么要有用户态与内核态?
- 用户态切换到内核态的几种方式
- 物理内存RAM(RandomAccessMemory随机存储器)
- 虚拟内存(VirtualMemory)
- Swap交换空间
(二). 初探Linux
- Linux简介
- Linux诞生简介
- Linux的分类
(三) Linux文件系统概览
- Linux文件系统简介
- Inode
3.2.1 Inode是什么?有什么作用?
- 文件类型与目录结构
- Linux目录树
(四) Linux基本命令
- 目录切换命令
- 目录的操作命令(增删改查)
- 文件的操作命令(增删改查)
- 压缩文件的操作命令
- Linux的权限命令
- Linux用户管理
- Linux系统用户组的管理
- 其他常用命令
数据结构与算法
(一). 数据结构(布隆过滤器)
- 什么是布隆过滤器?
- 布隆过滤器的原理介绍
- 布隆过滤器使用场景
- 通过 Java编程手动实现布隆过滤器
- 利用Google开源的 Guava中自带的布隆过滤器
- Redis中的布隆过滤器
- 介绍
- 使用Docker安装
- 常用命令一览
- 实际使用
(二). 算法
数据库
(一). MySQL
- 基本操作
- 数据库操作
- 表的操作
- 数据操作
- 字符集编码
- 数据类型(列类型)
- 列属性(列约束)
- 建表规范
- SELECT
- UNION
- 子查询
- 连接查询(join)
- TRUNCATE
- 备份与还原
- 视图
- 事务(transaction)
- 锁表
- 触发器
- SQL编程
- 存储过程
- 用户和权限管理
- 表维护
- 杂项
(二). Redis
- 5种基本数据结构
- Redis简介
- Redis的优点
- Redis简介
- Redis的安装
- 测试本地 Redis性能
- Redis五种基本数据结构
- 字符串 string
- 列表 list
- 字典 hash
- 集合 set
- 有序列表 zset
- 跳跃表
- 跳跃表简介
- 为什么使用跳跃表
- 本质是解决查找问题
- 更进一步的跳跃表
- 跳跃表的实现
- 随机层数
- 创建跳跃表
- 插入节点实现
- 节点删除实现
- 节点更新实现
- 元素排名的实现
- 跳跃表简介
- 分布式锁深入探究
- 分布式锁简介
- 为何需要分布式锁
- Java中实现的常见方式
- Redis分布式锁的问题
- Redis分布式锁的实现
- 代码实现
- 分布式锁简介
- Redlock分布式锁
- 什么是 RedLock
- 怎么在单节点上实现分布式锁
- Redlock算法
- 失败重试
- 放锁
- 性能、崩溃恢复和 fsync
- 如何做可靠的分布式锁,Redlock真的可行么
- 用锁保护资源
- 使用 Fencing(栅栏)使得锁变安全
- 使用时间来解决一致性
- 用不可靠的时间打破 Redlock
- Redlock的同步性假设
- 结论
- 神奇的HyperLoglog解决统计问题
- HyperLogLog简介
- 关于基数统计
- 基数统计的常用方法
- 概率算法
- HyperLogLog原理
- 代码实验
- 更近一步:分桶平均
- 真实的 HyperLogLog
- Redis中的 HyperLogLog实现
- 密集型存储结构
- 稀疏存储结构
- 对象头
- HyperLogLog的使用
- HyperLogLog简介
- 亿级数据过滤和布隆过滤器
- 布隆过滤器简介
- 布隆过滤器是什么
- 布隆过滤器简介
- 布隆过滤器的使用场景
- 布隆过滤器原理解析
- 布隆过滤器的使用
- 布隆过滤器的基本用法
- 布隆过滤器代码实现
- 自己简单模拟实现
- 手动实现参考
- 使用 Google开源的 Guava中自带的布隆过滤器
- GeoHash查找附近的人
- 使用数据库实现查找附近的人
- GeoHash算法简述
- 在 Redis中使用 Geo
- 增加
- 距离
- 获取元素位置
- 获取元素的 hash值
- 附近的公司
- 注意事项
- 持久化
- 持久化简介
- 持久化发生了什么 |从内存到磁盘
- 如何尽可能保证持久化的安全
- Redis中的两种持久化方式
- 方式一:快照
- 方式二:AOF
- Redis4.0混合持久化
- 持久化简介
- 发布订阅与Stream
- Redis中的发布/订阅功能
- PubSub简介
- 快速体验
- 实现原理
- 订阅频道原理
- 订阅模式原理
- PubSub的缺点
- 更为强大的 Stream|持久化的发布/订阅系统
- 消息 ID和消息内容
- 增删改查示例
- 独立消费示例
- 创建消费者示例
- 组内消费示例
- QA1:Stream消息太多怎么办? |Stream的上限
- QA2:PEL是如何避免消息丢失的?
- Redis Stream VsKafka
- Redis中的发布/订阅功能
- [集群]入门实践教程
- Redis集群概述
- Redis主从复制
- Redis哨兵
- Redis集群化
- 主从复制
- 主从复制主要的作用
- 快速体验
- 实现原理简析
- RedisSentinel哨兵
- 快速体验
- 客户端访问哨兵系统代码演示
- 新的主服务器是怎样被挑选出来的?
- Redis集群
- 基本原理
- Redis集群概述
- 集群的主要作用
- 快速体验
- 数据分区方案简析
- 节点通信机制简析
- 数据结构简析
- Redis数据类型、编码、底层数据结构
- Redis构建的类型系统
- redisObject对象
- 命令的类型检查和多态
- 5种数据类型对应的编码和数据结构
- string
- listlist列表,它是简单的字符串列表,你可以添加一个元素到列表的头部,或者尾部。
- set
- zset
- hash
- 内存回收和内存共享
- Redis构建的类型系统
系统设计
(一). RestFul API
- 重要概念
- REST接口规范
- 动作
- 路径(接口命名)
- 过滤信息(Filtering)
- 状态码(StatusCodes)
- HATEOAS
(二). 常用框架
- Spring常见问题
- 什么是 Spring框架?
- 列举一些重要的Spring模块?
- @RestController vs@Controller
- Spring IOC &AOP
- 谈谈自己对于 SpringIoC和 AOP的理解
- SpringAOP和 AspectJAOP有什么区别?
- Springbean
- Spring中的 bean的作用域有哪些?
- Spring中的单例 bean的线程安全问题了解吗?
- @Component和 @Bean的区别是什么?
- 将一个类声明为Spring的 bean的注解有哪些?
- ### 5.5Spring中的 bean生命周期?
- SpringMVC
- 说说自己对于 SpringMVC了解?
- SpringMVC工作原理了解吗?
- Spring框架中用到了哪些设计模式?
- Spring事务
- Spring管理事务的方式有几种?
- Spring事务中的隔离级别有哪几种?
- Spring事务中哪几种事务传播行为?
- @Transactional(rollbackFor= Exception.class)注解了解吗?
- JPA
- 如何使用JPA在数据库中非持久化一个字段?
- Spring常用注解
2.1
- SpringBean相关
- @Autowired
- Component,@Repository,@Service,
- @RestController
- @Scope
- SpringBean相关
- 处理常见的 HTTP请求类型
- GET请求
- POST请求
- PUT请求
- DELETE请求
- PATCH请求
- 前后端传值
- @PathVariable和
- @RequestBody
- 读取配置信息
- @value(常用)
- @ConfigurationProperties(常用)
- PropertySource(不常用)
- 参数校验
- 一些常用的字段验证的注解
- 验证请求体(RequestBody)
- 验证请求参数(PathVariables和 RequestParameters)
- 全局处理 Controller层异常
- JPA 相关
- 创建表
- 创建主键
- 设置字段类型
- 指定不持久化特定字段
- 声明大字段
- 创建枚举类型的字段
- 增加审计功能
- 删除/修改数据
- 关联关系
- 事务
- json数据处理
- 过滤 json数据
- 格式化 json数据
- 扁平化对象
- 测试相关
- Spring事务
- 什么是事务?
- 事物的特性(ACID)了解么?
- 详谈 Spring对事务的支持
3.3.1. Spring 支持两种方式的事务管理
- Spring事务管理接口介绍
- 事务属性详解
- @Transactional注解使用详解
- SpringIOC和 AOP详解
- 什么是 IOC
- 为什么叫控制反转
- IOC解决了什么问题
- IOC和 DI的区别
- 什么是AOP
- AOP解决了什么问题
- AOP为什么叫面向切面编程
- 什么是 IOC
- Spring中 Bean的作用域与生命周期
- 前言
- bean的作用域
- singleton——唯一 bean实例
- prototype——每次请求都会创建一个新的 bean实例
- request——每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTPrequest内有效
- session——每一次HTTP请求都会产生一个新的 bean,该bean仅在当前 HTTPsession内有效
- globalSession
- bean的生命周期
- initialization 和 destroy
- 实现*Aware接口 在Bean中使用Spring框架的一些对象
- BeanPostProcessor
- 总结
- 单例管理的对象
- 非单例管理的对象
- SpringMVC工作原理详解
- 先来看一下什么是 MVC模式
- SpringMVC简单介绍
- SpringMVC使用
- SpringMVC工作原理(重要)
- SpringMVC重要组件说明
- DispatcherServlet详细解析
- Spring中都用到了那些设计模式?
- 控制反转(IoC)和依赖注入(DI)
- 工厂设计模式
- 单例设计模式
- 代理设计模式
- 代理模式在 AOP中的应用
- SpringAOP和 AspectJAOP有什么区别?
- 模板方法
- 观察者模式
- Spring事件驱动模型中的三种角色
- Spring的事件流程总结
- 适配器模式
- springAOP中的适配器模式
- springMVC中的适配器模式
- 装饰者模式
- 总结
(三). 认证授权( JWT、SSO)
- JWT身份认证优缺点分析以及常见问题解决方案
- Token认证的优势
- 无状态
- 有效避免了CSRF攻击
- 适合移动端应用
- 单点登录友好
- Token认证常见问题以及解决办法
- 注销登录等场景下 token还有效
- token的续签问题
- 总结
- Token认证的优势
- SSO单点登录
- 前言
- SSO说明
- 单点登录系统的好处
- 设计目标
- SSO设计与实现
- 核心应用与依赖
- 用户登录状态的存储与校验
- 用户登录/登录校验
- 用户登出
- 跨域登录、登出
- 备注
- 前言
(四). 分布式
- 分布式相关概念入门
- 分布式系统的经典基础理论
- 分布式事务
- 一致性协议/算法
- 分布式存储
- 分布式计算
- Dubbo
- 重要的概念
- 什么是 Dubbo?
- 什么是 RPC?RPC原理是什么?
- 为什么要用 Dubbo?
- 什么是分布式?
- 为什么要分布式?
- Dubbo的架构
- Dubbo的架构图解
- Dubbo工作原理
- Dubbo的负载均衡策略
- 先来解释一下什么是负载均衡
- 再来看看 Dubbo提供的负载均衡策略
- 配置方式
- zookeeper宕机与dubbo直连的情况
- 重要的概念
- 消息队列其实很简单
- 什么是消息队列
- 为什么要用消息队列
- 通过异步处理提高系统性能(削峰、减少响应所需时间)
- 降低系统耦合性
- 使用消息队列带来的一些问题
- JMSVSAMQP
- JMS
- AMQP
- JMSvsAMQP
- 常见的消息队列对比
- RabbitMQ
- RabbitMQ介绍
- RabbitMQ简介
- RabbitMQ核心概念
- 安装 RabbitMq
- 安装 erlang
- 安装 RabbitMQ
- RabbitMQ介绍
- RocketMQ
- 消息队列扫盲
- 消息队列为什么会出现?
- 消息队列能用来干什么?
- RocketMQ是什么?
- 队列模型和主题模型
- 队列模型
- 主题模型
- RocketMQ中的消息模型
- RocketMQ的架构图
- 如何解决 顺序消费、重复消费
- 顺序消费
- 重复消费
- 分布式事务
- 消息堆积问题
- 回溯消费
- RocketMQ的刷盘机制
- 同步刷盘和异步刷盘
- 消息队列扫盲
- 同步复制和异步复制
- 存储机制
- 总结
- Kafka
- Kafka简介
- Kafka创建背景
- Kafka简介
- Kafka基础概念
- Kafka的设计与实现
- 讨论一:Kafka存储在文件系统上
- 讨论二:Kafka中的底层存储设计
- 讨论三:生产者设计概要
- 讨论四:消费者设计概要
- 讨论五:Kafka如何保证可靠性
- 动手搭一个 Kafka
- 第一步:下载 Kafka
- 第二步:启动服务
- 第三步:发送消息
- Kafka简介
- API网关
- 背景
- 什么是API网关
- 为什么需要API网关
- 统一API网关
- 统一网关的设计
- 异步化请求
- 链式处理
- 业务隔离
- 请求限流
- 熔断降级
- 泛化调用
- 管理平台
- 总结
- 背景
- 分布式ID
- 数据库自增ID
- 数据库多主模式
- 号段模式
- 雪花算法
- 百度(uid-generator)
- 美团(Leaf)
- 总结
- Redis
- 限流的算法有哪些?
- 固定窗口计数器算法
- 滑动窗口计数器算法
- 漏桶算法
- 令牌桶算法
- Zookeeper
- 前言
- 什么是 ZooKeeper
- ZooKeeper的由来
- ZooKeeper概览
- 结合个人使用情况的讲一下 ZooKeeper
- 关于 ZooKeeper的一些重要概念
- 重要概念总结
- 会话(Session)
- Znode
- 版本
- Watcher
- ACL
- ZooKeeper特点
- ZooKeeper设计目标
- 简单的数据模型
- 可构建集群
- 顺序访问
- 高性能
- ZooKeeper集群角色介绍
- ZooKeeper&ZAB协议&Paxos算法
- ZAB协议&Paxos算法
- ZAB协议介绍
- ZAB协议两种基本的模式:崩溃恢复和消息广播
- 总结
(五). 大型网站架构
- 如何设计一个高可用系统?要考虑哪些地方?
- 什么是高可用?可用性的判断标准是啥?
- 哪些情况会导致系统不可用?
- 有哪些提高系统可用性的方法?
- 注重代码质量,测试严格把关
- 使用集群,减少单点故障
- 限流
- 超时和重试机制设置
- 熔断机制
- 异步调用
- 使用缓存
- 其他
- 总结
(六). 微服务
- SpringCloud
- 什么是Springcloud
- SpringCloud的版本
- SpringCloud的服务发现框架——Eureka
- 负载均衡之 Ribbon
- 什么是 RestTemplate?
- 为什么需要 Ribbon?
- Nginx和 Ribbon的对比
- Ribbon的几种负载均衡算法
- 什么是 OpenFeign
- 必不可少的 Hystrix
- 什么是 Hystrix之熔断和降级
- 什么是Hystrix之其他
- 微服务网关——Zuul
- Zuul的路由功能
- Zuul的过滤功能
- 关于 Zuul的其他
- 为什么要使用进行配置管理?
- Config是什么
- 引出 SpringCloudBus
- 总结
必会工具
(一). Git
- 版本控制
- 什么是版本控制
- 为什么要版本控制
- 本地版本控制系统
- 集中化的版本控制系统
- 分布式版本控制系统
- 认识 Git
- Git简史
- Git与其他版本管理系统的主要区别
- Git的三种状态
- Git使用快速入门
- 获取 Git仓库
- 记录每次更新到仓库
- 一个好的 Git提交消息
- 推送改动到远程仓库
- 远程仓库的移除与重命名
- 查看提交历史
- 撤销操作
- 分支
(二). Docker
- 认识容器
- 什么是容器?
- 先来看看容器较为官方的解释
- 再来看看容器较为通俗的解释
- 图解物理机,虚拟机与容器
- 什么是容器?
- 再来谈谈 Docker的一些概念
- 什么是 Docker?
- Docker思想
- Docker容器的特点
- 为什么要用 Docker?
- 容器 VS虚拟机
- 两者对比图
- 容器与虚拟机总结
- 容器与虚拟机两者是可以共存的
- Docker基本概念
- 镜像(Image):一个特殊的文件系统
- 容器(Container):镜像运行时的实体
- 仓库(Repository):集中存放镜像文件的地方
- 常见命令
- 基本命令
- 拉取镜像
- 删除镜像
- Build Ship andRun
- 简单了解一下 Docker底层原理
- 虚拟化技术
- Docker基于 LXC虚拟容器技术
- 总结
面试指南
(一). 程序员简历该怎么写
- 为什么说简历很重要?
- 先从面试前来说
- 再从面试中来说
- 下面这几点你必须知道
- 必须了解的两大法则
- STAR法则(SituationTaskActionResult)
- FAB法则(FeatureAdvantageBenefit)
- 项目经历怎么写?
- 专业技能该怎么写?
- 排版注意事项
- 其他的一些小tips
(二). 如何准备面试
- 如何获取大厂面试机会?
- 面试前的准备
- 准备自己的自我介绍
- 搞清楚技术面可能会问哪些方向的问题
- 休闲着装即可
- 随身带上自己的成绩单和简历
- 如果需要笔试就提前刷一些笔试题
- 花时间一些逻辑题
- 准备好自己的项目介绍
- 提前准备技术面试
- 面试之前做好定向复习
- 面试之后复盘
- 如何学习?学会各种框架有必要吗?
- 我该如何学习?
- 学会各种框架有必要吗?
(三). Java学习路线和方法推荐
- Java基础
- 操作系统与计算机网络
- 数据结构与算法
- 前端知识
- MySQL
- 常用工具
- 常用框架
- 多线程的简单使用
- 分布式
- 深入学习
- 微服务
- 总结
本文限于篇幅,故而只展示目录的内容,完整的Java面试学习文档小编已经帮你整理好了,有需要的朋友点赞+关注私信我222免费领取Java、大厂面试学习资料哦!