面试高频问题----3

一、非对称加密和对称加密具体算法和使用场景

对称加密算法:发端和收端共享同一个密钥,使用该密钥进行加密和解密。适用于数据量大的数据传输中;
非对称加密算法:有一个公钥,一个私钥;发端和收端不需要共享密钥,只需要使用对方的公钥进行加密;适用于身份验证、数字签名等场景。

二、基本数据结构

****数组
优点:索引访问速度快,通过索引可以快速地访问数组中的任何元素;空间效率高,数组在内存中是连续存储的,空间利用率高。
缺点:插入和删除效率低,在数组中插入或删除元素可能需要移动大量的元素以保持数组的连续性;大小固定:数组在创建时大小是固定的,如果需要存储更多的数据,可能需要重新分配内存并复制数据。
****链表
优点:动态大小,链表的大小可以根据需要动态的增加或减少;插入和删除效率高,在链表中插入或删除元素只需要修改相应的指针即可,不需要移动其他元素。
缺点:索引访问速度慢,需要从头节点开始遍历链表以访问特定位置的元素;额外空间开销,链表中的每个元素都需要额外的空间来存储指向下一个元素的指针。
****栈
优点:先进后出,非常适合处理需要逆序执行的操作,如函数调用和撤销;实现简单。
缺点:功能有限,只能访问栈顶的元素,对栈中间的元素操作较为困难。
****队列
优点:先进先出,适合处理需要顺序执行的任务,如打印任务,消息队列等。并发处理,在多线程或分布式系统中,队列是实现任务分发和同步的有效工具;
缺点:对非队头元素操作效率较低,通常需要遍历整个队列来访问或修改非队头。
****树
优点:层次化存储,树形结构可以清晰地表示数据之间地层次关系;高效搜索,树形结构中,通过特定的搜索算法可以实现高效的查找操作。
缺点:实现复杂,树形结构的实现通常比数组和链表更加复杂;平衡问题,对于某些树形结构,如果数据插入的顺序不当,可能导致树的高度过高,从而影响查找效率。
****图
优点:表示复杂关系,图可以表示数据之间的复杂关系,如社交网络、地图路线等;算法丰富,在图上有许多成熟的算法来解决实际问题。
缺点:实现复杂,图的实现通常比其他数据结构更加复杂,因为它需要存储节点之间的关系;存储空间开销大,对于包含大量节点和边的图,可能需要大量的存储空间来存储这些信息。

三、缓存穿透、缓存击穿、缓存雪崩及它们的解决方案?

缓存穿透:查询一个一定不存在的数据,这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力;
解决方案:1.布隆过滤器:查询数据时,先判断该数据是否存在于布隆过滤器中,如果存在则直接返回结果,否则再从数据库查询数据;
                  2.缓存空对象:在缓存中存储空对象,当查询一个不存在的数据时,直接返回空对象,而不是默认值或者错误信息;
                 3.设置热点数据永不过期
缓存击穿:热点key在某个时间点过期的时候,而恰好这个时间点对key有大量的并发请求过来,从而大量的请求打到数据库。
解决方案:1.主动设置空缓存:当接收对于数据库中没有的请求查询时,主动在缓存中写入空数据,设置过期时间;
                   2.互斥锁:使用分布式锁进行加锁,保证只有一个线程能访问数据库,其他线程需要等待锁释放之后才能进行查询;
                  3.设置逻辑过期时间
缓存雪崩:大量缓存同时失效或过期后引起的系统性能急剧下降。
解决方案:1.保持缓存层的高可用:使用Redis哨兵模式或者Redis集群部署方式,保证缓存层高可用性;
                  2.限流降级组件:使用限流降级组件如:Sentinel等,避免缓存层或存储层异常导致整个系统不可用;
                   3.缓存不过期:设置Redis的key永不失效,避免大量缓存同时失效;
                  4.优化缓存过期时间:为每一个Key选择合适的过期时间,避免大量key同一时刻同时失效;
                   5.使用互斥锁重建缓存
                   6.异步重建缓存

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

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

相关文章

05-JavaScript 中的 `tap` 和 `click` 事件

JavaScript 中的 tap 和 click 事件 笔记分享 在现代Web开发中,尤其是针对移动设备的开发,处理用户交互事件是一个重要的挑战。尽管 click 事件在桌面浏览器中广泛使用,但 tap 事件在移动设备上提供了更合适的用户体验。这篇文章将深入探讨 …

JVM之【字节码/Class文件/ClassFile 内容解析】

说在前面的话 Java语言:跨平台的语言(write once,run anywhere) 当Java源代码成功编译成字节码后,如果想在不同的平台上面运行,则无须再次编译这个优势不再那么吸引人了。Python、PHP、Perl、Ruby、Lisp等有强大的解释器。跨平台似乎已经快成为一门语言…

Vue 3 Teleport:掌控渲染的艺术

title: Vue 3 Teleport:掌控渲染的艺术 date: 2024/6/5 updated: 2024/6/5 description: 这篇文章介绍了Vue3框架中的一个创新特性——Teleport,它允许开发者将组件内容投送到文档对象模型(DOM)中的任意位置,即使这个位…

房地产3d全景数字化看房成为转发的好工具

