1分钟内用户上线的数目是60万,如果用户在5分钟内重复上线,就给他发警告,问如何设计?

1分钟内用户上线的数目是60万,如果用户在5分钟内重复上线,就给他发警告,问如何设计?

    这是我在网上找到的腾讯公司的一道面试题,觉得有点价值,所以简单分析下,欢迎提建议。
    题目:1分钟内用户上线的数目是60万,如果用户在5分钟内重复上线,就给他发警告,问如何设计?

   考虑:要判断用户是否在5分内重复上线,那么至少要(也只需要)保存距当前时刻5分钟内的登录用户的信息(只要简单的ID)
           从这个开始出发,需要考虑的问题为2个:
           1.如何在迅速判断用户是否在保存的数据中 (这个可以用hash)。
           2. 如果把过期的数据删掉  (这个就想到维护一个时间链表,把到期的通过链表来删除)。

      
   1分钟内用户上线的数目是60万,如果用户在5分钟内重复上线,就给他发警告,问如何设计?_第1张图片
    
     采用:数组+hash表的方法。数组用来存储每秒的指向用户ID的指针。hash表即桶,每桶用来存储该秒的用户数,按照ID大小来排序,采用链表来实现。

你可能感兴趣的:(笔试面试专题)