作业帮实习生一面0717

什么是ES倒排索引

ES倒排索引,也称为反向索引,是单词到文档ID的映射关系。它记录了每个单词(或词项)在哪些文档中出现,以及出现的位置和频率等信息。

  1. 分词:首先,对文档内容进行分词处理,将连续的文本拆分为多个单词或词项。
  2. 建立索引:然后,为每个单词或词项建立索引,记录包含该单词的所有文档的ID、词频、位置等信息。
  3. 查询处理:当用户输入查询关键词时,系统通过查询单词词典快速定位到对应的倒排列表,然后遍历倒排列表中的文档ID,获取包含查询关键词的文档列表。

ES索引的分片

分片(Shard):在Elasticsearch中,分片是索引的最小工作单元,它保存了索引中所有数据的一部分。一个索引可以存储超出单个节点硬件限制的大量数据,为了应对这种情况,ES将一个索引划分成了多个分片,每个分片都是功能完善且独立的索引,这些分片被分配到集群中的各个节点上。

  • 主分片(Primary Shard):负责处理文档的索引、删除等写操作,并将这些操作的结果复制到副本分片。每个索引至少有一个主分片,且主分片的数量在索引创建时指定,之后不能更改。
  • 副本分片(Replica Shard):主分片的一个副本,用于提供读请求,防止硬件故障导致数据丢失,并在主分片异常时提供故障转移。副本分片的数量可以动态调整。
  1. 水平扩展:通过增加分片数量,可以实现索引的水平扩展,提高查询性能和并发能力。
  2. 数据分布:分片机制使得索引数据可以分布在集群中的多个节点上,实现数据的负载均衡。
  3. 高可用性和容错性:副本分片提供了数据的高可用性和容错性,防止单点故障导致的数据丢失。

mysql的索引类型都有哪些

主键索引,唯一索引,非空索引,普通索引

聚集索引,非聚集索引

联合索引,前缀索引

使用索引的优点缺点

优点:

加快查询速度

加快分组、排序、连接速度

支持唯一性约束

缺点:

额外空间

写操作需要额外维护索引

事务隔离级别

读未提交,可能读到事务未提交的数据,即脏数据。

读已提交,读写锁解决脏读,可能出现不可重复读,即一个事务内多次读取结果不一样。

可重复读,MVCC解决不可重复读,但可能出现幻读。

串行化,串行执行,效率低。

什么是幻读

范围查询时,多次查到的数据量不同

那怎么去解决幻读

临键锁

有一个慢查询,有哪些方式去优化它

使用explain分析

查看type字段,看是all还是index还是range,如果没有走索引,分析索引失效原因,如隐式类型转换、函数、模糊查询、not in、or、!=、不满足最左匹配原则等。

什么场景下需要去做分库分表呢

高并发且单表数据量大

Redis的数据类型有哪些

String、Hash、List、Set、Zset、Bitmap、Bloom Filter、GEO、HyperLogLog、Stream

假如做一个排行榜,用redis哪个数据类型来实现

zset

说一下zset的底层实现原理

跳表

底层原理是多级链表,第一层是完整的链表,每个节点在上一层也存在的概率是0.25,采用近似平衡,搜索时,找到每一层最后一个小于目标的节点,再向下。期望时间复杂度为O(nlogn),最坏时间复杂度O(n^2),期望空间复杂度O(n),最坏时间复杂度O(nlogn)

缓存穿透

缓存穿透是指查询一个数据库中一定不存在的数据

解决办法:

缓存空对象

布隆过滤器

数据预热

限流

Redis是怎么实现分布式锁的

Redis实现分布式锁的机制主要依赖于其原子性操作和内存存储的特性。

Redis持久化机制

RDB持久化:将Redis在内存中的数据以快照的形式写入磁盘。redis默认。

触发机制:

使用SAVA或BGSAVE。

SAVE m n,m秒内发生n次修改

Redis关闭时

从节点第一次连接时

AOF持久化:将Redis在内存中的每个写命令以追加的方式写入磁盘。

always(每次写操作都同步到磁盘)、everysec(每秒同步一次磁盘)和no(由操作系统决定何时同步磁盘)。

当AOF文件过大时,可以通过bgrewriteaof命令进行重写,以减小文件大小。

混合持久化:首先使用RDB持久化将内存中的数据快照存储到磁盘上,然后再使用AOF持久化将所有新的写操作追加到AOF文件中。

http和https的区别

安全性:http明文,https通过TLS加密

端口:http80,https443

证书:http不需要,https需要证书确认身份以及加密通信

开销:http开销小,https需要额外开销。

https交换密钥的过程是怎么样的 

在HTTPS交换密钥之前,首先需要完成TCP三次握手,以建立客户端和服务器之间的可靠连接。

客户端发送请求

服务端返回CA

客户端验证并用公钥加密随机码,发送给服务端

服务端用私钥解密,之后用这个随机码作为密钥进行对称加密。

浏览器访问一个网站,完整地描述一下这个网站访问的全过程

  • 浏览器首先检查自己的缓存中是否有该域名的IP地址记录。
  • 如果没有,浏览器会检查操作系统的DNS缓存。
  • 如果仍未找到,操作系统会将请求发送到本地DNS服务器(通常是ISP提供的)。
  • 本地DNS服务器可能会递归查询根域名服务器、顶级域名服务器和权限域名服务器,最终获取到域名的IP地址。
  • 获取到IP地址后,本地DNS服务器将其返回给浏览器,同时缓存该记录以便后续使用。

浏览器通过TCP/IP协议与服务器建立连接。

浏览器封装HTTP请求报文,并通过TCP连接发送给服务器。

服务器接收并解析HTTP请求报文。生成HTTP响应报文发送给浏览器。

浏览器接收HTTP响应报文,并解析其内容。

在数据传输完成后,浏览器和服务器之间通过TCP四次挥手过程断开连接。(短连接)

TCP三次握手过程

为什么不是两次,为什么不是四次

第一次:客户端发送同步请求报文,生成随机序列号,进入SYN_SENT。

第二次:服务端发送同步确认报文,生成随机序列号,并确认客户端的序列号,进入SYN_RCVD。

第三次:客户端发送ACK报文,序列号为第一次+1,确认服务端序列号,进入ESTABLISHED。

为什么不是两次:两次会导致旧连接问题以及第二次握手丢失后一直等待。

为什么不是四次:三次已经足够确认双方通信能力以及序列号。

说一说进程和线程

进程包含了程序的代码、数据和堆栈空间,以及系统资源如文件描述符、内存等。

线程共享进程的全部资源,包括虚拟地址空间、文件描述符和信号处理等,但每个线程都有自己的调用栈、寄存器环境和线程本地存储。

  • 调度:线程是CPU调度的基本单位,进程是资源分配的基本单位,一个进程对应一个或线程。

  • 切换:线程上下文切换比进程上下文切换要快得多。一个进程中的多个线程共享进程的地址空间,进程切换开销小。

  • 开销:创建或撤销进程时,系统都要为之分配或回收系统资源,如内存空间,I/O设备等,OS所付出的开销显著大于在创建或撤销线程时的开销

一个服务启动四个进程,一个请求平均耗时200ms,理论上这个服务可以承受多大qps

  • 单个进程每秒可以处理的请求数:0.21​=5(次/秒),因为每个请求耗时0.2秒。
  • 四个进程每秒可以处理的请求数:5imes4=20(次/秒)。

算法题:

二叉树的层序遍历

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

装B且挨揍の

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值