面试题总结第二弹

一.Volatile++为什么不保证原子性?

        因为它实际上是三个操作组成的一个复合操作。
        首先获取volatile变量的值,将该变量的值加1,将该volatile变量的值写会到对应的主存地址。而原子性指的是一个或多个操作在CPU执行的过程中不会被中断的特性,即这些操作要么全部执行,要么全部不执行。Volatile虽然能保证变量的可见性,但它不能保证复合操作的原子性。

二.Hashmap的阈值为什么是0.75?

        1.平衡性能和空间利用率
                加载因子的选择是一个权衡。较小的加载因子会导致哈希表更快地达到扩容条件,但可能会浪费空间。较大的加载因子会减少扩容的频率,但可能导致更多的冲突。0.75是在效率和空间利用之间取得的平衡,通常能够提供较好的性能。
        2.减少冲突的可能性
                较小的加载因子意味着哈希表的填充程度相对较低,减少了冲突的可能性。冲突是指两个不同的键映射到了相同的哈希表索引,影响了HashMap的性能。0.75的加载因子在减少冲突的同时,保持了较高的空间利用率。
        3.加载因子对性能的影响
                加载因子的选择直接影响HashMap的性能。较小的加载因子会使得哈希表更频繁地进行扩容,但在容量增加的同时也降低了冲突的可能性。相反,较大的加载因子会减少扩容的频率,但可能导致较多的冲突,从而影响性能。

三.Hashmap的容量为什么是2的n次幂?
        只有数组长度是2的幂次方倍才能够确保数组中的每一个位置发生hash冲突的概率是相同的,数组长度减一的二进制码必须全部是1,否则会出现部分位置永远不会发生hash冲突而造成资源浪费

四.Redis有哪几种数据淘汰策略?
        1.noeviction:返回错误当内存限制达到,并且客户端尝试执行会让更多内存被使用的命令。
        2.allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。
        3.volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。
        4.allkeys-random: 回收随机的键使得新添加的数据有空间存放。
        5.volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
        6.volatile-ttl: 回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。

五.service里的方法a通过this调用方法b会导致方法b事务传播机制失效吗?
        会,事务管理的切面将无法拦截"this"调用,从而导致事务失效

六.Redis 集群模式下一个 Master (主节点)挂掉后如何选举?
        当 slave(从节点) 发现自己的 master(主节点) 变为 FAIL(宕机) 状态时,便尝试进行 Failover(即故障切换),以期成为新的 master。由于挂掉的 master 可能会有多个 slave,从而存在多个 slave 竞争成为 master的过程, 其过程如下:
        1.slave发现自己的 master 变为 FAIL(宕机)。
        2.将自己记录的集群 currentEpoch 加 1,并广播 信息
        3.其他节点收到该信息,只有 master 响应,判断请求者的合法性,并发送信息
        4.尝试 failover(故障切换) 的 slave 收集 master 返回的信息
        5.slave 收到超过半数(N/2+1) master 的 ack 后变成新 Master(这里解释了集群为什么至少需要三个主节点,如果只有两个,当其中一个挂了,只剩一个主节点是不能选举成功的)。
        6.slave 广播 消息通知其他集群节点。

从节点并不是在主节点一进入 FAIL 状态就马上尝试发起选举,而是有一定延迟,一定的延迟确保我们等待 FAIL 状态在集群中传播,slave 如果立即尝试选举,其它 masters 或许尚未意识到 FAIL 状态,可能会拒绝投票

七.Redis哨兵模式是什么?它的作用是什么?
        Redis哨兵是用于监控和管理Redis集群的进程。它负责监测Redis节点的健康状态,当主节点发生故障时,自动进行故障转移,选举新的主节点,保证Redis集群的高可用性。

八.在Redis主从复制中,如果主节点宕机,会发生什么情况?
        如果主节点宕机,从节点会进行选举新的主节点,并进行故障转移。被选为主节点的从节点将成为新的主节点,并继续提供读写服务。

