LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

騰訊PHP面試題

admin
2012年4月3日 23:4 本文熱度 2889

pwd: test2


intro: Hello world!


4)包含以下COOKIE信息:


cur_query: you&me


說明:


1)如果,你記不得某個HTTP協議中的指令字了,那么,無奈這舉是用“漢字”代替。


2)如果,你能記住更多的HTTP協議指令字,那么多寫幾句,總是沒壞處,對吧?


3)最關鍵的,只需要畫出正確的“輪廓”(還記得httpwatch等工具打印出來的頭部嗎?那就是“輪廓”的含義),也會有分數,但如果,連“輪廓”都寫錯了,那么就很遺憾了。



請寫出HTTP頭,并符合以下要求:
POST /test HTTP/1.1
HOST:www.example.com
User-Agent: ...
Cookie:cur_query=you%26me

username=test&pwd=test2&intro=Hello world!


這個不知道對不對


設計任務:


1、最近總有人騷擾我們的投票模塊,需要你來設計一個投票限制的東東


要求如下:


1)要求每個QQ號碼(假設此QQ號碼在UNIT32內可以表示)10分鐘這內只能投5票。


2)我們的用戶很踴躍,平均每天要有2000萬人左右通過此程序投票。


說明:


1)無需寫代碼,只需要圖跟文字即可。


2)對于關鍵邏輯,請用圖加代碼表示出來,這也是對你文字表達能力的一個考驗。


3)對你能想到的所有的邊界條件列出來,這是對你邏輯思維全面與敏捷性的考驗。


4)存儲部分,盡你所能吧。如果,你需要一個自己設計的存儲層,那么把這個存儲層的實現,用文字+圖片方式描述清楚,要是設計合理,你會獲得華麗的獎分。


答案一


核心問題:如何統計10分鐘之內投了5票?


首先:以分鐘為鍵切分數據集,
然后:每個數據集內,以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】

數據模型:
$data[ 201006072134時間分鐘 ][ qq號碼 ] = vote次數;


A.統計10分鐘內投了多少票
$votes = 0;
for($i = 0; $i < 10; $i++ ){
$votes += $data[ $minute-$i ][ $qq ];
}


B.桶內投票數+1
$data[ $minute ][ $qq ]++;


C.過期統計數據,垃圾清理
unset($data[ $minute ]);


答案二


核心問題:如何統計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 = ‘可以投票’;
//insert 新時間戳桶
}


定時任務
1、unset(10分鐘前的時間戳桶)
2、重新生成令牌桶


編程任務:


1、我們碰到了大麻煩,一個新來的傳教士惹惱了上帝,上帝很憤怒,要求我們把圣經(bbe.txt)背熟,直至他說哪個單詞,我們就要飛快的回答出


這個單詞在第幾行第幾個單詞位置。聽說你是個優秀的程序員,那么髟助我們完成這個不可能的任務吧。


要求如下:


1)/myworks/example/bbe.txt,98版本英文圣經一本


2)輸入部分要求如下:php ./example.php [單詞]


3)輸出部分如下:[單詞] 1,2 2,4 5,6表示:此單詞在1行2列(第二個單詞),2行4列...


說明:


1)此文本4MB之巨...


2)單詞的含義:由英文字母(大小寫),數字(0-9)組成的串


3)提供給你的機器OS為ubuntu 9.10,內存只有1G,而且,很不幸的,其中700M用來做了別的


4)上機考試不允許上網,但我裝了man文檔以及讀取CHM以及PDF的閱讀器,在電腦的桌面的CHM文件夾中,有相應的PHP參考手冊


5)算法復雜度要求不能大于O(N^2)(就是N的平方)


6)什么?PHP低效且用起來不順手,好的,你可以用別的語言來實現。但注意:提供給你的機器上只有python 2.4/perl 5.8/gcc[g++] 4.1


