常见面试题

1:线程生命周期

        java中线程生命周期主要分为五种状态,分别是,新建状态,就绪状态,运行状态,阻塞状态,死亡状态。

        当创建线程对象后,线程常用于新建状态,处于新建状态的线程调用satrt()(运行后状态切换为就绪状态)。就绪状态的线程,去竞争CPU资源,竞争成功之后切换为运行状态。处于运行状态的线程调用sellp或wait方法后,切换为阻塞状态,等到一定时间后或调用notify(),noitfAll()方法切换为就绪状态。

        如果线程对象调用stop()切换为死亡状态。

2:SpringMVC常用注解

@Controller 类上注解,表示当前类是控制器。

@RestController 具备@Controller和@ResponnBody注解的功能。

@RequestMapping 放在类上表示类中所有控制方法映射路径都已配置文件开头。

        如果放在方法上,表示当前控制单元的映射路径。

@ResponseBody注解:把方法返回值转换为json字符串,并放入到相应流中。

@CrossOrigin 允许跨域的注解

@RequestParam 可以设置请求参数名,默认值,是否必须包含的参数。

@RequestBody 把请求体中的json数据转换为对象。

3:Spring Ioc DI的解释回答

        IOC 和 DI是同一间事情的两个名称。他们都强调的是一个过程。这个过程包含让SpringIoc容器实例化 Bean到Bean的属性注入值的整个过程。

Spring IoC是整个Spring框架的核心,Spring 框架 AOP等其他核心功能都是在Ioc基础上实现的。

4:HashMap(这里只有JKD1.8之后的)

        hashMap底层是由 数组+链表+红黑树完成的,HashMap的存储形式是按照<K,V>键值对的形式存储,HashMap在做添加的时候,是通过HashCode计算Key的值来确定好自己要存储的位置而HashCode的计算方式是散列表,也就是说,有可能会出现两个Key不相等,但是被HashCoed计算出的值相等,存储位置相等,就会出现Hash冲突,比如可以通过数组下面用链表的方式存储,相等的Key存储到相同的地址会以链表的形式存储,但是存储的多了就会影响访问的速度。所以使用到了红黑树。

        红黑树存储的底层原理是如果数组大于64或链表大于8时。就会转换为红黑树,以便提高访问的效率,当链表小于6时,他就会从红黑树变换为链表,也是为了加快访问效率。既解决了冲突,也能加快访问效率

        也有其他办法来解决Hash冲突,比如在哈希,同时构造多个不同的Hash函数,等发生Hash冲突时使用第二个 ,第三个,等其他的哈希函数计算地址,知道不发射管冲突为止,虽然不容易发生聚集,但是增加了计算时间,也可以进行开放链址法,按照一定的 次序,从Hash表中寻找一个空闲的单元,然后把繁盛冲突的元素存入到该单元避免冲突等等。

        如果存储数量多时进行扩容哦个,他会根据负载因子计算出需要存储存储的大小,HashMap中的负载因子,默认为0.75。当负载情况大于负载因子的时候,就会i进行扩容操作每次扩容操作,每次扩容量是上一次的两倍

        也存在存储上线的二的三十一次幂。超过这个阈值也就不在音进行扩容操作

5:容器

容器:用来装数据的东西,它可以装指定好的任何类型

知道的集合

集合分为两大类。

集合分为collection跟Map,collection分为List,Set  List又分为 ArrayLisy LinkList,Vector

Map分为HashMap,HashTable

ArrayLaist底层是由可变长数组来创建的。可变长数组实际的数组为扩容(1:创建新对象,2:将原有的元素拷贝到新数组中,默认扩容大小为(1.5倍)

具有随机访问能力,遍历效率高,中间插入删除效率低


LinkList底层双向非循环链表实现的,创建节点:将节点放入链表中,节点(上个节点地址 元素值 下个节点地址) 由这三个节点完成的
当第一次添加时,他会判断是否又上一个节点,如果没有,那么它的上一个地址就为Null,
当创建第二个节点对象时,判断出有上一个节点,那他就会为上一个节点赋值上一个节点的元素值,上一个节点的下一个节点地址就会赋值为下一个节点地址的元素值,
添加第三个节点时,它的上一个节点就是第二个节点的属性值,第二个节点的属性值就是下一个节点的上一个地址,如果没有在添加第三个,那么就会出现第三个的下一个节点为Null
中间插入删除的效率高,随机访问的效率低遍历效率高

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值