1.高级面试-MySQL、Redis、特殊场景、Java

news2024/11/20 15:14:16

本文目录如下:

  • 高级面试
    • 一、MySQL
      • B+树有什么优点?
    • image.png
      • InnoDB 和 MyISAM 的索引结构有什么区别 (聚簇索引-非聚簇索引)?
    • 二、Redis
      • Redis 如何保证存储的都是 热点数据?
      • 大量 key 为同一过期时间怎么办?
      • 缓存一致性的解决方案有哪几种?
    • 三、特殊场景
      • 什么是 QPS、TPS、OPS、RT?
      • 秒杀场景实践之 抢红包 如何实现?
    • Java
      • Java 中常见的 OOM 是什么 (堆内存溢出)?
      • 堆内存溢出的 原因?
      • 堆内存溢出的 解决方法?

高级面试

一、MySQL

B+树有什么优点?

B+树的特点和优势

  • B Tree 的 强大功能 (每个节点可以存储 更多关键字; 子树更多), 并且在每个叶子节点中保存指向下一个叶子节点的指针
  • 扫库、扫表能力更强(进行 全表扫描 只需要遍历 叶子节点 就可以了)
  • 范围查询排序 能力更强 (因为 叶子节点 上有下一个 叶子节点指针, 所有 叶子节点 形成了 链表)

image.png

InnoDB 和 MyISAM 的索引结构有什么区别 (聚簇索引-非聚簇索引)?

详解MySQL 聚簇索引与非聚簇索引

  • InnoDB 使用 聚簇索引: 叶子节点 就是 数据节点
  • MyISAM 使用 非聚簇索引: 叶子节点 仍然是 索引文件, 只是这个 索引文件 中包含指向对应数据块的 指针

二、Redis

Redis 如何保证存储的都是 热点数据?

Redis 使用的内存超过了设置的最大内存时,会触发 Redis淘汰机制, 使用 allkeys-lru 策略,从数据集中挑选 最近最少使用 的数据 优先淘汰,即可满足 保存热点数据


大量 key 为同一过期时间怎么办?

  • 大量的 key 集中在某个时间点过期,Redis 可能会出现短暂的卡顿现象。如果访问量大的情况下,甚至出现缓存雪崩
  • 处理办法:可以在时间上加一个 随机值分散过期时间点

缓存一致性的解决方案有哪几种?

点击查看

  • 先更新缓存,再更新数据库: 有很大的几率会出现缓存不一致的情况。
  • 先更新数据库,再更新缓存: 会有很大的几率会出现缓存不一致的情况。
  • 先删除缓存,再更新数据库: 会有很大的几率会出现缓存不一致的情况。
  • 先更新数据库,再删除缓存 [先写库再删缓存]: 可以保证 数据一致性 的。

三、特殊场景

什么是 QPS、TPS、OPS、RT?

  • QPS (queries per second): 每秒 查询数,查询操作。
  • TPS (transactions per second): 每秒 事务数,增删改操作。

秒杀场景实践之 抢红包 如何实现?

秒杀场景实践之抢红包 —— 常用解决方案

秒杀核心要点:

  • 稳定: 扛得住突发的 大流量, 确保红包都能成功派发。
  • 准确: 数据一定要正确, 不能出现 超额派发 的情况。

秒杀核心技术:

  • 高并发: 负载均衡限流等。(10万个请求, 取前1000个请求放行到 服务器?)
  • 读多写少: 缓存
  • 资源争用: 更新红包状态一定要是 原子操作

实现方法:

  • 开抢前: 将 红包信息 加载到 缓存, 首次加载时间可长一些。
  • 抢红包: 从缓存读取(没有则加载), 分配红包后 原子更新缓存(若已发放完毕则直接返回失败)
  • 缓存更新后写入数据库

Java

Java 中常见的 OOM 是什么 (堆内存溢出)?

详解java中的OOM及 java堆溢出分析

堆内存溢出: 最常见的 OOM,当 堆内存 没有足够的空间存放新建的对象时,就会抛出java.lang.OutOfMemoryError:Javaheap space 错误。


堆内存溢出的 原因?

详解java中的OOM及 java堆溢出分析

  • 请求创建一个超大对象: 比如说创建一个超大的数组;
  • 内存泄漏Memory leak: 大量 对象引用 没有释放,JVM无法对其自动回收。
  • 超出预期的访问量/数据量: 比如上游系统请求流量飙升,业务系统中的促销/秒杀活动等。

堆内存溢出的 解决方法?

通常情况下,通过 -Xmx参数 调高 JVM堆空间 即可,或使用 MATJProfiler 之类的工具进行进一步的分析:

  • 检查超大对象: 哪些对象占据堆的大部分堆内存。
  • 检查内存泄漏,找到持有的对象,修改代码设计,对于一些连接、打开的 IO文件 进行关闭。
  • 对于业务峰值压力,可以 增加机器资源,或者做 限流降级操作

-Xss参数 可以用来调整 线程栈的大小


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

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

相关文章

TS构建微信小程序后使用vant weapp框架配置

1.npm 安装 # 通过 npm 安装 npm i vant/weapp -S --production 2.配置app.json 将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。 3.修改 pr…

ubuntu20 kvm显卡直通实验-a4000

一、环境: 显卡:NVIDIA RTX A4000 系统:Ubuntu20.04 CPU:intel二、安装kvm sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager ovmf添加用户到“libvirt”和“kvm”组 s…

个人简历上的照片有什么要求?这些基本要求要知道

简历对我们来说非常重要,因为它可以帮助我们展示我们的工作经验、技能和教育背景,从而让面试者更好地了解我们的能力和合适程度。简历通常是我们与公司之间的第一次接触,因此它应该清晰、简洁和易于阅读,以便引起面试者的兴趣&…

