当前位置: 首页 > 面试经验 >

蓝湖一面复盘

优质
小牛编辑
161浏览
2023-03-28

蓝湖一面复盘

12月21日 蓝湖一面

面试体验:可以说是我的第一次面试,面试官一直在引导我,听录音发现自己说话磕磕盼盼的,问那个缓存一致性问题,我感觉就像被逼入死角的杰瑞,不知道说什么.最后的算法题,面试官提示我是二分,没做出来.

技术不足:无法把自己的项目说清楚

  1. 自我介绍
  2. 挑一个你最有价值的项目讲一下,展开讲一下,有几个模块
  3. 你实现的状态机解决了一个什么问题(这里我没有说清楚,讲了状态机记录请求index去重,这是非常次要的功能了,可以讲线性一致性,ReadIndex,randomRead,syncRead,存储引擎,快照)
  4. 请求后发先至问题,会不会导致前一个请求被屏蔽(在我的实现中一个客户端一次只能请求一次,或者说是上一个请求有回复了才能执行下一个)
  5. 怎么解决这个问题(这时候我已经乱了,说了个对请求排序,然后扯吧扯吧,/(ㄒoㄒ)/~~,应该说不能够同时发,或者用建立个client去发)
  6. raft共识层是怎么做的呢?(主从选举,日志复制....)
  7. 如果中间有节点更新错误了呢?(拜占庭问题??这里我反问了一句什么样的错误,面试官想说的是节点写入内存或者写入硬盘失败了,我没有想过这个问题,在我认知中错误只有节点失联,关机,如果出现写入不成功,只能不断的重试,这时候状态机的锁会被一直占用,raft还能运行但是状态机凝固)
  8. 重启后节点数据消失怎么解决.(raft持久化....)
  9. 机房断电了,多个节点关机,多个节点数据不一致,主节点应该怎么处理?(节点重启,根据之前持久化的信息恢复)
  10. 使用了存储引擎是什么?(Go map)
  11. map是怎么实现的kv映射?
  12. key是如何被映射到这些桶的?(计算hash值,根据 哈希后B个位 定位哈希槽,比较tophash)
  13. 数据量很大,溢出桶很多,定位时间很长,怎么解决?(这里我以为要换存储引擎,其实面试官想问扩容机制)
  14. 扩容机制
  15. 讲一下JWT令牌登录(这里我答得更乱了,cookie是客户端技术 ,session是服务端技术,token是可存在cookie中的也可存在body中,如果你要实现一些特殊功能,如黑名单,私密数据需要存在redis中,每一次访问,都要检测比照一次)
  16. 黑名单,私密数据实在什么时候被写入到redis中的?
  17. mysql中的私密数据被修改,redis中的数据变成了脏数据(缓存一致性问题,我回答,在修改私密数据的同时,修改redis中的缓存)
  18. 做业务和做框架的不是同一个人,写业务的人不知道去修改缓存,如何去解耦呢?(不知道怎么弄,缓存一致性问题不会)
  19. struct和interface讲一下区别
  20. 函数的入参定义成struct和定义成interface的区别
  21. 空struct和空interface的区别和应用场景(空结构体更多的利用无大小的特点,例如 channel 不需要知道消息是什么,只需要知道有消息来了,例如map实现set,只要key不需要val, 空接口更多的是承载,go1.18之前没有泛型,很多函数的参数类型是interface{},在函数内部去类型转换)
  22. defer的用法?( 先把返回值复制到returnPointer 在按照栈的顺序执行defer的内容 )
  23. defer中对返回值修改,在函数外能拿到这个修改吗?(1.有名返回值 2.引用类型或指针 )
  24. 算法题

问题 1.所有数字出现两次,一个数字出现一次(位运算,全部异或)

问题2 所有数字出现两次,两个数字出现一次(位运算,全部异或,得到一个p,用这个p的任意一位1 去与运算 按照01分为两组 每组再去异或)问题

问题3 所有数字出现三次,三个数字出现一次(哈希map计数)位运算

问题4 哈希计数的区别,两者的优缺点

算法题 一个无规则数组,找到其中的极小数,指比相邻的数小,两端的数可以是极小数(方法一 遍历 方法二 二分,当一个数比右边的数大于或等于,那么这个数的右边的一定有极小值)

反问环节:

1.能给一些学习的建议吗? (多考虑一些实际的东西,第二道算法题没做出来,催得紧,感觉挂了,不想反问了)

#你的秋招进展怎么样了##我的求职思考##golang面经#
 类似资料: