9377游戏一面(年前版)

9377游戏一面

  1. 索引的类型

    (1)首先,先说最熟悉的,按照字段特性分类:主键索引,唯一索引,前缀索引

    (2)按数据结构分类:B+树索引,Hash索引,Full-text索引(mysql也支持倒排索引,但是只能让一张表中的一个字段成为索引)

    (3)按字段个数分类:单列索引,联合索引

    (4)按物理存储分类:聚簇索引,二级索引

  2. innodb 和 mongodb 索引的区别

    mysql中innodb引擎中,采用的是B+树作为索引的接口;mongodb也是使用B树数据结构作为索引结构。

    B树特点:

    (1)树内的每个节点都存储数据

    (2)叶子结点之间无指针相连

    image-20241225215135788.png

    关于对B+树和B树,节点分布计算推导:

    mongodb索引到底是B+树还是B树?_如何查看mongodb存储引擎用的是lsm还是b+树-CSDN博客

    【驳斥八股文系列】别瞎分析了,MongoDB 使用的是 B+ 树,不是你们以为的 B 树 - 知乎

  3. 既然 mysql 可以存储json字符串,为什么还要有非关系数据库?

    先从mysql存储json字符串的缺点来讲

    缺点:

    1)只适合展示,不适合条件查询(效率低且难于优化)

    2)包括数据类型限制、长度限制,唯一索引限制,查询索引优化,外键关联,关联查询支持,运算支持等,这些都是json中key无法达到

    3)大 JSON 解析性能差,如若中文数据,空间占用大

    数据表中直接存放json格式的一些思考_数据库为什么不建议存大json-CSDN博客

  4. mysql在innodb存储引擎中,叶子结点的连接方式是什么?(有坑)

这里她应该是在问叶子结点内部链接方式是什么?

叶子节点(数据页)之间的链接是双向链表,但是在叶子节点内部是单链表,查询数据是通过二分查询

Innodb页之间是双向链表关联的

MySQL记录之间是单向链表还是双向链表? - 程序员阿牛 - 博客园

https://www.mianshiya.com/embed/q/1780933295471620098/answer?shareCode=5jwm8t

  1. mongodb 如何做到非关系数据库

非关系型数据库MongoDB:(一)概念、优点、搭建、基础命令_范文 论非关系开型数据库技术及应用-CSDN博客

image-20241226175229167.png

没有 mysql 的 join 操作

  1. ES 中的倒排索引的原理

    什么是正向索引、反向索引(倒排索引)?-CSDN博客

    elasticsearch倒排索引(全面了解) - AlexEvans - 博客园 首先,我们得知道什么是倒排索引(反向索引),什么又是正向索引

    倒排索引:

    将关键词(term,词项)作为索引,内容作为value(可以压缩,比如文章内容压缩成文章标题)

    说白了,就是将单词和文档构建成映射的数据结构,我们称之为倒排索引

    image-20241226200528321.png image-20241226201233762.png

    正向索引:

    通过文档的id作为索引,指向具体的文档内容,表中记录文档中每个字的位置信息,通过扫描表中每个文档中的字的信息知道找到出所有包含查询关键的文档。(显现出,通过扫描文档,查询关键字,耗时长,效率低)

    目标域(filed)进行分词操作,分解出来的内容称为词项(Term),ps:中文分词器是 IK 分词器

    倒排表里面是所有包含当前词项(term)的元数据 id 的有序 int 数组

    image-20241226182105606.pngidth="493px" />

  2. ES 如何构建建立索引

    Elasticsearch 将操作都封装为 HTTP 的api,通过 api 就可以创建索引

    text
    复制代码
    curl -XPUT 'http://ip:port/poems'
  3. 唯一索引和普通索引在mysql中查询的区别是什么?

    唯一索引他可以允许有一个值为null,每个值唯一

    普通索引不是值唯一,可以多个相同的值

    也就是由于上面的特点,所以在查询的过程中,唯一索引和普通索引查询上面也有不同

    (1)查找到满足条件的第一个记录时,还会继续查找到到下一个记录,知道碰到第一个不满足条件的记录

    (2)唯一索引的值具有唯一性,所以查找到满足条件的记录,就会直接停止查询

    追问:整体的查询便利过程是如何呢? 通过B+树从root开始层序遍历到叶节点,数据页内部通过二分搜索

  4. 多模型来实现多模态,如何保证会话的一致性呢?

    采用mongodb作为中间共享存储的的会话层

    追问:那这样时间一长,历史对话数据会越来越多,你是如何处理呢? 过期时间七天,通过定时任务去执行清理过期的历史对话内容

  5. 在用户情况数量众多的情况下,如何保证调用大模型的效率呢?

    异步调度框架.....

  6. http请求用的是什么协议

    分版本(1.0/1.1/2.0/3.0)看图,非常清楚,http 不同版本之间整体的不同。

    详解HTTP协议版本(HTTP/1.0、1.1、2.0、3.0区别)-CSDN博客

    image-20241227204256953.png
  7. TCP 的超时重传机制

TCP协议-TCP超时重传机制-CSDN博客

序列号:

序列号是按照顺序给 TCP 报文段的数据部分的每一个字节都表上号码的编号

序列号的初始值是在建立 TCP 连接时,随机生成的。后面的序号值计算则是对每一个字节加 1

确认号:

1)表示确认字段之前的序列号的字节流已经被成功接收

2)表示期望收到的下一个报文的序列号,即下一个报文段的数据部分的第一个字节的序号

  1. UDP 和 TCP 的区别

    (1)连接性

    TCP 面向连接,连接和断开需要三次握手和四次挥手,开销大。同时,是全双工通信,数据可以在两个方向上同时传输。

    UDP 则是无连接的,不需要建立或者关闭连接,发送方随时发送消息,接收方也可以随时接收数据

    (2)可靠性

    TCP 可靠在于有确认和重试机制(SYN 和 SYN-ACK),保证数据的正确和完整且有序。TCP 还可以支持流量控制和拥塞控制防止网络过载

    UDP 不可靠在于不检查数据包的顺序、错误,也不会进行重传,即数据包在传输过程出现的意外,UDP 不会采取任何的不就措施。牺牲数据的完整和安全,提升了网络传输的效率。

    (3)头部开销

    TCP 头部开销较大,包含了控制信息,如:序列号,确认号,窗口大小

    UDP 无以上数据,只包含必要参数,如:源端口,目的端口,长度和校验和

    (4)通信方式

    TCP 通常作用于 一对一 通信

    UDP 则支持一对多,多对多 ,多对一的模式

  2. HTTP 如何得知信息丢失,进行重发?

    根据序列号和确认机制,确保数据传输的一致连续性。

  3. http 3.0 为什么用 UDP

    基于谷歌的 QUIC 协议,将 UDP 协议进行改造,实现既拥有了 UDP 的高效的网络运输,又有 TCP 的安全运输。

    (1)由于 TCP 协议僵化,难以升级,僵化原因在于 TCP 协议广泛被内置于操作系统内核、中间件固件以及硬件当中

    (2)UDP 作为传统传输层协议,广泛的的设备都支持,避免升级和改造,实现较为简单

  4. 客户端从请求到接受服务端响应的过程(详细描述)

    以图为例(小林coding)

    image-20241227212618559.png
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Louis
下载 APP