面试题总结一

前端面试题每日一学_11 1、谈谈对BFC的理解?如何创建BFC?2、清除浮动的常用方法有哪些,各⾃的优缺点是什么?3、讲一下CSS盒模型的区别 阅读详情

hashmap的线程不安全体现在哪里 

HashMap不是线程安全的,HashMap在并发场景下可能存在哪些问题?

  • JDK1.7 中,由于多线程对HashMap进行扩容,调用了HashMap#transfer(),具体原因:某个线程执行过程中,被挂起,其他线程已经完成数据迁移,等CPU资源释放后被挂起的线程重新执行之前的逻辑,数据已经被改变,造成死循环、数据丢失。
  • JDK1.8 中,由于多线程对HashMap进行put操作,调用了HashMap#putVal(),具体原因:假设两个线程A、B都在进行put操作,并且hash函数计算出的插入下标是相同的,当线程A执行完第六行代码后由于时间片耗尽导致被挂起,而线程B得到时间片后在该下标处插入了元素,完成了正常的插入,然后线程A获得时间片,由于之前已经进行了hash碰撞的判断,所有此时不会再进行判断,而是直接进行插入,这就导致了线程B插入的数据被线程A覆盖了,从而线程不安全。

改善:数据丢失、死循环已经在在JDK1.8中已经得到了很好的解决,如果你去阅读1.8的源码会发现找不到HashMap#transfer(),因为JDK1.8直接在HashMap#resize()中完成了数据迁移。

总结:HashMap线程不安全的体现:

  • JDK1.7 HashMap线程不安全体现在:死循环、数据丢失
  • JDK1.8 HashMap线程不安全体现在:数据覆盖

以上来源于:https://segmentfault.com/a/1190000038989240

哪些阻塞队列是有界的 哪些是无界的

有界队列:

SynchronousQueue(不存储元素的阻塞队列):内部任何元素的阻塞队列,任何一次插入操作的元素都要等待相对的删除/读取操作,否则进行插入操作的线程就要一直等待,反之亦然。

ArrayBlockingQueue(不存储元素的阻塞队列):此队列按 FIFO(先进先出)原则对元素进行排序,新元素插入队列的尾部,从头部获得元素,这是一个典型的“有界缓存区”,一旦创建了这样的缓存区,就不能再增加其容量,试图向已满队列中放入元素会导致操作受阻塞;试图从空队列中提取元素将导致类似阻塞。

无界队列:LinkedBlockingQueue(基于单向链表的无界的阻塞队列):尾部插入元素,头部 取出元素;其特点是 FIFO(先进先出),ThreadPoolExecutor 线程池中常用的等待队列。它可以指定容量也可以不指定容量,实际上任何无限容量的队列/栈都是有容量的,这个容量就是Integer.MAX_VALUE,指定了容量后,超过容量的插入会被阻塞

LinkedBlockingDeque(基于双向链表的无界的阻塞队列):是一个由链表结构组成的双向阻塞队列,即可以从队列的两端(头部和尾部)插入和移除元素。双向队列因为多了一个操作队列的入口,在多线程同时入队时,也就减少了一半的竞争,既可以从尾部插入/取出元素,还可以从头部插入元素/取出元素

PriorityBlockingQueue( 是一个按照优先级进行内部元素排序的无限队列。存放在PriorityBlockingQueue 中的元素必须实现 Comparable 接口,这样才能通过实现compareTo()方法进行排序。优先级最高的元素将始终排在队列的头部),LinkedTransferQueue (也是一个无限队列,它除了具有一般队列的操作特性外(先进先出),还具有一个阻塞特性),不会保证优先级一样的元素的排序,也不保证当前队列中除了优先级最高的元素以外的元素,随时处于正确排序的位置。并不保证除了队列头部以外的元素排序一定是正确的

LinkedTransferQueue:是一个无限队列,它除了具有一般队列的操作特性外(先进先出),还具有一个阻塞特性,可以由一对生产者/消费者线程进行操作,当消费者将一个新的元素插入队列后,消费者线程将会一直等待,直到某一个消费者线程将这个元素取走,反之亦然。

 maxmumSize 什么时候会失效