九.redis的key的过期原理
       1. 定时任务:Redis 定时任务会定期检查过期的key,删除这些过期的key。

        2.惰性删除:当一个key被访问时,Redis会检查这个key是否过期,如果过期就删除它。

        3.定期删除:在Redis的内存回收策略中,还包括了主动清理内存的策略,即定期执行一个清理过期key的操作。

十.redis实现分布式锁原理、特点
        分布式锁是分布式系统中的关键概念,用于解决多个节点同时访问共享资源可能引发的并发问题。
为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下五个条件:
        1.互斥性:同一时间只能一个节点获取到锁,其他节点需要等待获取到锁的节点释放了锁才可以获取到锁,而这里的等待一般是通过阻塞,和自旋两种方式
        2.安全性:解铃还须系铃人,只能释放自己的锁不能误删别人的锁
        3.死锁:比如在节点宕机时最容易出现锁没被释放的问题,然后出现死锁,所以做锁的过期
        4.容错:当Redis宕机,客户端仍然可以释放锁
        5.可重入:获取锁失败可以重新尝试获取锁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11 - 在k8s官方文档上,经常搜索不到内容的问题

使用k8s官方文档时,会出现首页可以正常打开,但是输入搜索关键字之后,搜索不到内容的情况,如下图: 这是由于相关搜索组件被墙的原因,处理方法如下: 谷歌浏览器: 火狐浏览器&#x…

大模型实战—通义千问大模型微调

通义千问大模型微调 在之前的文章中,我分享了一些使用大语言模型开发应用的方法,也介绍了几个开源大语言模型的部署方式, 有同学给我留言说想知道怎么训练自己的大语言模型,让它更贴合自己的业务场景。完整的大语言模型训练成本…

springBoot集成seata实现分布式事务

背景 日常开发离不开分布式系统,自然避免不了分布式事务问题,Seata 是一款阿里开源的主流分布式事务解决方案,但实际工作引入seata感觉有点重,本人之前在商业银行做开发也很少团队使用。今天趁此机会做个demo,玩一玩了…

关系运算符

介绍 关系运算符的结果都是 boolean 型&#xff0c; 也就是要么是 true&#xff0c; 要么是 false关系表达式 经常用在 if 结构的条件中或循环结构的条件中 运算符运算范例结果相等于89false!不等于8!9true<小于8<9true<小于等于8<9true>大于8>9false>大…

使用shared lib将各个构建工具集成到一起

