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

网易后端面经

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

网易后端面经

时间点如下:7.3投递 -> 7.12一面 -> 7.19二面

一点思考

    网易问的偏中间件技术原理,语言层面基本没问。一面面试官比较年轻,不断追细节,感觉还是比较青涩。二面面试官估计是leader,有的问题问的很离谱,最后把我给激怒了。整体下来体验不是很友好,就没有后续了。

    今年找工作十分不易,市场候选人很多,能过就是钱给不到位!希望这篇面经能帮到大家~

网易云信一面(7.12 19:00)

  1. 说一个源码改进业务的例子。

  2. websocket心跳如何实现?

  3. zk/db/redis锁怎么选型。

  4. 8台物理机能撑住百万的长连接,一台能撑住13w???数据感觉有问题,至少有20台吧(lf+hl)

  1. 多租户隔离,为什么不用两个进程?
  • 需要下沉容器层,有插件层消除重复。
  • 表现为同一个应用,然后只注册到注册中心一次。两个应用可以使用相同端口号。
  • 另外进程就更重了,要消耗更多的资源,而且不好管控。
  1. 流程编排分支条件如何实现?
  • 业务身份,这个有问题,如果大量增加分支,会拷贝多份,会有很多重复的规则文件,但是只有一两个组件不一样。
  • 目前做法时在组件中可能有业务条件判断。后续会使用表达式语言增加分支条件支持,业务身份只支持大粒度的区分。
  1. 流程编排如何避免大量调用下游服务,是否做了隔离?

    感觉调用下游要做熔断,例如hystrix。但是这个有点重了。sdk要做薄。

  2. 客服IM也区分在线消息和离线消息,都会存起来,如果掉线了,下次登录成功了主动拉取就行。

网易云信二面(7.17 19:00)

  1. 多租户隔离怎么做的,应该是db/kafka等中间件(存储)上的隔离,以及流量(计算资源)上的单独部署。

    最理想的方案是全部单独部署,隔离性最好,但是成本最高
    我主要是代码上隔离开来,然后混合部署。

计算资源(cpu/memory) 共享一个pod namespace 私有化集群
线程池/连接池 按租户配额 流量标的方式,不同标,不同服务实例,类似泳道 计算资源和物理资源完全隔离了
限流
定时任务elastic job
存储资源 共用实例 不同实例 x
mysql 分库,库名不同,但是连接池可以复用 物理层面的隔离
kafka 不同租户不同topic,或者添加tag 物理层面的隔离
es 不同index name 物理层面的隔离
cos 前缀不一样? 物理层面的隔离
redis key前缀不同 物理层面的隔离
zk
代码资源 耦合度 x x
仓库隔离 KA和业务中台的,有不同的代码仓库
混合部署 依赖无冲突,能实现通信
开发模式 按照各自的开发计划开发
流量隔离 动态调度:动态加载和卸载
扩展点 组件化编程
编排 需要支持不同的分支条件,不能只靠增加业务身份,解决分支问题,不然规则文件会爆炸
  1. 后续多个聚合业务共用同一个业务中台应用,一个聚合应用发布,另一个聚合应用也得跟着发布,如何解决这个问题?

    动态部署

  2. 动态部署为什么会卸载不干净?

  3. 假设redis能承受主5w qps,db能撑住500qps,db可能随机更新,如何把qps提升到20w,且保证一致性

redis分片,不分片怎么做呢?本地缓存?可能会不一致。

  1. 双机房容灾,中间件如何做双机房容灾?例如mysql机房数据丢失是怎么解决的?
  • 中间件均需要做同步,所有的写操作被定向到一个 Master机房进行,存在跨机房调用。以保证写强一致性,读可以读取主机房,也可以读取从机房。每个机房均包含全量的数据。
  • 双向复制,均能写入,需要避免冲突,例如数据库自增id,冲突时提供了基于时间的冲突解决方案,以最后时间戳为准,确保各个机房的数据一致。
  • mysql怎么做高可用,canal怎么做高可用,怎么避免重复?

https://zhuanlan.zhihu.com/p/32009822

  1. kafka积压优化,感觉就是削峰填谷,怎么保证数据库不会过载?

    当时其实数据库层面也是可以限流的。看下是不是可以扩容db,分库分表。以及增加多个topic。当然前提是处理逻辑没有问题,堆机器是最简单的事情。

#社招##校招##字节跳动##网易#
 类似资料: