面试高频问题----3

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

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

二、基本数据结构

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

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

缓存穿透:查询一个一定不存在的数据,这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力;
解决方案:1.布隆过滤器:查询数据时,先判断该数据是否存在于布隆过滤器中,如果存在则直接返回结果,否则再从数据库查询数据;
2.缓存空对象:在缓存中存储空对象,当查询一个不存在的数据时,直接返回空对象,而不是默认值或者错误信息;
3.设置热点数据永不过期
缓存击穿:热点key在某个时间点过期的时候,而恰好这个时间点对key有大量的并发请求过来,从而大量的请求打到数据库。
解决方案:1.主动设置空缓存:当接收对于数据库中没有的请求查询时,主动在缓存中写入空数据,设置过期时间;
2.互斥锁:使用分布式锁进行加锁,保证只有一个线程能访问数据库,其他线程需要等待锁释放之后才能进行查询;
3.设置逻辑过期时间
缓存雪崩:大量缓存同时失效或过期后引起的系统性能急剧下降。
解决方案:1.保持缓存层的高可用:使用Redis哨兵模式或者Redis集群部署方式,保证缓存层高可用性;
2.限流降级组件:使用限流降级组件如:Sentinel等,避免缓存层或存储层异常导致整个系统不可用;
3.缓存不过期:设置Redis的key永不失效,避免大量缓存同时失效;
4.优化缓存过期时间:为每一个Key选择合适的过期时间,避免大量key同一时刻同时失效;
5.使用互斥锁重建缓存
6.异步重建缓存
相关推荐
Web打印1 小时前
Phpask(php集成环境)之15 phpstudy转移到phpask
数据库·mysql
LaughingZhu7 小时前
Product Hunt 每日热榜 | 2026-02-14
数据库·人工智能·经验分享·神经网络·搜索引擎·chatgpt
欧恩意8 小时前
【Tools】Java反汇编工具推荐
java·汇编
软件派8 小时前
近两年国外主流数据库深度解析:从技术特性到场景适配
数据库
寻星探路8 小时前
【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机
java·开发语言·jvm·人工智能·python·算法·ai
Elastic 中国社区官方博客8 小时前
DevRel 通讯 — 2026 年 2 月
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·jina
lbb 小魔仙8 小时前
【Java】Java 实战项目:手把手教你写一个电商订单系统
android·java·python
星河耀银海8 小时前
Java安全开发实战:从代码防护到架构安全
java·安全·架构
青云交8 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市水资源管理与节水策略制定中的应用
java·java 大数据·java 大数据可视化·城市水资源管理·spark 数据清洗·echarts 热力图·管网漏损控制
紫陌涵光9 小时前
112. 路径总和
java·前端·算法