7.10飞书一面面经

问题描述

Redis为什么快?

这个问题我遇到过,但是没有好好总结,导致答得很乱。
答:Redis基于内存操作: 传统的磁盘文件操作相比减少了IO,提高了操作的速度。

Redis高效的数据结构:Redis专门设计了STRING、LIST、HASH等⾼效的数据结构,依赖各种数据结构提升了读写的效率。

Redis是单线程模型,单线程操作省去了上下⽂切换带来的开销和CPU的消耗,同时不存在资源竞争,避免了死锁现象的发生。

Redis采用I/O多路复⽤,同时监听多个Socket,根据Socket上的事件来选择对应的事件处理器进⾏处理。

介绍一下Mysql的索引?

这里我第一时间不知道从哪里入手,面试官引导我从数据结构说。

B+树的⾮叶⼦节点不存放实际的记录数据,仅存放索引,所以数据量相同的情况下,相⽐存储即存索引⼜存记录的 B 树,B+树的⾮叶⼦节点可以存放更多的索引,因此 B+ 树可以⽐ B 树更「矮胖」,查询底层节点的磁盘 I/O次数会更少。
B+ 树有⼤量的冗余节点(所有⾮叶⼦节点都是冗余索引),这些冗余索引让 B+ 树在插⼊、删除的效率都更⾼,⽐如删除根节点的时候,不会像 B 树那样会发⽣复杂的树的变化;
B+ 树叶⼦节点之间⽤链表连接了起来,有利于范围查询,⽽ B 树要实现范围查询,因此只能通过树的遍历来完成范围查询,这会涉及多个节点的磁盘 I/O 操作,范围查询效率不如 B+ 树。

说一下Redis集群。

这个我说只是了解,没有答。

在Redis中提供的集群方案总共有三种:主从复制、哨兵模式、Redis分片集群
主从复制:单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据,主节点写入数据之后,需要把数据同步到从节点中。

哨兵模式建立在主从复制模式上,通过引入了哨兵来监控与自动处理故障。哨兵模式可以实现主从集群的自动故障恢复,里面就包含了对主从服务的监控、自动
故障恢复、通知;如果master故障,Sentinel会将一个slave提升为master。
当故障实例恢复后也以新的master为主;同时Sentinel也充当Redis客户端的
服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户
端,所以一般项目都会采用哨兵的模式来保证redis的高并发高可用

哨兵模式解决了主从复制不能自动故障转移,达不到高可用的问题,但还是存在难以在线扩容,Redis容量受限于单机配置的问题。分片集群模式实现了Redis的分布式存储,即每台节点存储不同的内容,来解决在线扩容的问题。

算法:

峰值元素是指其值严格大于左右相邻值的元素。
给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞ 。
你必须实现时间复杂度为 O(log n) 的算法来解决此问题。