在短视频盛行的时代,某地产企业为了吸引客流,联合我们深圳VR公司定制了楼盘小区3D全景展示视频,不同于市面上常见的楼盘视频或3D电影,楼盘小区3D全景展示视频让您在小区建成之前,就能提前感受未来的生活场景。 无需昂贵…

C++第三方库【httplib】断点续传

什么是断点续传 上图是我们平时在浏览器下载文件的场景,下载的本质是数据的传输。当出现网络异常,浏览器异常,或者文件源的服务器异常,下载都可能会终止。而当异常解除后,重新下载文件,我们希望从上一次下载…

【技巧】系统语音是英文 影刀如何设置中文-作者:【小可耐教你学影刀RPA】

写在前面 嘿哈! 有些跨境或香港的小伙伴,可能需要使用英文操作界面的影刀 该功能目前还没有现成的可视化按钮🔘 但其实这个效果可以实现~ 1、效果图 2、实现原理 %影刀安装目录%\ShadowBot-版本号\ShadowBot.Shell.dll.confi…

2024050401-重学 Java 设计模式《实战代理模式》

重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」 一、前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不到前进…

机器学习:更多关于元学习

目录 Meta Learning vs Self-supervised Learning 自监督学习——找初始化的参数MAML 自动学出合适的参数 MAML:不断的学初始化参数MAML的初始化参数来自BERT MAML:找出来的初始化参数能在训练任务上表现的很好BERT:自监督目标是不同的下游任…

odoo10 权限控制用户只允许看到自己的字段

假设一个小区管理员用户&#xff0c;只想看到自己小区的信息。 首先添加一个用户信息选项卡界面&#xff0c;如下图的 用户 > 隶属信息&#xff1a; 我们在自己创建的user模块中&#xff0c;views文件夹下添加base_user.xml <?xml version"1.0" encoding&q…

Leetcode:最接近的三数之和

题目链接&#xff1a;16. 最接近的三数之和 - 力扣&#xff08;LeetCode&#xff09; 普通版本&#xff08;排序 双指针&#xff09; 主旨&#xff1a;最近值即为差值的绝对值最小值 class Solution { public:int threeSumClosest(vector<int>& nums, int target…

DBSCAN 算法【python,机器学习,算法】

DBSCAN 即 Density of Based Spatial Clustering of Applications with Noise&#xff0c;带噪声的基于空间密度聚类算法。 算法步骤&#xff1a; 初始化&#xff1a; 首先&#xff0c;为每个数据点分配一个初始聚类标签&#xff0c;这里设为0&#xff0c;表示该点尚未被分配…

Angular17(2):angular项目中使用NG-ZORRO

1、使用Angular CLI创建空项目 ng new angular-admin-web --stylescss 2、执行ng add ng-zorro-antd命令安装 &#xff08;1&#xff09;ng add ng-zorro-antd 在angular项目下运行命令 ng add ng-zorro-antd 跟随选项便可完成初始化配置&#xff0c;包括引入国际化文件&…

多模块工程中Controller中注入Service报错的问题

问题 2024-06-05 22:05:12,241 ERROR [http-nio-8888-exec-1][DirectJDKLog.java:175] - Servlet.service() for servlet [dispatcherServlet] in context with path [/content] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.…

上位机图像处理和嵌入式模块部署(f407 mcu中的单独上位机烧录方法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过&#xff0c;stm32有三种烧录方法&#xff0c;一种是st-link v2&#xff0c;一种是dap&#xff0c;一种是j-link。不过我们在实际操作…

C++基础编程100题-004 OpenJudge-1.1-06 空格分隔输出

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0101/06/ 描述 读入一个字符&#xff0c;一个整数&#xff0c;一个单精度浮点数&#xff0c;一个双精度浮点数&#xff0c;然后按顺序输出它们&#xff0c;并且要求在他们之间用一个空格分隔。输出浮点数时保留…

Hadoop yixing(移行),新增表字段,删除表字段,修改存储格式

Hadoop yixing(移行)&#xff0c;新增表字段&#xff0c;删除表字段&#xff0c;修改存储格式 一、hadoop中修改存储格式&#xff0c;比如从 textfile 转化为 orc 格式&#xff0c;表中的数据的组织形式要重新改变&#xff0c;就要将重新创建新格式的表将原来的数据按照新的格…

中信证券:A股下半年将迎来年度级别上涨行情的起点

中信证券认为&#xff0c; 过去3年压制A股表现的经济动能转换&#xff0c;资本市场生态&#xff0c;中美战略博弈这三大叙事都将迎来重大拐点&#xff0c;随着政策、价格、外部三类信号逐步验证&#xff0c;2024年下半年A股市场将迎来年度级别上涨行情的起点 过去3年压制A股表…

鸿蒙开发接口安全:【@ohos.userIAM.userAuth (用户认证)】

用户认证 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import userIAM_userAuth from ohos.userIAM.userAuth;完整示例 // API version 6 import userIAM_userAuth from ohos.use…

最小栈、栈的弹出(C++)

1.最小栈 思路分析&#xff1a; 代码&#xff1a; class MinStack { public:MinStack() {}void push(int val) {st.push(val);//两种情况需要更新最小值//1.最小栈为空(就是存最小值的那个栈)//2.插入的值小于或等于最小栈的栈顶元素if(minstack.empty()||minstack.top()>…

C++--DAY3

思维导图 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数。 #include <iostream>using namespace std; class …