刚开始盲猜一波,我相信肯定有一些人认为,想要找一份java后端工作,要去学习redis,要去学习dubbo,还要去学习springboot,springcloud等等等等一系列的知识。没错,需要学习这些,这时候有人还补充说,还需要项目,对,也没错,这可以丰富你的简历。
但是,如果你的定位是大厂,如果是腾讯,阿里,百度,字节这种大型互联网公司,如果你还是只学习刚才说的那些,我相信你永远都走不到面试那一关。
如果有幸看到这篇文章,而且还是在校生,我建议你着重学习一下基础,比如数据结构与算法,比如jvm,比如gc垃圾回收器,比如计算机网络与算法,比如设计模式等等。再比如更基础的javase。
如果你觉得javase基础学的不错,来,考考你,java8中基本数据类型的范围分别是多少,不要说int的基本数据类型是 -2^31 ~ 2^31-1,我需要的答案是-2147483648 ~~ 2147483647,而且是8种基本数据类型的范围都要说,好了,不要慌张,这确实是一个面试题。大厂校招笔试更多的是算法,是计算机网络,是基础等等等。当然面试的时候远远不止我说的这些,我想表达的是,不是你原本想象的那个样子。
前言结束,言归正传。今天我们的正事是数据结构和算法。
个人觉得,一篇文章写完数据结构,太多了,我相信很难有人看完,也不方便大家翻阅,所以,我分开发表了,下面是所有链接,里面都是用java语言实现的,还比较完整,如果需要,请点链接前往。
队列
- 环形数组模拟队列( Circle Array Queue)
稀疏数组
- 稀疏数组(Sparse Array)
链表
- 单链表(linked List)
- 单链表常见面试题(新浪、百度、腾讯)
- 双向链表(DoublelinkeList)
- Josephus(约瑟夫、约瑟夫环) 问题
栈
- Java数据结构和算法–栈
- 前缀、中缀、后缀表达式
- 栈实现综合计算器(中缀表达式)
- 逆波兰计算器(后缀表达式和中缀转后缀两个版本的代码)
- 逆波兰计算器完整版
递归
- Java数据结构和算法–递归
- Java递归解决迷宫问题
- 递归-八皇后问题(回溯算法)
排序算法
- Java排序算法
- 冒泡排序
- 选择排序
- 插入排序
- 希尔排序
- 快速排序
- 归并排序
- 基数排序
- 常用排序算法总结和对比
查找算法
- Java查找算法有哪些?
- 二分查找算法(递归版本,下面有非递归版本,非递归版本的比较常用)
- 插值查找算法
- 斐波那契(黄金分割法)查找算法
哈希表(散列)
- 哈希表(散列)-Google上机题
二叉树
- 二叉树、满二叉树和完全二叉树
- 二叉树的前序、中序和后序的遍历、查找、删除
- 顺序存储二叉树
- 实现线索化二叉树和遍历线索化二叉树
树结构的实际应用
堆排序也是一种排序算法,因为堆排序需要用到二叉树,所以和上面的排序算法分开了,学习堆排序之前先学习二叉树相关知识比较好。
-
堆排序
-
赫夫曼树的构建和遍历
-
赫夫曼编码、解码、文件压缩和解压
-
二叉排序树创建、遍历、增加和删除
-
创建平衡二叉树(AVL 树)和AVL树的增删改查
多路查找树
- 二叉树与B树、B+树、B*树和2-3树
图
- 构建图和图的深度优先遍历(dfs)和广度优先遍历(bfs)
程序员常用10种算法
- 二分查找算法(非递归)
- 分治算法解决汉诺塔问题
- 动态规划算法解决背包问题
- KMP算法解决字符串匹配问题
- 贪心算法解决集合覆盖问题
- 普里姆算法(prim)解决修路最短路径问题
- 克鲁斯卡尔算法(kruskal)解决公交站问题
- 迪杰斯特拉算法(Dijkstra)求最短路径问题
- 用弗洛伊德(Floyd)算法解最短路径问题
- Java对马踏棋盘问题(骑士周游问题)的实现
在啰嗦两句数据结构与算法学习起来实属不易,建议结合视频学习,可以去网站找一些视频,不然光靠文字很难理解到位。



