后端Java开发 60min
0八股 + 40%项目 + 60%场景题,从0构建分布式负载均衡系统(?
1. 自我介绍
2. 介绍一个你自己认为的最有技术含量的项目(ks实习项目)
3. 项目细节拷打,最后问到某平台如何保证服务的安全性和可用性(答:鉴权、加密通信,然后分布式构造实现可用性-----开始分布式拷打)
4. DNS解析的过程中(项目有关),如何做到负载均衡?(答:根据发起请求的网段分桶)
5. 根据网段分桶之后,可能某一个桶依然有很大量的请求怎么做?(答:再加上一层分发器dispatcher,请求打到dispatcher上再交给具体的worker)
6. 如何确定分配给哪一个worker?(答: 考虑worker单位时间内的请求量x,worker所在区域的网络质量y,worker自身硬件的负担状况z,适用x,y,z参数构建worker的负载均衡因子factor,根据factor决定任务的分发)(已经完全不知道自己在说什么了)
7. 具体构造factor的表达式?如何评估该式子是否合理?(答:实验 + 资料查阅,先验评估)
8. dispatcher具体的实现(具体到数据结构)?(答:dispatcher维护一个可用worker的链表,每个worker有一个factor数据,dispatcher分发数据时,按照factor以某一概率分发给worker)(胡言乱语)
9. 某一个worker节点失联,dispatcher侧和其他worker侧有什么感知?(答:dispatcher周期心跳检测维护可用worker链表,worker失联后摘除,其他worker表现为负担加重??)
10. 如果让你实现这个项目,你有包括你在内的3个人进行分工,如何分配任务?(答:分模块进行,dispatcher一个模块,worker收到任务之后的处理一个模块,worker信息以及网络信息收集计算factor一个模块,每个同学主要维护自己的模块,模块间通信通过接口)
11. 如果四个人了呢?(答:评估当前同学的工作量,新同学帮助工作量最大的?或者搞一个维护的模块?)
12. 手撕 acm模式 数据结构自建 实现一个函数Foo(a,b,keyPairsList)实现SQL的inner join,其中a,b为数据表,keyPairsList为join时条件,只考虑and,20min