- 相關(guān)推薦
騰訊php程序員面試題目及答案
設(shè)計(jì)任務(wù):
1、最近總有人騷擾我們的投票模塊,需要你來(lái)設(shè)計(jì)一個(gè)投票限制的東東
要求如下:
1)要求每個(gè)QQ號(hào)碼(假設(shè)此QQ號(hào)碼在UNIT32 內(nèi)可以表示)10分鐘這內(nèi)只能投5票。
2)我們的用戶很踴躍,平均每天要有2000萬(wàn)人左右通過(guò)此程序投票。
說(shuō)明:
1)無(wú)需寫代碼,只需要圖跟文字即可。
2)對(duì)于關(guān)鍵邏輯,請(qǐng)用圖加代碼表示出來(lái),這也是對(duì)你文字表達(dá)能力的一個(gè)考驗(yàn)。
3)對(duì)你能想到的所有的邊界條件列出來(lái),這是對(duì)你邏輯思維全面與敏捷性的考驗(yàn)。
4)存儲(chǔ)部分,盡你所能吧。如果,你需要一個(gè)自己設(shè)計(jì)的存儲(chǔ)層,那么把這個(gè)存儲(chǔ)層的實(shí)現(xiàn),用文字+圖片方式描述清楚,要是設(shè)計(jì)合理,你會(huì)獲得華麗的獎(jiǎng)分.
解答:
核心問(wèn)題:如何統(tǒng)計(jì)10分鐘之內(nèi)投了5票?
首先:以秒為鍵切分?jǐn)?shù)據(jù)集,10*60=600個(gè)時(shí)間戳桶,并添加一個(gè)Forbid令牌桶
然后:每個(gè)數(shù)據(jù)集內(nèi),以qq號(hào)碼為鍵,vote次數(shù)為值
OK,已經(jīng)成功轉(zhuǎn)換為key-value方式存儲(chǔ),2000萬(wàn)的日投票,除以86400秒,并發(fā)231.48rps,使用memcache能夠輕松勝任。
數(shù)據(jù)集ID:201006072134
【QQ號(hào)碼:Vote次數(shù)】
201006072134 | 201006072135 | 201006072136
【12345:3】 | 【12345:3】 | 【12345:3】
【88888:2】 | 【88888:3】 | 【88888:3】
把下一秒鐘不能投票的同學(xué) 生成一個(gè)令牌桶Forbid。
―――――-
Forbid令牌桶
【12345】
【55555】
【66666】
【77777】
【99999】
―――――-
if(in_array($uid,$not_vote))
{
$flag = ‘不能投票’;
}
else
{
$flag = ‘可以投票’;
// 新時(shí)間戳桶
}
定時(shí)任務(wù)
1、unset(10分鐘前的時(shí)間戳桶)
2、重新生成令牌桶
【騰訊php程序員面試題目及答案】相關(guān)文章:
2023常見(jiàn)醫(yī)院面試題目與參考答案08-10
報(bào)社筆試題目及答案03-18
財(cái)務(wù)會(huì)計(jì)面試題目及答案03-10
海信面試英語(yǔ)題目03-02
史上最全軟件筆試題目及答案08-21
民生銀行筆試題目及答案03-17
面試司機(jī)的問(wèn)題及答案04-26
英語(yǔ)電話面試題目04-06
人事專員面試題目02-24
2023護(hù)士面試題目07-14