设置的maxMumSize小于核心线程数或者设置的最大数大于Cpu数+1

spring如何解决循环依赖问题

 什么是循环依赖,即2个或以上bean 互相持有对方,最终形成闭环,如A依赖B,B依赖C,C又依赖A。这里不是函数的循环调用(是个死循环,除非有终结条件),是对象相互依赖关系,原型(Prototype)的场景是不支持循环依赖的,通常会走到AbstractBeanFactory类中下面的判断,抛出异常

Spring中循环依赖的场景:构造器的循环依赖(Spring解决不了)  2、setter循环依赖

Spring 为了解决单例的循环依赖问题,使用了 三级缓存 ,递归调用时发现 Bean 还在创建中即为循环依赖

检测循环依赖的过程如下:

  • A 创建过程中需要 B,于是 A 将自己放到三级缓里面 ,去实例化 B
  • B 实例化的时候发现需要 A,于是 B 先查一级缓存,没有,再查二级缓存,还是没有,再查三级缓存,找到了!
    • 然后把三级缓存里面的这个 A 放到二级缓存里面,并删除三级缓存里面的 A
    • B 顺利初始化完毕,将自己放到一级缓存里面(此时B里面的A依然是创建中状态)
  • 然后回来接着创建 A,此时 B 已经创建结束,直接从一级缓存里面拿到 B ,然后完成创建,并将自己放到一级缓存里面
  • 如此一来便解决了循环依赖的问题

一句话:先让最底层对象完成初始化,通过三级缓存与二级缓存提前曝光创建中的 Bean,让其他 Bean 率先完成初始化。

redis使用哪种数据结构可以实现延迟队列 实现思路

Redis的zset、list的特性,我们可以利用Redis来实现一个延迟队列 RedisDelayQueue

具体实现:https://blog.youkuaiyun.com/DFSETHTDFD/article/details/113404550

聚集索引和非聚集索引有什么区别 非聚集索引的叶子结点和非叶子结点存放什么

区别:https://blog.youkuaiyun.com/DFSETHTDFD/article/details/113404574

叶子结点存放指向主键的key,非叶子结点存放查找的key

 

前端面试题每日一学_13 1、谈一下Base64的原理及其优缺点。2、你使用过CSS预处理器吗?我们为什么要在项目中使用CSS预处理器?3、什么是边距折叠现象?解决方案有哪些? 阅读详情

相关推荐

Golang面试题一

后端开发,golang常见面试题

l_user的专栏 1030

分区索引笔记(四)--分区索引什么时候会失效及处理

参考链接:http://space.itpub.net/35489/viewspace-684473        分区表中 local 索引的维护会在oracle 操作表分区的时候自动进行,需要注意的是global 索引,当global索引所在表执行alter table 涉及下列操作时,会导至该索引失效,需要重新建立: Ø ADD PARTITION | SUBPARTITION

ITer-Tony 7990

最全面的MySQL面试题大全-一

现在正是毕业季,很多的在校的大学生都在找工作,但是有很多的公司都会在某个方面卡大家一下,其中让很多人头疼的地方就是数据库的查询。这里我就总结了之前在有些公司面试的时候遇到的一些关于数据库查询的笔试题给大家做一个归纳。所使用的是面试题中比较经典的一个场景就是学生管理系统中所涉及到的表结构。 表结构介绍 第一张表 学生表 sid 学生id sname 学生姓名 sage 学生年龄 sex 学生性别...

初学者 1万+

QSizePolicy说明

