从今天开始就要进入忙碌的面试阶段了,加油!!!一定会拿到好offer的!!!
八股持续更新中,算法也要开始啦
目录
从今天开始就要进入忙碌的面试阶段了,加油!!!一定会拿到好offer的!!!
1.GET和POST的区别
2.测试过程中提交一个bug所需要的信息
3.如何区分一个bug是前端还是后端?
4.hashmap默认大小是多少?底层是什么?
默认大小是16
jdk1.7 hashmap底层是数组+链表
jdk1.8 hashmap底层是数组+链表+红黑树
(红黑树目的:加红黑树的目的是提高HashMap插入和查询整体效率。)
5.进程和线程的区别?
1. 资源分配
进程:操作系统资源分配的基本单位,每个进程都有独立的地址空间,内存,数据
线程:进程执行的一个单元,一个进程内可以有多个线程,它们共享进程的地址空间和其他资源,包括文件描述符、信号处理等。
2. 并发性
进程:进程间相互独立,互不干扰
线程:线程是进程的实体,多个线程可以并发执行,线程共享进程的地址空间和资源,因此线程间的通信更加方便
3. 开销
进程:创建,销毁,切换一个进程的开销较大,因为每个进程都有独立的地址空间;
线程:创建,销毁,切换一个线程的开销较小,因为她们共享进程的资源;
4. 效率
进程之间的切换比线程之间的切换效率要低,因此使用多线程能够提高系统的并发性和效率。
6.死锁产生的四个必要条件
1.互斥条件
一个资源每次只能被一个进程使用
2.请求和保持条件
进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3.不可抢占条件
进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
4.循环等待条件
存在一个进程——资源的环形链,即进程集合中的每个进程都在等待下一个进程所持有的资源。
7.输入一个有序数组和数字,返回和这个数字最接近的元素下标
涉及到的测试思想:临界值法
题目分析:有序数组,可以往二分查找想,注意特殊情况的判断,注意除法像上像下取整的写法
public class Paixu {
//输入一个有序数组和数字,返回和这个数字最接近的元素下标
public static int getindex(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
int temp = 0;
//测试思想,先测临界值
if (target > arr[right])
return -1;
while (left <= right) {
temp = left + (right-left)/2;
if (arr[temp] > target) {
right = temp - 1;
} else if (arr[temp] < target) {
left = temp + 1;
} else {
return temp;
}
}
//此时跳出循环,代表数组中没有与target相等的数字,即判断和这个数字最接近的元素下标
//正常情况下,若left,right都>0,right索引位置的数字为接近target的最小数字,left索引位置的数字为接近target的最大数字
//用到测试的思想,临界值法判定
if(right<0){
return left;
}else if(left>=arr.length){
return right;
}else{
return Math.abs(arr[left] - target) < Math.abs(arr[right] - target) ? left : right;
}
}
public static void main(String[] args){
int[] arr={1,3,5,7,9};
int target=6;
int index=getindex(arr,target);
System.out.println(index);
}
}