• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            zhgw01

            騰訊面試中一道題

            題目:1分鐘內(nèi)用戶上線的數(shù)目是60萬,如果用戶在5分鐘內(nèi)重復(fù)上線,就給他發(fā)警告,問如何設(shè)計(jì)?

            考慮:要判斷用戶是否在5分內(nèi)重復(fù)上線,那么至少要(也只需要)保存距當(dāng)前時(shí)刻5分鐘內(nèi)的登錄用戶的信息(只要簡(jiǎn)單的ID)
                       從這個(gè)開始出發(fā),需要考慮的問題為2個(gè):
                       1.如何在迅速判斷用戶是否在保存的數(shù)據(jù)中 (這個(gè)理所當(dāng)然想道用hash)
                       2. 如果把過期的數(shù)據(jù)刪掉  (這個(gè)就想到維護(hù)一個(gè)時(shí)間鏈表,把到期的通過鏈表來刪除)


            這個(gè)是半年前騰訊面試的時(shí)候碰到的題目,當(dāng)時(shí)覺得很難,今天走在路上突然想起,想了想,突然想到這種方法,也許不是最好,但至少解決了,也了解了一件事

            posted on 2009-04-16 20:39 apacs 閱讀(2546) 評(píng)論(10)  編輯 收藏 引用 所屬分類: 算法

            Feedback

            # re: 騰訊面試中一道題 2009-04-16 22:08 func

            為啥不能為每個(gè)用戶追加一個(gè)登錄時(shí)間字段呢?
            每次登錄,判斷下時(shí)間。

            請(qǐng)教~  回復(fù)  更多評(píng)論   

            # re: 騰訊面試中一道題 2009-04-17 17:50 Mark

            也就是一個(gè)時(shí)間鏈表,一個(gè)5段的循環(huán)Buffer. 每段循環(huán)Buffer使用HashTable就OK了。  回復(fù)  更多評(píng)論   

            # re: 騰訊面試中一道題[未登錄] 2009-04-27 15:19 terry

            @func
            因?yàn)橛脩魯?shù)目可能很多,比如一億個(gè),可是我5分鐘的時(shí)間最多有300萬個(gè)不同的用戶

            如果給用戶追加登錄時(shí)間,當(dāng)然可以用來判斷是否超時(shí),但是你準(zhǔn)備怎么保存這些用戶數(shù)據(jù)

            1。如果只想保存5分鐘的話,
            那么我有一個(gè)用戶到期了,按照你的登錄時(shí)間字段,怎么迅速的找出誰過期,然后把這個(gè)數(shù)據(jù)刪掉  回復(fù)  更多評(píng)論   

            # re: 騰訊面試中一道題 2009-04-30 11:04 func

            感謝回復(fù)

            我的意思是在數(shù)據(jù)庫里的相關(guān)表中追加一個(gè)登錄時(shí)刻字段和下線時(shí)刻字段。每次登錄時(shí),用當(dāng)前時(shí)刻比對(duì)這些時(shí)刻字段,看是不是重復(fù)上線。

            我沒看出題目中有清除過期數(shù)據(jù)的需求,麻煩指出一下 :)  回復(fù)  更多評(píng)論   

            # re: 騰訊面試中一道題[未登錄] 2009-05-06 17:43 terry

            @func
            這么說吧,比如我第1-5分鐘上線了300萬個(gè)不同的用戶,第6-10分鐘上線了另外300萬個(gè)不同的用戶
            現(xiàn)在有600萬個(gè)用戶,你準(zhǔn)備把這600萬個(gè)用戶的數(shù)據(jù)都保存在數(shù)據(jù)庫里嗎?
            如果按照你的做法,50分鐘就得存3000萬個(gè)用戶的數(shù)據(jù) (這里假設(shè)上線的都不重復(fù)),這樣就很浪費(fèi)空間

            因?yàn)轭}目的要求只有一個(gè): 判斷用戶是否在5分鐘之內(nèi)登錄,所以我只要保存距當(dāng)前時(shí)間最近5分鐘用戶的數(shù)據(jù),5分鐘之前登錄的鐵定是不算重復(fù)的,保存了也沒用。所以最多這需要保存300萬個(gè)用戶的數(shù)據(jù),無論時(shí)間怎么推移

            因?yàn)槊看伪4娴亩际亲罱?分鐘時(shí)間的用戶的數(shù)據(jù),當(dāng)時(shí)間流逝的時(shí)候,其中的數(shù)據(jù)就有一些發(fā)生了超時(shí)(即距離當(dāng)前時(shí)間已經(jīng)從5分鐘內(nèi)變成了超過5分鐘),這個(gè)時(shí)候就要?jiǎng)h掉,同時(shí)最近上線的用戶也要更新進(jìn)來  回復(fù)  更多評(píng)論   

            # re: 騰訊面試中一道題[未登錄] 2009-05-06 17:48 terry

            當(dāng)然你也可以說,你每次都會(huì)檢查登錄時(shí)刻字段距當(dāng)前時(shí)刻是否超過5分鐘,如果超過5分鐘就刪掉

            假設(shè)你數(shù)據(jù)庫保存的是300萬個(gè)用戶的數(shù)據(jù),每一個(gè)新的時(shí)刻(比如下一秒之類的),你都得把這個(gè)300萬個(gè)用戶的時(shí)間檢查一遍,用的時(shí)間就是O(n)了  回復(fù)  更多評(píng)論   

            # re: 騰訊面試中一道題 2009-05-10 01:09 func

            我覺得你這種設(shè)計(jì)只在某一類系統(tǒng)中有必要,比如投票系統(tǒng)。

            投票系統(tǒng)中,用戶一般不是注冊(cè)用戶,這樣就不存在數(shù)據(jù)庫用戶表,就沒法在數(shù)據(jù)庫中記錄用戶登錄時(shí)刻。就必須在內(nèi)存中用某種數(shù)據(jù)結(jié)構(gòu)來記錄用戶投票信息,即IP信息等。每次投票,都要查找一下這個(gè)數(shù)據(jù)結(jié)構(gòu),看看在一定時(shí)間中是否重復(fù)投票。

            但是題目所用的文字太讓人誤解為注冊(cè)用戶登錄的系統(tǒng)。如果是注冊(cè)用戶登錄的系統(tǒng)的重復(fù)登錄判斷,完全可以查看用戶表中最后一次登錄時(shí)刻和最后一次下線時(shí)刻來做此類判斷啊。  回復(fù)  更多評(píng)論   

            # re: 騰訊面試中一道題 2009-05-10 01:19 func

            注冊(cè)用戶登錄的系統(tǒng),上線時(shí)向數(shù)據(jù)庫更新(不是添加)上線時(shí)刻,下線時(shí)向數(shù)據(jù)更新下線時(shí)刻。不需要另開個(gè)定時(shí)器啥的更新這個(gè)數(shù)據(jù)啊。
            至于時(shí)間復(fù)雜度,登錄一次檢查一次,如果檢查的時(shí)間接受不了,系統(tǒng)的登錄本身就成問題了。所以這個(gè)不是問題。
              回復(fù)  更多評(píng)論   

            # re: 騰訊面試中一道題[未登錄] 2009-05-11 15:50 terry

            @func
            你這樣子說也是有道理的,在實(shí)際中我覺得確實(shí)可以按你的這么做,可是個(gè)人的看法是面試中會(huì)考你的數(shù)據(jù)結(jié)構(gòu)之類的,  回復(fù)  更多評(píng)論   

            # re: 騰訊面試中一道題[未登錄] 2009-09-10 20:02 noName

            放在客戶端就行了咯  回復(fù)  更多評(píng)論   


            My Links

            Blog Stats

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久国产影院| 久久久精品国产sm调教网站| 久久精品蜜芽亚洲国产AV| 成人久久综合网| 日本亚洲色大成网站WWW久久 | 久久99精品久久久久久久久久| 久久国产成人精品麻豆| 九九久久99综合一区二区| 久久婷婷五月综合色99啪ak| 国产成年无码久久久免费| 国产国产成人精品久久| 久久久久久久亚洲精品| 久久久免费精品re6| 香蕉久久AⅤ一区二区三区| 性高湖久久久久久久久| 日韩精品久久久久久| 亚洲精品无码久久久久久| 久久久久九九精品影院| 亚洲国产成人久久综合一| 亚洲AV无码1区2区久久| 亚洲国产精品狼友中文久久久| 久久99精品久久久久婷婷| 国产亚洲精久久久久久无码77777 国产亚洲精品久久久久秋霞 | 日本五月天婷久久网站| 99热成人精品免费久久| 777米奇久久最新地址| 一本一本久久A久久综合精品| 国产呻吟久久久久久久92| 久久精品男人影院| 久久99久久99精品免视看动漫| 中文无码久久精品| 伊人久久大香线蕉综合Av| 亚洲国产成人精品女人久久久| 99久久精品国产综合一区| 久久久久久久99精品免费观看| 久久精品天天中文字幕人妻| 久久久久亚洲av无码专区喷水| 亚洲狠狠婷婷综合久久蜜芽 | 久久夜色精品国产亚洲| 久久99精品国产麻豆宅宅| 精品国产乱码久久久久久郑州公司 |