【机械硬盘重新挂载】

一、背景描述 目前机器上有一个6.5T的机械硬盘,挂在为/home目录,但是目前处于公司业务需要,需要将机械硬盘重新挂载为/data,但是/home与/data中都有业务数据,需要我们谨慎操作。 二、概念解析 挂载源:要…

机器学习项目实战-能源利用率 Part-1(数据清洗)

1. 项目背景 2009年的《当地法案84号》,或纽约市基准法案,要求对能源和用水量进行年度基准测试和披露信息。被覆盖的财产包括单个建筑物的税收地块,其总建筑面积大于50,000平方英尺(平方英尺),以及具有超过…

CISP-PTE认证是什么?含金量有多高?

CISP即“注册信息安全专业人员”,由中国信息安全测评中心根据中央编办授权,系国家对信息安全人员资质的最高认可。那么,CISP-PTE认证又是什么呢?它的含金量又有多高?下面,国科科技就为你介绍。 CISP-PTE是…

什么是Redisson分布式锁?有什么作用?

前言: 如果你的简历中写了做过电商项目,那么面试官基本都会从SpringBoot、SpringCloud以及Dubbo这些微服务架构涉及的知识问起,然后深入到问什么是分布事务、分布式锁以及分布式缓存等内容。 这篇文章主要聊聊什么是Redisson分布式锁&#…

【Java EE 初阶】线程安全及死锁解决方案

目录 1.多线程下线程不安全的问题 1.使用多个线程对Array List集合进行添加操作并打印,查看结果 2.如何在多线程环境下使用线程安全的集合类 CopyOnWriteArrayList 3.多线程环境下使用队列 4.多线程环境下使用哈希表 1.HashTable线程安全 2.Concurrent Hash M…

yolov8训练记录

resume: 将model设置为最近一次训练的权重路径 (last.pt) resume设置为True YOLOv8 在 Python 环境中直接使用,不用 ultralytics 库 pip uninstall ultralytics 原因:安装 ultralytics 库,只能在虚拟环境中使用,自己修改代码非常…

ACM 1004 | 母牛的故事

文章目录 0x00 前言 0x01 题目描述 0x02 问题分析 0x03 代码设计 0x04 完整代码 0x05 运行效果 0x06 总结 0x00 前言 C 语言网不仅提供 C 语言,还包括 C 、 java 、算法与数据结构等课程在内的各种入门教程、视频录像、编程经验、编译器教程及软件下载、题解博…

新库上线 | CnOpenData·A股上市公司担保数据

A股上市公司担保数据 一、数据简介 “对外担保”,是指上市公司为他人提供的担保,包括上市公司对控股子公司的担保。“上市公司及其控股子公司的对外担保总额”,是指包括上市公司对控股子公司担保在内的上市公司对外担保总额与上市公司控股子…

初级数据结构——栈和队列

目录 1.栈栈的概念及结构栈的实现栈的结构初始化栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空销毁栈Stack.hStack.cTest.c 2.队列队列的概念及结构队列的实现队列的结构初始化队列队尾入队列队头出队列获取队列头部元素获取队列队尾元素获取队列中有效元素个数检…

【FATE联邦学习】model not init, call init_model() function

太长不看版 在local_mode下,不要使用t.CustModel进行实例化,而是直接使用原本的类进行实例化。 如果你设置了trainer.local_mode(),那么trainer里面的model不可以是t.CustModel()的实例。 给几个example: 正确: mod…

2023年美国大学生数学建模竞赛B题重塑马赛马拉的形象解题全过程文档及程序

2023年美国大学生数学建模竞赛 B题 重塑马赛马拉的形象 原题再现: 背景介绍   肯尼亚的野生动物保护区最初主要是为了保护野生动物和其他自然资源而设立的。肯尼亚议会通过了2013年《野生动物保护和管理法》, 以提供更公平的资源共享,以及…

重新定义新增长,从百果园看ESG如何可持续

当下,企业的增长亟待重新定义。 中国已基本告别人口红利时代,不少行业和企业当前陷入增长困境。原来以规模定义的增长很难实现,一些企业在日常运营中找不到方向和方式,因此需要重新定义“增长”。 最终,在环境恶化、…

计算机图形学-GAMES101-7

引言 场景中有很多的三角形,如果实现可见性和遮挡呢?  一个简单的想法是,从远到近画,近处的物体自然会覆盖掉远处的物体,这种画法也叫画家算法。  但是实际绘制中物体的顺序是不容易确定的,比如如下图绘制…

下载和安装appuploader

转载:下载和安装appuploader IOS开发工具官网地址 Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate 最新版本已经优化了没支付688给apple的账号登录流程,无需再安装其他软件。…

DockerWeave容器跨机通信网络部署

Docker Weave网络部署 Weave在Docker主机之间实现Overlay网络,使用业界标准VXLAN封装,基于UDP传输,也可以加密传输。 Weave Net创建一个连接多个Docker主机的虚拟网络,类似于一个以太网交换机,所有的容器都连接到这上…

数组或结构体赋值时memcpy与直接赋值的效率比较

先上结论: 二者不一定谁快通常情况下,数组维度越大,使用memcpy效率更高数组维度越大,直接赋值耗时主体是循环耗时 Note: “等号赋值”被编译器翻译成一连串的MOV指令,而memcpy则是一个循环。“等号赋值”比…

05mysql---函数

目录 1:日期函数 2:字符函数 3:数值函数 4:流程函数 1:日期函数 select 函数(参数) 函数功能举例curdate()返回当前日期2023-05-17curtime()返回当前时间14:44:33now()返回当前日期和时间2023-05-17 14:44:33year(date)获取指定date的年份month(date)获取指定date的月份day…