再战快手--二面

  1. n!系统设计题。

缓存、线程池等。等间隔分发,例如(1,100),(101,200),保证能命中缓存。当时如果n太大,间隔太小,会计算很久。这里还涉及到大数相乘。

  1. 供应商自动切换,什么时候自动切换?如何决定切换到哪个供应商引擎?如何做到1s切换。
  • 收集产商数据,如果很多客户端反馈出问题的时候,例如调用joinRoom失败,自动切换到另一个产商。
  • 另一个产商,需要考虑当前房间的sdk是否支持某个feature,一些定制的东西,某个版本是否有bug。以及该产商的容量支持情况,全部切换过去,是否支持?
  1. p99 50ms,p9999 500ms,如何优化这个p9999到50ms内。
    思路:
  • 大于500ms的打印出日志,根据链路排查具体原因。
  • 可以利用当时的请求参数,再模拟一遍。定位具体的问题,耗时在哪里?
    例如慢查询、重复调用某个服务,串行运行,下游服务耗时长,gc,未加缓存等。
  1. gc问题如何定位
  • 常用命令,例如jmap查看当前占用最多的内存是哪个类,jstack查看线程执行情况,阿里的arthas等。然后定位到占用最多的对象。
  • 查看gc日志,重点看哪些东西?当前使用的哪种gc算法,用的是fullgc还是young gc。回收前是多少内存,回收后是多少内存。gc的间隔,有什么规律。
  • 利用在线的一些网站,分析规律。
  • MAT/visualvm/arthas:watch/trace方法耗时/反编译类/查看类加载器
  1. 双机房容灾要考虑哪些事情?会出现哪些问题?中间件是有状态的,需要怎么做?
  • 容量如何评估。根据当前实际业务情况,以及cpu使用率,内存占用,磁盘占用情况等作出评估。
  • 将已有流量切换到另外一个域名,接入层切换流量。域名通过长链下发。域名解析替换也可以,但是有dns本地缓存,不够实时。
  • 数据如何做实时同步,出现脑裂问题(孤岛、多个leader)如何解决?zk watcher和轮询并行。有主机房和从机房的概念,出问题时,切换到从机房。
  • 机房恢复后,数据如何同步,赶上了才能再次切换。
  • 某个机房外口出问题的时候(一般内网机房机器能互通),例如电缆被挖了,如何处理?内部流量转发。
  • 我这里主要是考虑了某个机房断电的情况。
  1. 对我的期望?
  • 做某个方向的owner。承担需求评审和技术把关。沉淀一些基础组件。
  • 技术驱动产品,收集已有数据推动产品去落地。
  • 提高影响力,在一级部门和二级部门有较大影响力。
#快手##校招##社招##腾讯##美团#
全部评论
大佬是从字节跳槽吗
点赞 回复
分享
发布于 2022-10-23 22:27 重庆

相关推荐

头像
高等教育出版社 系统开发工程师 年包26,base12。
点赞 评论 收藏
转发
1 18 评论
分享
牛客网
牛客企业服务