天天看点

头条面试题:求用户在线峰值和持续时间

前几天我的朋友面试头条,给出了这样一道面试题:

有一天的log的数据量,求一天中用户在线峰值和持续时间。

他面试结束后与我讨论,让我也做一下,我晚上就用了点时间做了这个题目。

写完之后我们讨论发现因为思路不同,且他的方法更好,就记录下来跟大家分享一下。

因为只求峰值数据,太多的字段没有加。

头条面试题:求用户在线峰值和持续时间

写完之后我们对结果,没有问题。又互相看了对方的代码,发现逻辑是不一样的。

头条面试题:求用户在线峰值和持续时间

不知道大家看出来我们两个逻辑上有什么不同吗?

其实主要的不同是第一部分求每个小时在线人数的思路上的不同:

我的想法是轮询24小时,遍历log数据发现在遍历的时间内就+1;

他的思路是遍历log数据,在数据的开始结束时间内都+1。

他这样做的话就在复杂度上少了很多,至少比我少一半的复杂度。

这其实就是一道大厂非常喜欢考的逻辑算法的题目,我朋友这样的算法自然更好:逻辑清晰,复杂度低。

如果大家还有什么更好的解法欢迎写在下面。

源码git下载地址:https://gitee.com/jingboweilanGO/demo_-log-high.git

如果觉得不错,可以推荐收藏一下,让我也更有动力。

上一篇: 实现JWT原理
下一篇: JWT理论知识