面试字节跳动,面试官提了一个分布式相关的题目,和一个系统设计的题目,感觉还挺好的,分享给大家,大家一起交流一下解法和设计
现在有三个任务,分别耗时 50s, 60s, 70s
你只有一台设备,在它分别是 1 核,2 核,3 核的情况下,跑完三个任务,最少耗时分别是多少,讲一下思路。
目前我想的是:
1 核情况: 180s 串行
2 核情况:50s + 60s = 110s ,第三个任务给另外核运行
3 核情况:70s
感觉想的比较简单,大家有什么想法吗~
对于分布式该如何学习呢
设计一个激活码生成服务:
这个题目有 2 个难点:
全局唯一且固定长度: 如果全局唯一,不能随机,只能自增,怎么保证长度为 8 呢?
集群部署:保证集群中两个节点生成激活码不重复
思路:使用自增 ID, base62 转换,拼接每个节点 workId ,拼接随机数,组成 8 位, 但是拼接过程中可能会出现兑换码重复的情况,可以在存库的时候排重,重新获取
大家有什么好的思路呢?