3.12 备战秋招八股整理(5)

本文概述了面试阶段的关键知识点,包括GET和POST方法的区别、测试bug所需信息、前端后端bug识别、HashMap默认大小与底层实现、进程与线程的区别、死锁条件以及解决有序数组问题的临界值法。
摘要由CSDN通过智能技术生成
从今天开始就要进入忙碌的面试阶段了,加油!!!一定会拿到好offer的!!!

八股持续更新中,算法也要开始啦

目录

从今天开始就要进入忙碌的面试阶段了,加油!!!一定会拿到好offer的!!!

1.GET和POST的区别

2.测试过程中提交一个bug所需要的信息

3.如何区分一个bug是前端还是后端?

4.hashmap默认大小是多少?底层是什么?

5.进程和线程的区别?

6.死锁产生的四个必要条件

7.输入一个有序数组和数字,返回和这个数字最接近的元素下标

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);
    }
}
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值