說在前面:
- 以下題目,除了編程任務外其他都需要寫在給你提供的草紙上。紙張是珍貴的地球資源,請節約使用。編程任務在有相應的環境時,會要求上機書寫,實在沒有條件,就只能寫在草紙上了。
- 時間:基礎任務+進階任務+設計任務 = 90分鐘,編程任務 = 60分鐘。
基礎任務:
- 請列舉你能想到的UNIX信號,並說明信號用途。
- 請列舉、你能想到的所有的字符串查找算法,並加注釋簡單說明。
- 有一個IP地址(192.168.0.1),請寫出其32位無符號整數形式。
- 寫出、你能想到的所有HTTP返回狀態值,並說明用途(比如:返回404表示找不到頁面)
基礎任務-選作(會得到額外分數):
- 畫幾個你最熟悉的SERVER端模型出來(格式不重要,盡量將圖畫清楚,說明思路即可)
進階任務:
- PHP的垃圾收集機制是怎樣的?
- 如果,你熟悉PHP源碼,那麼請從源碼入手,回答些問題,會獲得額外加分
- 如果,你不熟悉PHP源碼,那麼盡你所能,多寫點東西,包括利用自己的編程直覺得到的信息,都可以。
- 對,則有分,錯誤不扣,不寫無分。
- 請寫出HTTP頭,並符合以下要求:
- 這是一個post請求
- 目標:http://www.example.com:8080/test
- POST變量:username: test, pwd: test2, intro: Hello world!
- 包含以下COOKIE信息:cur_query: you&me
說明:
- 如果,你記不得某個HTTP協議中的指令字了,那麼,無奈之舉是用“漢字”代替。
- 如果,你能記住更多的HTTP協議指令字,那麼多寫幾句,總是沒壞處,對吧?
- 最關鍵的,只需要畫出正確的“輪廓”(還記得httpwatch等工具打印出來的頭部嗎?那就是“輪廓”的含義),也會有分數,但如果,連“輪廓”都寫錯了,那麼就很遺憾了。
設計任務:
最近總有人騷擾我們的投票模塊,需要你來設計一個投票限制的東東。要求如下:
- 要求每個QQ號碼(假設此QQ號碼在UNIT32內可以表示)10分鐘這內只能投5票。
- 我們的用戶很踴躍,平均每天要有2000萬人左右通過此程序投票。
說明:
- 無需寫代碼,只需要圖跟文字即可。
- 對於關鍵邏輯,請用圖加代碼表示出來,這也是對你文字表達能力的一個考驗。
- 對你能想到的所有的邊界條件列出來,這是對你邏輯思維全面與敏捷性的考驗。
- 存儲部分,盡你所能吧。如果,你需要一個自己設計的存儲層,那麼把這個存儲層的實現,用文字+圖片方式描述清楚,要是設計合理,你會獲得華麗的獎分。
編程任務:
我們碰到了大麻煩,一個新來的傳教士惹惱了上帝,上帝很憤怒,要求我們把聖經(bbe.txt)背熟,直至他說哪個單詞,我們就要飛快的回答出這個單詞在第幾行第幾個單詞位置。聽說你是個優秀的程序員,那麼幫助我們完成這個不可能的任務吧。
要求如下:
- /myworks/example/bbe.txt,98版本英文聖經一本
- 輸入部分要求如下:php ./example.php [單詞]
- 輸出部分如下:[單詞] 1,2 2,4 5,6 表示:此單詞在1行2列(第二個單詞),2行4列...
說明:
- 此文本4MB之巨...
- 單詞的含義:由英文字母(大小寫),數字(0-9)組成的串
- 提供給你的機器OS為ubuntu 9.10,內存只有1G,而且,很不幸的,其中700M用來做了別的
- 上機考試不允許上網,但我裝了man文檔以及讀取CHM以及PDF的閱讀器,在電腦的桌面的CHM文件夾中,有相應的PHP參考手冊
- 算法復雜度要求不能大於O(N^2)(就是N的平方)
- 什麼?PHP低效且用起來不順手,好的,你可以用別的語言來實現。但注意:提供給你的機器上只有python 2.4/perl 5.8/gcc[g++] 4.1