相关代码 一般设置QSizePolicy用接口: inline void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical); QSizePolicy::Policy是枚举类型,其原型: enum Policy { Fixed = 0, Minimum = GrowFlag, Maximum = ShrinkFlag, Preferred =

nixiaoxianggong的博客 1043

SpringCloud面试题(一)

SpringCloud面试题(一) 大家好,我是酷酷的韩~下面提供一些整理的springcloud面试题 一.微服务的优点缺点?说下开发项目中遇到的坑? 优点: 1.每个服务直接足够内聚,代码容易理解 2.开发效率高,一个服务只做一件事,适合小团队开发 3.松耦合,有功能意义的服务。 4.可以用不同语言开发,面向接口编程。 5.易于第三方集成 6.微服务只是业务逻辑的代码,不会和HTML,CSS...

韩金群的博客 13万+

智能汽车竞赛摄像头处理(4)——摄像头循迹思路讲解

智能汽车竞赛摄像头处理(4)对摄像头循迹思路进行讲解。

weixin_62261692的博客 7054

线程池----参数详解(一)

线程池参数详解欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 本文是讲解线程池的...

love_gzd的博客 602

⑨【从0制作自己的ros导航小车:上位机篇】04、使用gmapping建图

前面的文章已经能够实现在odom坐标系下显示小车模型和里程计数据了,本文加上激光slam必不可少的传感器雷达,先进行测试,然后直接开始建图!

海风的博客 2913

jdk线程池中调整coreSize无效的问题分析及处理

近期在ETL项目中,增加一个用于监控队列数和当前线程数之间的关系,并动态调节线程池大小的一个功能。其作用机制即是指当发现队列中任务太多时,能够增大线程数,以达到使用更多的线程来运行任务的目的。相应的伪代码如下所示: extThreadPoolExecutor.setCorePoolSize(newCorePoolSize); extThreadPoolExecutor.prestartCor

会飞的鱼 1665

实战指南:如何用Frida绕过某梆加固的Anti-Frida检测(附完整脚本)

本文深入剖析了企业级加固方案中的Anti-Frida检测机制,并提供了实战对抗策略。通过分析基于文件系统、内存特征、行为及环境的多层次检测原理,文章详细介绍了如何定位检测逻辑、绕过maps文件扫描、对抗内存与行为特征检测,并附上了针对某梆加固的完整绕过脚本与系统化工程方案。

weixin_42527589的博客 596

【异常】解决JDK21升级中的SecurityException: JCE无法验证BC提供者问题

本文详细解析了JDK21升级中常见的SecurityException: JCE无法验证BC提供者问题的根源与解决方案。核心在于JDK21强化了JCE安全验证,导致签名不合规的老版本Bouncy Castle库被拒绝。文章提供了通过Maven依赖树精准定位、排除旧版本并引入兼容的bcprov-jdk18on新库的完整步骤,以及清理缓存等实战技巧,帮助开发者彻底解决此兼容性问题。

weixin_29197051的博客 487

《剑指Offer》面试题25:二叉树中和为某一值的路径

《剑指Offer》 P143面试题25:二叉树中和为某一值的路径题目:

(●—●) 696

【毕设实战】飞行器目标识别系统:基于YOLOv5的智能检测全流程教程,助你毕设脱颖而出

亲爱的同学,毕设是不是让你既期待创新又担心技术门槛?如果你的毕设方向是计算机视觉、智能检测,那这个绝对能成为你的“毕设王牌”。从数据准备到界面开发,我会把整个项目拆成“傻瓜式”步骤,让你能一步步做出属于自己的毕设成果。

know_F0727的博客 104

「2024」前端高频面试题之JS篇(一)

前端高频面试题之JS篇,概述:JS8种数据类型及两种数据类型的区别,数据类型的检测方式,JS为什么要进行变量提升,闭包

m0_37489258的博客 1659

MIT液态神经网络(LNN)深度研究:原理、应用与未来

液态神经网络(Liquid Neural Networks, LNNs)代表了人工智能领域,特别是神经网络架构设计中的一次范式转移。它从根本上挑战了传统深度学习模型依赖大规模参数和静态架构的惯例,转而寻求一种更为动态、高效且受生物神经系统启发的计算范式。LNN的核心创新在于其将神经网络的计算过程从离散的、基于时间步的更新,转变为连续的、由微分方程驱动的动态系统演化。这种转变不仅赋予了模型前所未有的适应性和鲁棒性,还使其在处理复杂的时序数据和因果推断任务时表现出色。本章节将深入剖析LNN的技术原理,从其核心的

步子哥的博客 2583

【LLC快速上手系列】LLC轻载时,死区时间怎么调才对?别再傻傻乱搞了!

死区时间,就是指。如果你死区设得好,就能让开通前 ( V_DS to 0 ),完美实现!

weixin_43199439的博客 1851

奇葩!一公司面试题竟问如厕习惯、吃饭时长、入睡时间等

涉事公司回应称:能综合得出个人基本情况

程序人生的博客 8854

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

一牛网:PCB工程师面试题集锦

一牛网:PCB工程师面试题集锦 去发现同类优质开源项目:https://gitcode.com/ 在求职过程中,面试是检验能力和知识的关键环节。为了帮助各位PCB工程师更好地准备面试,我们整理了一份面试题集锦。这份资料结合了公司以往的面试题以及整理者的个人经验,总结和归纳了一些可能被考察的题目。我们希望通过这份题库,能够帮助你们在面试中表现出色,顺利获得理想的工作岗位。 此资源文件包含以下内容: ...

gitblog_06714的博客 296

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

一牛网PCB工程师面试题集锦:助你面试无忧

一牛网PCB工程师面试题集锦:助你面试无忧 去发现同类优质开源项目:https://gitcode.com/ 一、项目的核心功能/场景 助力PCB工程师高效备战面试,全面掌握面试必备知识点。 二、项目介绍 面试,作为求职过程中的关键环节,往往决定了求职者的命运。一牛网为广大PCB工程师精心整理了一份面试题集锦,旨在帮助求职者在面试中展现出自己的实力,顺利拿到理想的工作岗位。 这份题库涵盖了从PCB...

gitblog_06760的博客 577

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

一、java基础面试题

本片文章主要总结了java基础常见的面试题,虽然面试中基础问的不是很多,但是不能不会,大家可以根据目录选择自己没有掌握的,也可以全部看一遍,过一遍自己的基础,后面java一些其他技术的面试题也会陆陆续续的发布,为大多面试者提供一个复习的平台。感兴趣的铁铁可以关注下本专栏;在本系列文章中有我自己在思考题目的时候,写的简记,或者我认为重点的都加粗进行了处理,给大家提供借鉴,题目大都是从各个地方总结而来,后面有新题目也会不断的进行扩充。

懒洋洋的博客 2433

面试题34. 二叉树中和为某一值的路径 面试题35. 复杂链表的复制

面试题34. 二叉树中和为某一值的路径 面试题35. 复杂链表的复制

GSX 280

前端面试题一

前端面试题一

2201_75328243的博客 785

MySQL面试题一

两轮面试完之后本来以为可以谈薪资了 结果HR可能是觉得还没问SQL题 出其不意地在微信上扔了四道SQL题目过来 题目如下: 我发你几道测试题,就是日常工作中基础的应用,你看看熟练吗?可以吗 现有表app_login,包含3个字段(uid、day、isguest),各uid在每一天可能有任意条记录 现求9月份(1至30日)中 1.每个uid在每天各有多少条记录 2.每个uid在...

星辰大数据的博客 2720

Vue一到三年面试题总结

笔者粉丝群里的朋友们多部分的人都在找vue的工作而没有再找react工作,所以我之前总结的html,css,js,react面试题还不行,还要继续拓展vue的。。于是我就把大家在出去面试的时候遇到的vue面试题以粉丝们投稿的方式收集了起来做个汇总,希望能帮助到更多的朋友们~ Vue面试题正文: 1.vue全家桶包含哪些? 答案:vue全家桶与react全家桶介绍 2.v-model是什么?怎么使...

吴小迪的博客 9万+
上一篇: Redis持久化策略之Rdb和Aof
下一篇: Redis实现延迟队列方法介绍
Mr.姚先森
博客等级 码龄11年 26粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值