MySQL万字精华总结!Java面试经验(1)

  1. 如果是JDK1.7 则先判断是否需要扩容,如果不需要扩容,就生成Entry对象,使用头插法 添加到当前链表中。

  2. 如果是JDK1.8,则先判断当前位置上的Node类型,是红黑树Node,还是链表的Node。

  3. 如果是红黑树Node,则将key和value封装成为红黑树的Node,如果key存在,则更新value值。(因为要插入树结构中,就需要遍历)

  4. 如果是链表的Node,则封装为链表Node,尾插法,插入到链表的最后位置去,(因为尾插法,需要遍历链表,同时统计节点数,在遍历链表的过程中会判断是否存在当前key,如果参在更新value,当遍历完毕之后,就插到尾部,插入之后如果当前节点个数大于等于8,则会把这个链表转化成为红黑树)

  5. 将key和value封装位Node插入红黑树和链表之后,在判断时候需要扩容,如果需要就扩容,不需要就介绍PUT方法。

  6. 1.7 是先判断是否需要扩容,再插入

  7. 1.8是先插入,在判断。

![在这里插入图片描述](https://img-blog.csdnimg.cn/e76210b89b0748b19468bb9e23fd22c9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FudG9uaV9jeQ==,size_16,color_FFFFFF,t_70)  

参考源码:效果最好!

2.说一下ThreadLocal

  1. ThreadLocal是java中提供的线程本地存储机制,可以利用该机制将数据缓存在某个线程内部,该线程可以在任意时刻,任意方法中获取缓存的数据。

  2. ThreadLocal底层是通过ThreadLocalMap来实现的,每个Thread对象(注意不是ThreadLocal对象)中都存在一个ThreadLocalMap,Map的key为ThreadLocal对象,Map的value为需要缓存的值。

  3. 如果在线程池中使用ThreadLocal会造成内存泄露,(因为ThreadLocal使用之后需要回收Entry对象,但是线程池不会回收,而线程对象是通过强引用指向的ThreadLocalMap,ThreadLocalMap也是通过强引用指向的Entry对象。所以相关对象无法回收,从而造成内存泄漏),解决方法是:使用了ThreadLocal对象之后,手动调用ThreadLocal的remove方法,手动回收;

  4. ThreadLocal经典的应用场景就是链接管理.(一个线程一个链接,该链接对象可以在不同的方法之前共享,但是在不同线程之见不共享)。

    在这里插入图片描述

    补充解释:

    2.每一个线程有一个map

    3.缺点: 就是在连接池中:线程不会被回收,所以当完成了任务1,要去执行任务2的时候,任务1预留下来的缓存全部都无法被回收!内存被占用的越来越多。

    在这里插入图片描述

说一下JVM中,那些是共享区,那些可以作为GC ROOT?

在这里插入图片描述

方法区:存放类

堆:存放对象

每个线程独有的:

栈(虚拟机栈):

本地方法栈:

在这里插入图片描述

堆里面会有很多对象,没有被引用的对象,

根的特征:

举例:一个方法中的变量(栈中本地变量)

可以作为gc root的东西?

总结

至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议:

  1. 技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;
  2. 项目经历:只写明星项目,描述遵循 STAR 法则;
  3. 简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;

以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频
戳这里免费领取文中资料

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

86983)]

[外链图片转存中…(img-c7DZzWEG-1628139186985)]

[外链图片转存中…(img-81JYxH5f-1628139186987)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值