騰訊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的記憶體池及其記憶體管理機制、垃圾回收機制
騰訊php開發工程師問題
1 . 請對 posix 風格和兼容 perl 風格兩種正則表達式的主要函式進行類比說明
ereg preg_match
ereg_replace preg_replace
2 . 請說明在 php .ini 中 safe_mode 開啟之後對於 php 系統 函式的影響
3 . php5 中魔術 方法 函式有哪幾個,請舉例說明各自的用法
__sleep
__wakeup
__tostring
__set_state
__construct,
__destruct
__call,
__get,
__set,
__isset,
__unset
__sleep,
__wakeup,
__tostring,
__set_state,
__clone
__autoload
4 . 請寫出讓,並說明如何在命令行下運行 php 腳本(寫出兩種方式)同時向 php 腳本傳遞參數?
1. php filename.php $agr1 $agr2
2. php –r “”
5 . php 的垃圾收集機制是怎樣的
6 .使對象可以像數組一樣進行 foreach 循環,要求屬性必須是私有。
(iterator 模式的 php5 實現,寫一類實現 iterator 接口 )
7 .請寫一段 php 代碼 ,確保多個進程同時寫入同一個檔案 成功
8 . 用 php 實現一個雙向佇列
9 . 使用正則表達式提取一段標識語言( html 或 xml )代碼段中指定標籤的指定屬性值(需考慮屬性值對不規則的情況,如大小寫不敏感,屬性名值與等號間有空格等)。此處假設需提取 test 標籤的 attr 屬性值,請自行構建包含該標籤的串