最后
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
Dubbo面试专题
JVM面试专题
Java并发面试专题
Kafka面试专题
MongDB面试专题
MyBatis面试专题
MySQL面试专题
Netty面试专题
RabbitMQ面试专题
Redis面试专题
Spring Cloud面试专题
SpringBoot面试专题
zookeeper面试专题
常见面试算法题汇总专题
计算机网络基础专题
设计模式专题
graph.showDijkstra();
}
}
class Graph {
private char[] vertex; // 顶点数组
private int[][] matrix; // 邻接矩阵
private VisitedVertex vv; // 已经访问的结点集合
// 构造器
public Graph(char[] vertex, int[][] matrix) {
this.vertex = vertex;
this.matrix = matrix;
}
// 显示图的方法
public void showGraph() {
for (int[] link : matrix) {
System.out.println(Arrays.toString(link));
}
}
/**
-
迪杰斯特拉算法实现
-
@param index 表示出发顶点对应的下标
*/
public void dsj(int index) {
vv = new VisitedVertex(vertex.length, index);
update(index); // 更新index顶点到周围顶点距离和前驱顶点
for (int i = 0; i < vertex.length; i++) {
index = vv.updateArr(); // 选择并返回新的访问顶点
update(index); // 更新index下标顶点到周围顶点的距离和周围顶点的前驱结点
}
}
// 更新index下标顶点到周围顶点的距离和周围顶点的前驱结点
private void update(int index) {
int len = 0;
// 根据遍历我们的邻接矩阵的matrix[index]行
for (int j = 0; j < matrix[index].length; j++) {
// len 含义是:出发顶点到index顶点的距离 + 从index顶点到j顶点的距离和
len = vv.getDis(index) + matrix[index][j];
// 如果j顶点没有被访问过,并且len小于出发顶点到j顶点的距离,就需要更新
if (!vv.in(j) && len < vv.getDis(j)) {
vv.updatePre(j, index); // 更新j顶点的前驱为index顶点
vv.updateDis(j, len); // 更新出发顶点到j顶点的距离
}
}
}
// 显示结果
public void showDijkstra() {
vv.show();
}
}
// 已访问顶点集合
class VisitedVertex {
// 记录各个顶点是否访问过,1表示访问过,0表示未访问,会动态更新
public int[] already_arr;
// 每个下标对应的值为前一个顶点下标,会动态更新
public int[] pre_visited;
// 记录出发顶点到其他所有顶点的距离,比如G为出发顶点,就会记录G到其他顶点的距离,会动态更新
// 求的最短距离就会存放到dis
public int[] dis;
/**
-
@param length 表示顶点的个数
-
@param index 表示出发顶点对应的下标,比如G顶点,传入下标6
*/
public VisitedVertex(int length, int index) {
this.already_arr = new int[length];
this.pre_visited = new int[length];
this.dis = new int[length];
// 初始化diss数组,全部填充为65535
Arrays.fill(dis, 65535);
this.already_arr[index] = 1; // 设置出发顶点被访问过
this.dis[index] = 0; // 设置出发顶点的访问距离为0
}
/**
-
功能:判断index顶点是否被访问过
-
@param index 下标
-
@return 如果访问过,返回true,否则返回false
*/
public boolean in(int index) {
return already_arr[index] == 1;
}
/**
-
功能:更新出发顶点到index的距离
-
@param index 下标
-
@param len 长度
*/
public void updateDis(int index, int len) {
dis[index] = len;
}
/**
-
功能:更新pre顶点的前驱顶点为index的顶点
-
@param pre 顶点
-
@param index 更新后顶点
*/
public void updatePre(int pre, int index) {
pre_visited[pre] = index;
}
/**
-
功能:返回出发顶点到index顶点的距离
-
@param index 顶点
-
@return 距离
*/
public int getDis(int index) {
return dis[index];
}
/**
-
继续选择并返回新的访问结点,比如这里G访问完后,就是A点作为新的访问顶点(注意不是出发顶点)
-
@return 尚未访问过的结点中值最小的
*/
public int updateArr() {
int min = 65535, index = 0;
for (int i = 0; i < already_arr.length; i++) {
if (already_arr[i] == 0 && dis[i] < min) {
min = dis[i];
index = i;
}
}
// 更新index被访问过
already_arr[index] = 1;
return index;
}
/**
- 显示最后的结果,即将三个数组的情况输出
*/
public void show() {
System.out.println(“===============================”);
// 输出already_arr
最后
我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?
既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?
架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。
如果你也想成为一名好的架构师,那或许这份Java核心架构笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
中高级开发必知必会:
个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。
如果你也想成为一名好的架构师,那或许这份Java核心架构笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
中高级开发必知必会:
[外链图片转存中…(img-kEseDqaz-1714919893427)]