1. 手写一个快速排序算法?
package cn.oop.quicksort;
import java.util.Arrays;
/**
- 快速排序算法
- @author 温暖wk
*/
public class QuickSort {
public static void sort(int a[],int low,int heigh) {
int i,j,value;//先声明
if(low>heigh) {
return;//return后面什么都不跟,作用是退出该程序的运行
}
i=low; //
j=heigh;
value=a[i]; //数组第一个元素作为基准
while(i<j) {
while(i<j && a[j]>=value)
j--;//从后向前
if(i<j)
a[i++]=a[j];
//与前面的相对应
while(i<j && a[i]<value)
i++;//从前向后
if(i<j)
a[j--]=a[i];
}
a[i]=value;
sort(a,low,i-1);//对低字表进行递归排序
sort(a,i+1,heigh);//对高子表进行递归排序
}
public static void quickSort(int a[]) {
sort(a, 0, a.length - 1);
}
public static void main(String[] args) {
int a[] = { 49, 38, 65, 97, 76, 13, 27, 49 };
quickSort(a);
System.out.println(Arrays.toString(a));
}
}
2. HTTP常见状态码及其作用?
2XX 成功
3XX 重定向
4XX 客户端错误
5XX 服务器错误
100 继续。客户端应该继续其请求
101 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200 请求成功。一般用于GET与POST请求。
301 永久性重定向
404 服务器无法找到对应资源
505 服务器不支持请求的HTTP协议版本,无法完成处理
3.TCP/IP协议的三次握手?
①客户端首先发送一个带 SYN 标志的数据包给对方。
②接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。
③最后, 发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。
4. TCP/IP协议的四次挥手?
① Client发送一个FIN(释放一个连接),用来关闭Client到Server的数据传送
② Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)
③ Server发送一个FIN,用来关闭Server到Client的数据传送
④ Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1
5. 二叉树
6. 队列
7.进程与线程的区别?
8.ArrayList和LinkedList的区别?从内存和操作等方面介绍?
9.java实现同步的方法是什么?原理是什么?
答案:后续更新