【3】阿里面试题整理

ops/2025/2/2 12:37:11/

[1]. ES架构,如何进行路由以及选主

路由:在Elasticsearch(ES)中,默认的路由算法是基于文档的_id。具体来说,Elasticsearch会对文档的_id进行哈希计算,然后对分片数量取模,以确定该文档应存储在哪个分片上。这个过程可以确保同一个文档始终路由到相同的分片上,除非分片数量发生变化。

选主:Elasticsearch使用Zen Discovery模块进行选主(Leader Election)。这个过程类似于一个Leader Election算法。每个节点都会参与投票,选举出一个合适的master节点。master节点负责管理集群的状态,例如分片的分配和元数据的维护。

[2]. 组合索引的使用及需要注意的问题。

组合索引是为了优化多条件查询而创建的,它会将多个列组合在一起作为索引。

只有当查询条件中包含了索引中最左边的列或最左边的几个列时,这个索引才能被使用。

为了让索引更高效,应该将选择性比较高的列放在前面,这样才能更快地筛选出数据。

组合索引有一定的维护成本,每次插入、更新或者删除数据的时候都需要更新索引,创建过多的索引会增加数据库的负担。

[3]. 主键索引与唯一索引的区别。

主键索引要求列值不能为NULL,而唯一索引允许存在NULL值。

一张表只能有一个主键索引,但可以有多个唯一索引。

主键索引通常是聚集索引,直接影响数据在磁盘上的存储方式,而唯一索引一般是非聚集的。

主键索引主要用于唯一标识表中的每一行数据,而唯一索引主要是用来确保特定列的数据唯一性。

[4]. 数据库与Redis的缓存一致性问题。

数据库和Redis的缓存一致性问题,主要是因为缓存和数据库之间的数据存在时间差,并且有多个并发操作可能会导致数据不一致。

为了解决这个问题,需要考虑两方面:缓存更新策略和一致性维护策略。

缓存更新策略方面,最常用的是旁路缓存模式,即先查缓存,缓存没有再查数据库,并且把数据写入缓存,更新数据的时候,先更新数据库,然后删除缓存。

这种策略的好处是简单易用,缺点是首次查询会慢一些。

一致性维护策略方面,最基本的是先更新数据库再删除缓存,但这种方式在并发时可能导致不一致,所以可以使用延时双删策略或者利用消息队列来实现最终一致性。

[5]. HashMap的扩容机制。

HashMap在初始化的时候会分配一个初始的容量,当HashMap的元素数量达到一个阈值(容量乘以负载因子)的时候,就会触发扩容。

扩容的时候,HashMap会创建一个新的数组,容量是原数组的2倍,然后把原数组中的元素重新计算hash值,并根据新的数组容量重新分配到新的数组中。因此,这是一个比较耗时的操作,会导致HashMap的性能下降,所以,如果在预知存储的数据量比较大的情况下,最好在初始化的时候设置一个合理的容量,避免频繁的扩容。


http://www.ppmy.cn/ops/155033.html

相关文章

Flutter常用Widget小部件

小部件Widget是一个类,按照继承方式,分为无状态的StatelessWidget和有状态的StatefulWidget。 这里先创建一个简单的无状态的Text小部件。 Text文本Widget 文件:lib/app/app.dart。 import package:flutter/material.dart;class App exte…

使用 postman 测试思源笔记接口

思源笔记 API 权鉴 官方文档-中文:https://github.com/siyuan-note/siyuan/blob/master/API_zh_CN.md 权鉴相关介绍截图: 对应的xxx,在软件中查看 如上图:在每次发送 API 请求时,需要在 Header 中添加 以下键值对&a…

python学opencv|读取图像(四十五)增加掩模:使用cv2.bitwise_and()函数实现图像按位与运算

【1】引言 前序已经对使用cv2.bitwise_and()函数实现图像按位与运算进行了反复探究: python学opencv|读取图像(四十三)使用cv2.bitwise_and()函数实现图像按位与运算-CSDN博客 python学opencv|读取图像(四十四)原理…

C语言自定义数据类型详解(一)——结构体类型(上)

什么是自定义数据类型呢?顾名思义,就是我们用户自己定义和设置的类型。 在C语言中,我们的自定义数据类型一共有三种,它们分别是:结构体(struct),枚举(enum),联合(union)。接下来,我…

第四章 WAL 4.1 WAL文件

4.1 WAL文件 WAL文件用于存储WAL日志。本小节主要介绍WAL文件。 1、WAL文件大小 PG使用64位的无符号整型作为日志文件的寻址空间。如下所示: typedef uint64 XLogRecPtr;//日志寻址类型 static void PreallocXlogFiles(XLogRecPtr endptr)//预分配日志文件uint64 offset;…

机器学习之决策树(DecisionTree——C4.5)

在机器学习之决策树(DecisionTree——ID3)中我们提到,ID3无法处理是连续值或有缺失值的属性。而C4.5算法可以解决ID3算的上述局限性。 1、连续值属性的处理 对于数据集 D D D和连续值属性 A A A,假设连续值属性 A A A有 M M M个不…

【处理和预防校园霸凌】。营造安全

处理和预防校园霸凌对于营造安全、和谐的校园环境至关重要,以下从处理和预防两个方面提供一些建议: ### 处理校园霸凌 1. **及时干预制止**:教师一旦发现校园霸凌行为,要第一时间上前制止,确保受霸凌学生的人身安全&a…

算法基础——存储

引入 基础理论的进步,是推动技术实现重大突破,促使相关领域的技术达成跨越式发展的核心。 在发展日新月异的大数据领域,基础理论的核心无疑是算法。不管是技术设计,还是工程实践,都必须仰仗相关算法的支持&#xff0…