1. 程式人生 > >騰訊PHP工程師面試題兩份

騰訊PHP工程師面試題兩份

sys 自己的 也會 服務器 重要 emc 存儲 邊界條件 pwd

試題一:

PHP開發工程師筆試試卷

姓名:__________

一、PHP開發部分

1.合並兩個數組有幾種方式,試比較它們的異同

2.請寫一個函數來檢查用戶提交的數據是否為整數(不區分數據類型,可以為二進制、八進制、十進制、十六進制數字)

3.PHP的strtolower()和strtoupper()函數在安裝非中文系統的服務器下可能會導致將漢字轉換為亂碼,請寫兩個替代的函數實現兼容Unicode文字的字符串大小寫轉換

4.PHP的is_writeable()函數存在Bug,無法準確判斷一個目錄/文件是否可寫,請寫一個函數來判斷目錄/文件是否絕對可寫

5.PHP的chmod()函數存在Bug,無法保證設置成功,請寫一個函數在指定路徑下創建一個目錄/文件並確保可以正確設置權限掩碼

6.PHP處理上傳文件信息數組中的文件類型$_FILES[‘type‘]由客戶端瀏覽器提供,有可能是黑客偽造的信息,請寫一個函數來確保用戶上傳的圖像文件類型真實可靠

7.PHP通過對數據的URL編碼來實現與Javascript的數據交互,但是對於部分特殊字符的編解碼與Javascript的規則不盡相同,請具體說明這種差異,並針對UTF-8字符集的數據,寫出PHP的編解碼函數和Javascript的編解碼函數,確保PHP編碼數據可以被Javascript正確解碼 、Javascript編碼的數據可以被PHP正確解碼

8.試闡述Memcache的key多節點分布的算法?當任一節點出現故障時PHP的Memcache客戶端將如何處置?如何確保Memcache數據讀寫操作的原子性?

9.如何實現PHP的安全最大化?怎樣避免SQL註入漏洞和XSS跨站腳本攻擊漏洞?

10.請設計一個數據結構可以實現無限級子菜單的樹型菜單功能並提供菜單生成算法,用UML描述設計並寫出相關PHP代碼

二、系統相關部分

1.請簡述Linux、FreeBSD、Soalaris、Mac OS、Windows幾種系統下進程與線程的內核實現方式、管理機制的異同

2.請簡述Linux/BSD系統下進程間通訊的方式有哪些,並具體說明在PHP下如何實現

3.請簡述Linux/BSD系統下系統的消息/事件異步通知機制有幾種,並加以比較

4.簡單比較TCP/UDP協議的異同,對於PHP的Socket擴展與Stream擴展,試比較兩者基於TCP/UDP協議的SOCKET編程差異?

5.為什麽會出現僵死進程(孤兒進程)?怎樣查看僵死進程?如何解決僵死進程問題?

6.對於System-V消息隊列,如何解決系統本身對於消息隊列條數、總容量(字節數)的限制?如何設置消息的優先級別?請比較阻塞模式和非阻塞模式的異同,並說明如何避免非阻塞模式下的消息隊列堵塞?

7.請描述Apache 2.x版本的MPM(Multi-Processing Module)機制,並具體說明在不同的MPM機制下如何支持PHP?

8.請簡述PHP在Apache下的幾種運行方式並加以比較?如何讓PHP在Linux+Apache下以Fast CGI方式運行?

9. 請寫出讓PHP能夠在命令行下以腳本方式執行時安裝PHP所必須指定的configure參數,並說明如何在命令行下運行PHP腳本(寫出兩種方式)同時向PHP腳本傳遞參數?

10.請簡述PHP 5.2的內存池及其內存管理機制、垃圾回收機制

試題二:

說在前面:

1、以下題目,除了編程任務外其他都需要寫在給你提供的草紙上。紙張是珍貴的地球資源,請節約使用。編程任務在有相應的環境時,會要求上機書寫,實在沒有條件,就只能寫在草紙上了。

2、時間:

基礎任務+進階任務+設計任務 = 90分鐘

編程任務 = 60分鐘

基礎任務:

1、請列舉你能想到的UNIX信號,並說明信號用途。

2、請列舉、你能想到的所有的字符串查找算法,並加註釋簡單說明。

3、有一個IP地址(192.168.0.1),請寫出其32位無符號整數形式。

4、寫出、你能想到的所有HTTP返回狀態值,並說明用途(比如:返回404表示找不到頁面)

基礎任務-選作(會得到額外分數):

1、畫幾個你最熟悉的SERVER端模型出來(格式不重要,盡量將圖畫清楚,說明思路即可)

進階任務:

1、PHP的垃圾收集機制是怎樣的?

說明:

1)如果,你熟悉PHP源碼,那麽請從源碼入手,回答些問題,會獲得額外加分

2)如果,你不熟悉PHP源碼,那麽盡你所能,多寫點東西,包括利用自己的編程直覺得到的信息,都可以。

3)對,則有分,錯誤不扣,不寫無分。

2、請寫出HTTP頭,並符合以下要求:

1)這是一個post請求

2)目標:http://www.example.com:8080/test

3)POST變量:

username: test

pwd: test2

intro: Hello world!

4)包含以下COOKIE信息:

cur_query: you&me

說明:

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

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

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

設計任務:

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

要求如下:

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

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

說明:

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

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

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

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

編程任務:

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

騰訊PHP工程師面試題兩份