最后
面试题文档来啦,内容很多,485页!
由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。
1111道Java工程师必问面试题
MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:
Elasticsearch 24 题 +Memcached + Redis 40题:
Spring 26 题+ 微服务 27题+ Linux 45题:
Java面试题合集:
源码和解析
解析:
- 这种题目相对来说较好理解,可以简单理解为将节点按首尾相接的形式排序,首先第一行指定了节点开始地址。后续每行输入节点开始地址,值和结束地址。
- 输入时,可以使用循环来接收每个节点的信息。并装入一个ArrayList之中。当接收的节点开始地址等于第一行的开始地址时,证明该节点就是链表的第一个节点。
- 编写一个方法,用于取出未排序ArrayList中的目标节点。也即是有序链表的下一个节点。
- 这里需要注意的是,取出节点后就将目标节点从原始列表中移出,这样可以减少下一次查找的时间。如果在列表中无法找到目标节点,那么其他节点就不需要管了。我们只需要以开始地址为开头的那个节点形成链表的中间值。其他不在链表之中的就过滤掉即可。
示例代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class T24 {
static class Point{
String start;//开始地址
int value;//值
String next; //下一个节点地址
@Override
public String toString() {
return "Point [start=" + start + ", value=" + value + ", next="
+ next + "]";
}
}
public static void main(String[] args) {
System.out.println("请输入:");
Scanner scanner=new Scanner(System.in);
String input=scanner.nextLine();
Point startPoint=new Point();
int number=Integer.parseInt(input.split(" ")[1]);
startPoint.start=input.split(" ")[0];
List<Point> rawPoints=new ArrayList<T24.Point>();
//排序后的List
List<Point> orderList=new ArrayList<>();
for(int i=0;i<number;i++){
input=scanner.nextLine();
Point point=new Point();
point.start=input.split(" ")[0];
point.value=Integer.parseInt(input.split(" ")[1]);
point.next=input.split(" ")[2];
if(point.start.equals(startPoint.start)){
startPoint=point;
orderList.add(point);
}else{
rawPoints.add(point);
}
}
Point point=getNextPoint(rawPoints,startPoint.next);
while(point!=null){
orderList.add(point);
rawPoints.remove(point);
point=getNextPoint(rawPoints,point.next);
}
System.out.println(orderList);
Point middlePoint=null;
int middle=orderList.size()/2;//下标
middlePoint=orderList.get(middle);
System.out.println(middlePoint.value);
// 长度为5 下标0 1 2 3 4 中间为2===5/2=2 长度为6 下标 0 1 2 3 4 5 中间为3 6/2=3
}
//在List中查找以某个为开始索引的节点
static Point getNextPoint(List<Point> points,String nextAddress){
Point point=null;
if(nextAddress.equals("-1")){
return point;
}
for(int i=0;i<points.size();i++){
if(points.get(i).start.equals(nextAddress)){
point=points.get(i);
break;
}
}
return point;
}
}
### 最后
俗话说,好学者临池学书,不过网络时代,对于大多数的我们来说,我倒是觉得学习意识的觉醒很重要,这是开始学习的转折点,比如看到对自己方向发展有用的信息,先收藏一波是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!
另外,给大家安排了一波学习面试资料:
![image](https://img-blog.csdnimg.cn/img_convert/1f5f7a635ce013f8d85974b75d8a4fbd.webp?x-oss-process=image/format,png)
![image](https://img-blog.csdnimg.cn/img_convert/27bef9ee714dabd37ec31dddb45284f7.webp?x-oss-process=image/format,png)
以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
s/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**