- 相關推薦
騰訊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程序員面試題目及答案】相關文章:
2024騰訊筆試題目及答案08-21
騰訊編輯筆試題目11-21
騰訊面試經驗10-15
2014最新php程序員深圳面試經歷11-15
電工面試題目及答案?02-23
騰訊面試流程分享11-19
鐵塔公司面試題目及答案03-25
醫生面試題目及答案03-25
騰訊面試 趣味見聞11-20
騰訊香港區面試11-20