小鹅通-后台开发岗

一面

  • 介绍项目整体架构
  • 了解gRPC吗,pb文件是一个什么样的文件?(面试官说可以理解为一组API )

protobuf 是一种用于序列化结构数据的工具,实现数据的存储与交换,与编程语言和开发平台无关。可以简单理解为,是一种跨语言、跨平台的数据传输格式数据序列化协议)。与json的功能类似,但是无论是性能,还是数据大小都比json要好很多。

  1. 序列化速度快(由专门的protoc编译器进行编译,二进制数据)、体积小(只有原先的1/10 ~ 1/3)、传输解析速度快(提高20倍甚至更高)
  2. 跨平台和语言扩展性好(.proto多平台只需维护一套协议文件)
  3. 加密性好(http传输内容通过抓包只能看到字节数)
  • 序列化:将结构数据或者对象转换成能够用于存储和传输的格式。
  • 反序列化:在其他的计算环境中,将序列化后的数据还原为结构数据和对象。
  • Go slice 切片介绍原理?
  • Go channel介绍下,并且为什么是线程安全的?介绍下【向channel中写数据】和【从channel中读数据】 的流程?

在这里插入图片描述
send发送/recv接收 的细化操作:

  1. 加锁
  2. 把数据从goroutine中copy到 “环形队列buf” 中,或从 “环形队列buf” 中copy数据到goroutine中; 进/出队列
  3. 释放锁
  • Go中有哪些锁?(Mutex、RWMutex)
  • Go map为什么是非线程安全的?遍历map的key为什么是乱序的?
  • Go GMP调度介绍下?

3个流程:正常情况下 → 线程阻塞时 → runqueue执行完成

  • 介绍下内存对齐?
  1. 使用空间换时间,提高读取内存数据时的效率:数据结构应该尽可能地在自然边界上对齐,如果访问未对齐的内存,处理器可能需要做两次内存访问,而对齐的内存访问仅需要一次访问
  2. 使代码拥有更好的可移植性:有些CPU可以访问任意地址上的任意数据,而有些CPU只能在特定地址访问数据
  • Go 中为什么小对象多了会造成gc的压力?

因为三色标记法中的 标记过程中要检索的对象多了

  • 内存逃逸?
  • Golang 中的并发控制?Go Context的原理(我不知道…)?

参考:Golang中常用的并发模型
Channel、WaitGroup、Context

  • MySQL索引及原理?
  • MySQL MVCC介绍下?
  • MySQL 主从?主从可能会存在哪些问题(主从数据同步延迟的问题)
  • 从库去同步主库的binlog,但每次同步总会少两条binlog日志记录(丢数据),这可能是什么原因导致的?(我不是很了解,要继续看下…)
  • Go Gin框架中间件(Middleware)原理,参考:go面试题-gin中间件原理分析

中间件是为了过滤路由而发明的一种机制,也就是http请求来到时先经过中间件,再到具体的处理函数

  1. gin框架路由使用前缀树,路由注册的过程是构造前缀树的过程,路由匹配的过程就是查找前缀树的过程。
  2. gin框架的中间件函数和处理函数是以切片的形式的调用链条存在的(本质上就是函数指针切片),我们可以顺序调用也可以借助 c.Next() 方法实现嵌套调用。
  3. 借助c.Set()和c.Get()方法我们能够在不同的中间件函数中传递数据。
    在这里插入图片描述
  • Redis常用的数据结构有哪些?(我举例说了striing,zset以及其底层 压缩链表/跳表/hash表 等原理)
  • 如果使用Redis zset的数据结构来实现异步消息队列,可能会存在哪些问题?

数据丢失(比如Redis宕机了,可能会丢失最近1s的数据,即使有持久化机制)、阻塞情况、幂等性问题

  • 写一个API接口需要统计哪些问题?

与前端协商接口请求字段及响应字段、接口参数的验证考虑接口幂等性问题、以及其中涉及的业务查询sql的性能优化、接口压测…

  • MySQL中怎么判断一条sql查询是否是全表扫描?那么type字段什么值才表示当前sql有最优的查询效率?一个sql中有 between ... and 时,type是什么值?

通过Explain分析的type字段是否是ALL来判断。
const: 针对主键唯一索引的等值查询扫描,最多只返回一行数据。
range:表示使用索引范围查询,通过索引字段范围获取表中部分数据记录。这个类型通常出现在 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN() 操作中。例如下面的例子就是一个范围查询:explain select * from user_info where id between 2 and 8;

面试官给的建议:下面可以再了解下MVCC和主从。。。

hr面(挂)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值