分析問題:
典型的字典算法,或是分詞算法,好在是英文圣經程序可以少些幾行代碼
1、建立字典,也就是要找的詞,比如 fuck,baby,come,on -_- 估計BBE里少有這樣的很黃很暴力的詞匯
2、因為對內存有要求,其實這個時候可以分章節查找,就是載入內存允許的章節
3、算法時間度o(n)吧,可以一次查找多個詞匯


貼我的代碼:


以下是代碼片段:
< ?php
/**
* @author shjuto@gmail.com
* Trie字典樹
*
*/
class Trie
{
     private $trie;

     function __construct()
     {
          $trie = array(’children’ => array(),’isword’=>false);
     }

     /**
      * 把詞加入詞典
      *
      * @param String $key
      */
     function &setWord($word=’’)
     {
         $trienode = &$this->trie;
         for($i = 0;$i < strlen($word);$i++)
         {
             $character = $word[$i];
             if(!isset($trienode[’children’][$character]))
             {
                 $trienode[’children’][$character] = array(’isword’=>false);
             }
             if($i == strlen($word)-1)
             {
                     $trienode[’children’][$character] = array(’isword’=>true);
             }
             $trienode = &$trienode[’children’][$character];
         }
     }

     /**
      * 判斷是否為詞典詞
      *
      * @param String $word
      * @return bool true/false
      */
     function & isWord($word)
     {
         $trienode = &$this->trie;
         for($i = 0;$i < strlen($word);$i++)
         {
             $character = $word[$i];
             if(!isset($trienode[’children’][$character]))
             {
                 return false;
             }
             else
             {
                 //判斷詞結束
                 if($i == (strlen($word)-1) && $trienode[’children’][$character][’isword’] == true)
                 {
                     return true;
                 }
                 elseif($i == (strlen($word)-1) && $trienode[’children’][$character][’isword’] == false)
                 {
                     return false;
                 }
                 $trienode = &$trienode[’children’][$character];    
             }
         }
     }


     /**
      * 在文本$text找詞出現的位置
      *
      * @param String $text
      * @return array array(’position’=>$position,’word’ =>$word);
      */
     function search($text="")
     {
         $textlen = strlen($text);
         $trienode = $tree = $this->trie;
         $find = array();
         $wordrootposition = 0;//詞根位置
         $prenode = false;//回溯參數,當詞典ab,在字符串aab中,需要把$i向前回溯一次
         $word = ’’;
         for ($i = 0; $i < $textlen;$i++)
         {

             if(isset($trienode[’children’][$text[$i]]))
             {
                 $word = $word .$text[$i];
                 $trienode = $trienode[’children’][$text[$i]];
                 if($prenode == false)
                 {
                     $wordrootposition = $i;
                 }
                 $prenode = true;
                 if($trienode[’isword’])
                 {
                     $find[] = array(’position’=>$wordrootposition,’word’ =>$word);
                 }
             }
             else
             {
                 $trienode = $tree;
                 $word = ’’;
                 if($prenode)
                 {
                     $i = $i -1;
                     $prenode = false;
                 }
             }
         }
         return $find;
     }
}
$trie = new Trie();
$trie->setWord(’fuck’);
$trie->setWord(’you’);
$trie->setWord(’come’);
$trie->setWord(’on’);
var_dump($trie->isWord(’fuck’));
var_dump($trie->isWord(’a’));
var_dump($trie->isWord(’db’));
var_dump($trie->isWord(’comeon’));
var_dump($trie->isWord(’you’));
print_r($trie->search(’hello,tencent,i tell you sonme about bbe,
fuck you come on baby,come on,baby,baby,come on,tellgyou fuckdkkdkflsjflsjf’));


寫的比較亂,代碼應該還有很大的優化余地,不過足以說明Trie樹的基本思想了,我如果有時間的話,會寫一個中文分詞的例子.
歡迎拍磚


該文章在 2012/4/3 23:04:02 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲日韩欧美国产动漫综合 | 一级a做视频免费观看日本 亚洲精品国偷自产在线99人热 | 欧美亚欧在线视频 | 日韩欧美一区中文字幕在线 | 亚洲精品色婷婷在线影院麻豆 | 午夜性色福利在线视频观看 |