腾讯php程序员面试题目及答案

时间:2022-08-03 07:23:29 面试笔试 我要投稿
  • 相关推荐

腾讯php程序员面试题目及答案

  设计任务:

腾讯php程序员面试题目及答案

  1、最近总有人骚扰我们的投票模块,需要你来设计一个投票限制的东东

  要求如下:

  1)要求每个QQ号码(假设此QQ号码在UNIT32 内可以表示)10分钟这内只能投5票。

  2)我们的用户很踊跃,平均每天要有2000万人左右通过此程序投票。

  说明:

  1)无需写代码,只需要图跟文字即可。

  2)对于关键逻辑,请用图加代码表示出来,这也是对你文字表达能力的一个考验。

  3)对你能想到的所有的边界条件列出来,这是对你逻辑思维全面与敏捷性的考验。

  4)存储部分,尽你所能吧。如果,你需要一个自己设计的存储层,那么把这个存储层的实现,用文字+图片方式描述清楚,要是设计合理,你会获得华丽的奖分.

  解答:

  核心问题:如何统计10分钟之内投了5票?

  首先:以秒为键切分数据集,10*60=600个时间戳桶,并添加一个Forbid令牌桶

  然后:每个数据集内,以qq号码为键,vote次数为值

  OK,已经成功转换为key-value方式存储,2000万的日投票,除以86400秒,并发231.48rps,使用memcache能够轻松胜任。

  数据集ID:201006072134

  【QQ号码:Vote次数】

  201006072134 | 201006072135 | 201006072136

  【12345:3】 | 【12345:3】 | 【12345:3】

  【88888:2】 | 【88888:3】 | 【88888:3】

  把下一秒钟不能投票的同学 生成一个令牌桶Forbid。

  ―――――-

  Forbid令牌桶

  【12345】

  【55555】

  【66666】

  【77777】

  【99999】

  ―――――-

  if(in_array($uid,$not_vote))

  {

  $flag = ‘不能投票’;

  }

  else

  {

  $flag = ‘可以投票’;

  // 新时间戳桶

  }

  定时任务

  1、unset(10分钟前的时间戳桶)

  2、重新生成令牌桶


【腾讯php程序员面试题目及答案】相关文章:

2023常见医院面试题目与参考答案08-10

报社笔试题目及答案03-18

财务会计面试题目及答案03-10

海信面试英语题目03-02

史上最全软件笔试题目及答案08-21

民生银行笔试题目及答案03-17

面试司机的问题及答案04-26

英语电话面试题目04-06

人事专员面试题目02-24

2023护士面试题目07-14