共享库代码 package devopsdef Build(buildType, buildShell){def buildTools ["mvn": "MVN", "ant": "ANT", "gradle": "GRADLE"]println("当前buildType是${buildType}")buildHome tool buildTool…

使用itext7为pdf文档添加水印

iText7是一款功能强大的开源PDF处理库&#xff0c;用于创建、编辑和处理PDF文档。相比于iTextSharp&#xff0c;iText7具有更先进的功能和更好的性能。 添加水印是iText7的一个常见应用场景。水印可以用于保护文档的版权&#xff0c;标识文档的状态或来源等。使用iText7添加水…

Idea修改【Help->Edit Custom VM Options...】后,导致idea无法正常启动的解决方法

一、错误场景: 二、解决方法&#xff1a; 修改文件路径&#xff1a;C:\Users\tianjm&#xff08;写自己的用户名&#xff09;\AppData\Roaming\JetBrains\IdeaIC2024.1&#xff08;选自己安装的版本&#xff09;

用友GRP-U8 operOriztion SQL注入漏洞复现

前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一、产…

selenium 下载文件取消安全下载的方法

问题描述 我要从一个网站上下载文件&#xff0c;谷歌浏览器总是自动阻止下载&#xff0c;并询问我是否保留。 可是&#xff0c;我想要的是不要询问&#xff0c;默认下载即可。 运行环境 OS: macOSselenium: 4.19.0python: 3.10.11Chrome: 124.0.6367.62selenium chromedrive…

powerdesigner如何显示表备注、表字段备注

一、显示表的 comment 选择菜单 Tools->Display Preferences,选中 “Table”,勾选 “Commen” 二、显示列的 comment

OpenAI 和 Moderna 合作,推进 mRNA 医学

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、关于 Moderna Moderna 是 mRNA 医学领域的佼佼者&#xff0c;其通过不断推动 mRNA 技术的发展&#xff0c;正在重塑药物的制造方式&#xff0c;并深刻地改变我们治疗和预防疾病的方法。凭借在科学、…

Vue.js 3 应用开发与核心源码解析 阅读笔记

https://www.dedao.cn/ebook/reader?idV5R16yPmaYOMqGRAv82jkX4KDe175w7xRQ0rbx6pNgznl9VZPLJQyEBodb89mqoO 2022年出的书&#xff0c;针对Vue的版本是3.2.28&#xff0c;当前的版本是 3.4.21。 本书的一大特色是对Vue 3.x的核心源码&#xff08;响应式原理、双向绑定实现、虚…

tailwind免费模版

搜索合集 https://www.tailwindawesome.com/?pricefree&typetemplate Floatui: https://floatui.com/templates 适合做主页 3.Preline: https://preline.co/examples.html 4.hyperui&#xff1a;https://www.hyperui.dev/ 5.Merakiui: https://merakiui.com/template…

国外的代码签名证书公司可以用吗?

在今天的互联网时代&#xff0c;代码签名证书对于软件开发者和用户来说是至关重要的。代码签名证书是由数字签名技术实现的&#xff0c;用于验证软件开发者身份并保证软件的完整性和可信性。由于代码签名证书的重要性&#xff0c;国外的代码签名证书公司也成为了市场的一部分。…

JAVA学习-行为抽象和Lambda.收集器

在 Java 中&#xff0c;行为抽象和 Lambda 表达式通常用于函数式编程的范式。Java 8 引入了函数式接口和 Lambda 表达式&#xff0c;使得在处理集合数据时更加灵活和简洁。而收集器&#xff08;Collector&#xff09;则是 Java 8 Stream API 提供的一种机制&#xff0c;用于将 …

Python实现压缩和解压缩

压缩和解压缩是日常常用的操作&#xff0c;不管是windows上图形界面的操作&#xff0c;还是linux上用命令来进行压缩解压缩&#xff0c;总的而言都还是比较方便的。 但用代码来实现就没做过&#xff0c;近期也得实现代码压缩与解压缩操作&#xff0c;所以就抽时间来研究一下。…

【八股】Java基础、集合、JVM

面向对象三大特性 1 封装&#xff1a; 将 方法 和 属性 写到同一个类中&#xff0c;并将属性 私有化&#xff0c;生成 get set方法&#xff0c;外部访问属性需要通过get和set方法,内部可以直接访问属性&#xff0c;这样的一个类我们认为它完成了封装。 2 继承&#xff1a; 子…

【Linux系统编程】第九弹---权限管理操作(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、目录权限 2、粘滞位 总结 1、目录权限 首先提出一个问题&#xff0c;删除一个文件需要什么权限呢&#xff1f;&#xff1f…

视频美颜SDK原理与实践:从算法到应用

当下&#xff0c;从社交媒体到视频通话&#xff0c;人们越来越依赖于视频美颜功能来提升自己的形象。而视频美颜SDK作为支撑这一技术的重要工具&#xff0c;其原理和实践至关重要。 一、什么是视频美颜SDK&#xff1f; 视频美颜SDK是一种软件开发工具包&#xff0c;用于集成到…

python文件 成绩分析

‘’文件score.txt中存储了学生的考试信息,内容如下 小明,98 小刚,90 小红,91 小王,98 小刘,80 请写代码,读取文件数据,并进行如下分析 最高分和最低分分别是多少&#xff1f;得最高分的学生有几个&#xff1f; 得最低分的学生有几个平均分是多少&#xff1f; ‘’’ def rea…