华为ODgolang后端一面面经

发布于:2025-05-21 ⋅ 阅读:(17) ⋅ 点赞:(0)

MySQL死锁是怎么产生的?

在这里插入图片描述
在这里插入图片描述

假如有一条SQL语句执行了非常久,你会怎么优化呢?

explain
在这里插入图片描述

在这里插入图片描述

索引什么情况下会失效?

在这里插入图片描述

InnoDB和MyISAM引擎的区别是什么?

在这里插入图片描述

为什么是三次握手

  • 避免历史连接
    在这里插入图片描述
  • 同步双方初始序列号
  • 避免资源浪费

为什么TCP需要四次挥手?三次不行吗?

在这里插入图片描述

TIME_WAIT是如何产生的?

2MSL:允许报文丢失一次

  • 防止历史连接中的数据,被后面相同四元组的连接错误的接收
    在这里插入图片描述
  • 保证被动关闭的一方能正确的关闭

TCP 拆包粘包的原因是什么?怎么解决?

在这里插入图片描述

Redis有哪几种常见的数据类型呢?

  • String SDS:len 0(1)获取长度 修改’\0’结尾
  • list quicklist: 双向链表+压缩列表(存在连锁更新)
  • hash listpack 哈希表 len修改为自己的len, 放在最前边
  • set 整数集合 哈希表
  • zset listpack 跳表

Redis中持久化的方式,它们对应的区别是什么

  • AOF:重写机制,写时复制
  • RDB:快照

Redis集群架构模式有哪几种?

Redis 集群架构模式主要有以下几种:

1. 主从复制(Master-Slave)

  • 描述:一个主节点(Master)和一个或多个从节点(Slave)。主节点处理写请求,从节点复制主节点的数据并处理读请求。
  • 优点:提高读取性能,数据冗余,提供基本的高可用性。

2. 哨兵模式(Sentinel)

  • 描述:在主从复制的基础上增加了哨兵节点(Sentinel),用于监控主节点和从节点的状态,自动进行故障转移。
  • 优点:增强了高可用性,自动故障恢复。

3. Redis 集群(Cluster)

  • 描述:数据根据哈希槽(hash slots)分布在多个主节点上,每个主节点可以有从节点。支持自动分片。
  • 优点:高可扩展性和高可用性,支持水平扩展,能够处理更大的数据集。

4. 单节点模式

  • 描述:一个单独的 Redis 实例,适用于小规模应用或开发环境。
  • 优点:简单易用,适合快速开发和测试。

总结

Redis 提供了多种架构模式,以满足不同场景的需求。根据数据规模、可用性和性能要求,选择合适的架构模式。

麻烦你说一下golang的垃圾回收机制

在这里插入图片描述
三色标记法+混合写屏障(降低stw的影响)
插入屏障:对象被引用时触发的机制,当白色对象被黑色对象引用时,白色对象被标记为灰色(栈上对象无插入屏障)。
删除屏障:对象被删除时触发的机制。如果灰色对象引用的白色对象被删除时,那么白色对象会被标记为灰色。

GC开始时将栈上可达对象全部标记为黑色(不需要二次扫描,无需STW)
GC期间,任何栈上创建的新对象均为黑色
被删除引用的对象标记为灰色
被添加引用的对象标记为灰色
垃圾回收机制只用于回收堆上的内存,栈中的内存如局部变量、函数调用等会在调用结束后自动释放

map、slice、channel底层实现

slice

在这里插入图片描述

map 在这里插入图片描述

在这里插入图片描述

channel

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到