public class Solution {public int findPeakElement(int[] nums) {int left = 0, right = nums.length - 1;while (left < right) {int mid = left + (right - left) / 2;// 比较中间元素与其右侧邻居if (nums[mid] > nums[mid + 1]) {// 峰值在左侧或者就在 mid 位置right = mid;} else {// 峰值在右侧left = mid + 1;}}// left 和 right 会相遇在峰值位置return left;}
}

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

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

相关文章

java算法day11

二叉树的递归遍历二叉树的非递归遍历写法层序遍历 递归怎么写&#xff1f; 按照三要素可以保证写出正确的递归算法&#xff1a; 1.确定递归函数的参数和返回值&#xff1a; 确定哪些参数是递归的过程中需要处理的&#xff0c;那么就在递归函数里加上这个参数&#xff0c; 并且…

第二证券:销量暴跌95%,这一巨头市值蒸发超3000亿元!

在多重要素刺激下&#xff0c;PCB工作站上风口。 波音销量堕入停滞 6月仅售出3架客机 据央视财经&#xff0c;在一系列丑闻的影响下&#xff0c;波音公司本年出售遭到明显冲击。当地时间9日&#xff0c;波音发布的数据闪现&#xff0c;在以前一个月&#xff0c;该公司仅卖出…

关于Java面向对象的一些问题(2024.7.10)

package question20240710;public class Question {/*1. 什么叫做多态&#xff0c;条件是什么&#xff1f;2. 使用多态特性&#xff0c;带来了什么样的好处&#xff1f;3. 使用多态特性&#xff0c;注意什么样的弊端&#xff1f;4. 关于多态的弊端我们如何解决&#xff1f;5. 在…

excel有条件提取单元格特定文本(筛选纯文字的单元格或含有数字的单元格、单元格提取不同的文本长度)

实际工作背景 需要对导出的银行流水中的数十个村以及对应的村小组进行分组统计&#xff0c;但是初始的表格中村和小组是混在一起的&#xff0c;如下图所示&#xff1a; 目的&#xff1a;将大树村和大树村小组名称分别筛选出来 1.观察发现&#xff0c;大树村小组的单元格第4…

代码随想录算法训练营第四十九天| 647. 回文子串、 516.最长回文子序列

647. 回文子串 题目链接&#xff1a;647. 回文子串 文档讲解&#xff1a;代码随想录 状态&#xff1a;不会 思路&#xff1a; dp[i][j] 表示字符串 s 从索引 i 到索引 j 这一段子串是否为回文子串。 当s[i]与s[j]不相等&#xff0c;那没啥好说的了&#xff0c;dp[i][j]一定是fa…

构建与操作共享栈

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝既然选择了远方,当不负青春,砥砺前行! 共享栈是一种优化的栈实现方式,它允许两个或多个栈共享同一段连续的内存空间…

Tkinter 部件使用教程

tkinter学习教程 C语言中文网Tkinter教程 菜鸟编程-Python GUI编程(Tkinter) tkinter基本组件 messagebox 【tkinter标准对话框】messagebox&#xff1a;信息传递&#xff0c;消息对话框&#xff01; bind bind事件信息 listbox Tkinter 组件详解之Listbox radiobutton Tkinter…

数据结构——Trie

题目&#xff1a; 维护一个字符串集合&#xff0c;支持两种操作&#xff1a; I x 向集合中插入一个字符串 x&#x1d465;&#xff1b;Q x 询问一个字符串在集合中出现了多少次。 共有 N&#x1d441; 个操作&#xff0c;所有输入的字符串总长度不超过 10^5&#xff0c;字符串仅…

【分布式系统】Ceph对象存储系统之RGW接口

目录 一.对象存储概述 二.创建RGW接口 1.在管理节点创建一个 RGW 守护进程 2.创建成功后默认情况下会自动创建一系列用于 RGW 的存储池 3.默认情况下 RGW 监听 7480 号端口 4.开启 httphttps &#xff0c;更改监听端口 5.在 rgw 节点上查看端口 6.在客户端访问验证 7.…

Mybatis study

一、Mybatis Plus mybatis-plus指定实体类字段不查询 加标签 TableField(exist false) Spring Data Jpa学习 干我们这行&#xff0c;啥时候懈怠&#xff0c;就意味着长进的停止&#xff0c;长进的停止就意味着被淘汰&#xff0c;只能往前冲&#xff0c;直到凤凰涅槃的一天&am…

【onnx】onnxruntime-gpu无法使用问题

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 onnxruntime-gpu无法使用 1. 正文 CUDA版本&#xff1a;12.1 nvcc -VCUDNN的版本 cat /usr/include/cudnn_version.h |grep CUDNN_MAJOR -A 2说明: 可…

C#中的Dictionary

Dictionary<TKey, TValue> 是一个泛型集合&#xff0c;它存储键值对&#xff08;key-value pairs&#xff09;&#xff0c;其中每个键&#xff08;key&#xff09;都是唯一的。这个集合类提供了快速的数据插入和检索功能&#xff0c;因为它是基于哈希表实现的。 注意 ke…

拉曼操作维护使用手册(中英文对照)

1 INTRODUCTION 介绍 This document contains information needed to install and operate the Laser Gas Analyzer (LGA). The information contained herein is believed to be accurate and reliable, however, inaccuracies and omissions of pertinent information are po…

Vue 3 组件通信全解:从基础到高级技巧

引言 Vue 3 引入了 Composition API&#xff0c;这为组件通信带来了新的灵活性和强大的功能。 组件通信基础 组件的定义和作用 在前端开发中&#xff0c;组件可以被看作是构建用户界面的独立单元。它封装了特定的功能和样式&#xff0c;可以被重复使用&#xff0c;并且可以…

【数据结构——链表的深度探索】从实现到应用,保姆级攻略

【数据结构——链表深度探索】从实现到应用&#xff0c;保姆级攻略 &#x1f341;1. 链表的介绍&#x1f341;2. 链表的实现&#x1f341;2.1 单向链表&#x1f341;2.1.1 size()&#x1f341;2.1.2 display()&#x1f341;2.1.3 contains(int key)&#x1f341;2.1.4 addFirst…

墨西哥:海外新闻稿媒体分发-海外pr发稿干货分享-大舍传媒

大舍传媒&#xff1a;海外新闻稿媒体分发平台 墨西哥观查者 (mexicoviewer) 墨西哥观查者是墨西哥一家知名的新闻媒体平台&#xff0c;该平台专注于报道墨西哥国内外的时事新闻、政治、经济、文化等多个领域的内容。其更新速度快&#xff0c;报道对象广泛&#xff0c;深受墨西…

微信小程序---模板语法

一、声明和绑定数据 小程序页面中使用的数据均需要在 Page() 方法的 data 对象中进行声明定义 在将数据声明好以后&#xff0c;需要在 WXML 中绑定数据&#xff0c;数据绑定最简单的方式是使用 Mustache 语法&#xff08;双大括号&#xff09;将变量包起来。 在 {{ }} 内部可…

开始性能测试之前的准备工作!

性能测试是软件测试中不可或缺的一部分&#xff0c;它可以帮助我们评估软件系统的性能表现&#xff0c;并找出潜在的性能瓶颈。在进行性能测试之前&#xff0c;需要做好充分的准备工作&#xff0c;以确保测试的有效性和准确性。 1. 确定性能测试的目标和范围 * 明确测试目标:性…

《数据库原理》SQLServer期末复习_题型+考点

目录 题型&#xff1a; 一. 概况分析题&#xff08;5小题&#xff0c;每小题2分&#xff0c;共10分&#xff09; 二. 计算题&#xff08;3小题&#xff0c;每小题5分&#xff0c;共15分&#xff09; 三. 数据库设计&#xff08;2小题&#xff0c;每小题10分&#xff0c;共2…

什么是数组,什么是对象,并说出他们的区别

数组就是一组数据的集合。 对象就是用来储存变量的。 创建方式不同&#xff1a; 对象可以通过new关键字创建对象&#xff0c;或者通过对象字面量创建 数组&#xff1a;new Array() 数组表 示有序数据的集合&#xff0c;而对象表示无序数据的集合 数组的数据没有名称&#xff08…