前言
时间飞逝,转眼间毕业七年多,从事 Java 开发也六年了。我在想,也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。
写这一套 Java 面试必备系列文章的初衷。
- 整理自己学过的知识,总结,让其成为一套体系,方便日后查阅。
- 现在不少 Java 开发者还比较迷茫,没有形成自己的一套知识体系。希望这一系列的文章能够帮助他们。
经历过校招的人都知道,算法和数据结构都是不可避免的。
在笔试的时候,最主要的就是靠算法题。像拼多多、头条这种大公司,上来就来几道算法题,如果你没AC出来,面试机会都没有。
在面试(现场面或者视频面)的时候也会问算法题,难度肯定是没有笔试的时候那么难的。我们可以想象一个场景,一面面试面到一半,面试官让你反转二叉树,问问现在的自己,你还会吗。
我想你应该需要先看看下面的思维导图
不扯远了,如果还在上大学的同学可以先以排序和各种的基本数据结构开始入门。我花了一个星期将八大基础排序和链表/二叉树/栈/队列制作成一份精美的PDF。
这份PDF阅读体验肯定是要比公众号和各大的博客平台的文章要好的。PDF内容为纯手打!
先来看下目录
数据结构与算法学习文档及笔记
一、冒泡排序
- 冒泡排序的实现
- 第一趟排序
- 第二趟排序
- 代码简化
- 冒泡排序优化
二、选择排序
- 选择排序介绍和稳定性说明
- 第一趟排序
- 第二趟排序
- 代码简化
三、插入排序
- 插入排序介绍
- 第一趟排序
- 第二趟排序
- 简化代码
四、快速排序
- 快速排序的介绍
- 第一趟快速排序
- 递归分析与代码实现
五、归并排序
- 归并排序的介绍
- 演算归并排序过程
- 归并排序前提分析(分治法)
- 归并代码实现
六、希尔排序
- 希尔排序介绍
- 希尔排序体验
- 希尔排序代码实现
七、堆排序
- 堆排序介绍
- 堆排序体验
- 堆排序代码实现
八、基数排序(桶排序)
- 基数排序(桶排序)介绍
- 基数排序代码编写
- 桶排序(基数排序)总结
九、递归
- 递归介绍
- 求和
- 数组内部的最大值
- 冒泡排序递归写法
- 斐波那契数列
- 汉诺塔算法
- 总结
十、链表
- 回顾与知新
- Java实现链表
- 链表总结
十一、栈
- 数据结构[栈]就是这么简单
- 数据结构[栈]代码实现
十二、队列
- 数据结构[队列]就是这么简单
十三、二叉树
- 二叉树就是这么简单
- 动态创建二叉树
- 查询二叉查找树相关
最后想要说明的是,排序算法/数据结构的代码可能不是最优解,代码的实现都是以比较容易理解的方式去写的。几乎每句代码都有对应的注释,应该是能看懂的。