php面試題

1. 基本知識點

  1. HTTP協議中幾個狀態碼的含義:1xx(臨時響應)
    Php代碼  收藏代碼
    1. 表示臨時響應並需要請求者繼續執行操作的狀態代碼。  
    2.   
    3. 代碼   說明   
    4. 100   (繼續) 請求者應當繼續提出請求。 服務器返回此代碼表示已收到請求的第一部分,正在等待其餘部分。    
    5. 101   (切換協議) 請求者已要求服務器切換協議,服務器已確認並準備切換。   
    6.   
    7. 2xx (成功)  
    8. 表示成功處理了請求的狀態代碼。  
    9. 代碼   說明   
    10. 200   (成功)  服務器已成功處理了請求。 通常,這表示服務器提供了請求的網頁。   
    11. 201   (已創建)  請求成功並且服務器創建了新的資源。   
    12. 202   (已接受)  服務器已接受請求,但尚未處理。   
    13. 203   (非授權信息)  服務器已成功處理了請求,但返回的信息可能來自另一來源。   
    14. 204   (無內容)  服務器成功處理了請求,但沒有返回任何內容。   
    15. 205   (重置內容) 服務器成功處理了請求,但沒有返回任何內容。  
    16. 206   (部分內容)  服務器成功處理了部分 GET 請求。   
    17.   
    18. 3xx (重定向)   
    19. 表示要完成請求,需要進一步操作。 通常,這些狀態代碼用來重定向。  
    20.   
    21. 代碼   說明   
    22. 300   (多種選擇)  針對請求,服務器可執行多種操作。 服務器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。   
    23. 301   (永久移動)  請求的網頁已永久移動到新位置。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。  
    24. 302   (臨時移動)  服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。  
    25. 303   (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。  
    26. 304   (未修改) 自從上次請求後,請求的網頁未修改過。 服務器返回此響應時,不會返回網頁內容。   
    27. 305   (使用代理) 請求者只能使用代理訪問請求的網頁。 如果服務器返回此響應,還表示請求者應使用代理。   
    28. 307   (臨時重定向)  服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。   
    29.   
    30. 4xx(請求錯誤)   
    31. 這些狀態代碼表示請求可能出錯,妨礙了服務器的處理。  
    32.   
    33. 代碼   說明   
    34. 400   (錯誤請求) 服務器不理解請求的語法。   
    35. 401   (未授權) 請求要求身份驗證。 對於需要登錄的網頁,服務器可能返回此響應。   
    36. 403   (禁止) 服務器拒絕請求。  
    37. 404   (未找到) 服務器找不到請求的網頁。  
    38. 405   (方法禁用) 禁用請求中指定的方法。   
    39. 406   (不接受) 無法使用請求的內容特性響應請求的網頁。   
    40. 407   (需要代理授權) 此狀態代碼與 401(未授權)類似,但指定請求者應當授權使用代理。  
    41. 408   (請求超時)  服務器等候請求時發生超時。   
    42. 409   (衝突)  服務器在完成請求時發生衝突。 服務器必須在響應中包含有關衝突的信息。   
    43. 410   (已刪除)  如果請求的資源已永久刪除,服務器就會返回此響應。   
    44. 411   (需要有效長度) 服務器不接受不含有效內容長度標頭字段的請求。   
    45. 412   (未滿足前提條件) 服務器未滿足請求者在請求中設置的其中一個前提條件。   
    46. 413   (請求實體過大) 服務器無法處理請求,因爲請求實體過大,超出服務器的處理能力。   
    47. 414   (請求的 URI 過長) 請求的 URI(通常爲網址)過長,服務器無法處理。   
    48. 415   (不支持的媒體類型) 請求的格式不受請求頁面的支持。   
    49. 416   (請求範圍不符合要求) 如果頁面無法提供請求的範圍,則服務器會返回此狀態代碼。   
    50. 417   (未滿足期望值) 服務器未滿足"期望"請求標頭字段的要求。   
    51.   
    52. 5xx(服務器錯誤)  
    53. 這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是服務器本身的錯誤,而不是請求出錯。  
    54.   
    55. 代碼   說明   
    56. 500   (服務器內部錯誤)  服務器遇到錯誤,無法完成請求。   
    57. 501   (尚未實施) 服務器不具備完成請求的功能。 例如,服務器無法識別請求方法時可能會返回此代碼。   
    58. 502   (錯誤網關) 服務器作爲網關或代理,從上游服務器收到無效響應。   
    59. 503   (服務不可用) 服務器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。   
    60. 504   (網關超時)  服務器作爲網關或代理,但是沒有及時從上游服務器收到請求。   
    61. 505   (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協議版本。   
     。。。

  2. Include require include_once require_once 的區別.
  3. PHP/Mysql中幾個版本的進化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改進等等。
    Php代碼  收藏代碼
    1. MySQL:  
    2.   
    3. 一、從 4.0 到 4.1 的主要變化  
    4.   
    5. 如果在4.1.0到4.1.3版本的MySQL中創建了包含 TIMESTAMP 字段的 InnoDB表。則在升級到4.1.4及更高時需要重建表,因爲存儲格式發生變化了。  
    6.   
    7. 字符串根據標準SQL來比較:比較之前不刪除末尾的空格,以前用末尾空格擴展了比較短的字符串。現在的結果是  
    8.   
    9. 'a' > 'a\t',以前則不這樣。可以用 mysqlcheck 來檢查一下數據表。  
    10.   
    11. TIMESTAMP 返回 'YYYY-MM-DD HH:MM:SS' 格式的字符串。在MySQL 4.0中,可以增加選項 --new 來獲得ySQL 4.1中這方面的特性。  
    12.   
    13. 在MySQL4.1.1前,語句解析器不是那麼嚴格,它在處理字符串轉時間轉換時會忽略第一個數字前的其他字符。在4.1.1之後,就比較嚴格了,返回結果是 DATE, DATETIME, 或 TIME 類型的函數的結果會被轉換成時間型  
    14.   
    15. 二、再看從 4.1 到 5.0 的主要變化  
    16.   
    17. ◆InnoDB 和 MyISAM 表中空格結尾的 TEXT 字段索引順序改變了。因此需要運行"CHECK TABLE" 語句修復數據表,如果出現錯誤,就運行 "OPTIMIZE TABLE" 或 "REPAIR TABLE" 語句修復,甚至重新轉儲(用mysqldump)。  
    18.   
    19. ◆MySQL 5.0.15開始,如何處理 BINARY 字段中填充的值已經改變了。填充的值現在是0x00 而非空格了,並且在取值的時候不會去除末尾的空格。  
    20.   
    21. ◆從MySQL 5.0.3開始,DECIMAL 的實現方式已經改變了,5.0對 DECIMAL的格式限制嚴格多了。在MySQL 5.0.3到5.0.5之間版本的 MyISAM 和 InnoDB 表中創建的 DECIMAL字段升級到5.0.6之後會發生崩潰。從5.0.3開始,DECIMAL 用更有效的格式來存儲。5.0.3開始,在計算 DECIMAL 值和舍入精確值的時候採用精確數學。  
    22.   
    23. ◆在以前,等待超時的鎖會導致 InnoDB回滾當前全部事務,從5.0.13開始,就只回滾最近的SQL語句了。  
    24.   
    25. ◆在4.1.13/5.0.8以前,DATETIME 的加0後就轉換成 YYYYMMDDHHMMSS 格式,現在變爲YYYYMMDDHHMMSS.000000 格式了  
    26.   
    27. ◆4.1中,FLOAT 或 DOUBLE 之間的比較碰巧沒問題,但在5.0中可能就不行了  
    28.   
    29. ◆從5.0.3開始,VARCHAR 和 VARBINARY 字段中末尾的空格不再刪除  
    30.   
    31. ◆增加了一個新的啓動選項 innodb_table_locks,它導致 LOCK TABLE 時也可以請求InnoDB 表鎖。這個選項默認打開,不過可能在 AUTOCOMMIT=1 和 LOCK TABLES應用中會導致死鎖。看來,我只需主要關注 時間(TIMESTAMP, DATETIME< DATE, TIME) 和數值型(FLOAD, DOUBLE, DECIMAL) 這兩種類型的變化;另外,我升級過程中暫時還不需要涉及到字符集問題,因此相對輕鬆一些。  
    32.   
    33. 升級步驟如下:  
    34.   
    35. 執行  
    36.   
    37. FLUSH TABLES WITH READ LOCK;  
    38.   
    39. 直接拷貝 MyISAM 表文件  
    40.   
    41. 用 mysqldump 導出 Innodb 類型的表  
    42.   
    43. 整個過程都很順利,新系統啓動之後,發現如下2個問題:  
    44.   
    45. 新增了關鍵字 INOUT,因此需要檢查表結構中還有其他什麼字段使用關鍵字了  
    46.   
    47. DATE_FORMAT 函數要求嚴謹多了,  
    48.   
    49. DATE_FORMAT('2006/11/24 09:14:00''%Y-%m-%d %T')   
    50. 和DATE_FORMAT('2006/11/2409:14:00''%Y-%m-%d %T')  
    51.   
    52. 的結果完全不一樣,在 4.0 中,能兼容這兩種格式,而在 5.0 中,只能正確的使用前者了,後者則會有問題。這也應該是上面提到的時間類型發生的變化所致。  
     PHP:
    Php代碼  收藏代碼
    1. PHP5以下幾個改進值得關注:  
    2. 1、極大地提高了面向對象能力;  
    3. 2、支持try/catch異常處理;  
    4. 3、改進了字符串地處理;  
    5. 4、改經了xml和web服務支持;  
    6. 5、對SQlite內置支持。  
     
  4. HEREDOC介紹
    Php代碼  收藏代碼
    1. Heredoc技術,在正規的PHP文檔中和技術書籍中一般沒有詳細講述,只是提到了這是一種Perl風格的字符串輸出技術。但是現在的一些論壇程序,和部分文章系統,都巧妙的使用heredoc技術,來部分的實現了界面與代碼的準分離,phpwind模板就是一個典型的例子。  
    2.   
    3. 1.以<<<End開始標記開始,以End結束標記結束,結束標記必須頂頭寫,不能有縮進和空格,且在結束標記末尾要有分號 。開始標記和開始標記相同,比如常用大寫的EOT、EOD、EOF來表示,但是不只限於那幾個,只要保證開始標記和結束標記不在正文中出現即可。  
    4.   
    5. 2.位於開始標記和結束標記之間的變量可以被正常解析,但是函數則不可以。在heredoc中,變量不需要用連接符.或,來拼接,如下:  
    6.   
    7. $v=2;  
    8. $a= <<<EOF  
    9. "abc"$v  
    10. "123"  
    11. EOF;  
    12. echo $a//結果連同雙引號一起輸出:"abc"2 "123"  
    13.   
    14. 3.heredoc常用在輸出包含大量HTML語法d文檔的時候。比如:函數outputhtml()要輸出HTML的主頁。可以有兩種寫法。很明顯第二種寫法比較簡單和易於閱讀。  
    15.   
    16. function outputhtml(){  
    17. echo "<html>";  
    18. echo "<head><title>主頁</title></head>";   
    19. echo "<body>主頁內容</body>";  
    20. echo "</html>;  
    21. }  
    22.   
    23. function outputhtml()  
    24. {  
    25. echo <<<EOT  
    26.    <html>  
    27.    <head><title>主頁</title></head>  
    28.    <body>主頁內容</body>  
    29.    </html>  
    30. EOT;  
    31. }  
    32.   
    33. outputhtml();  
    34.   
    35. 在heredoc中會自動替換其中的$變量,將命令和輸入放在一塊,方便  
     
  5. 寫出一些php魔幻方法;
    Php代碼  收藏代碼
    1. php規定以兩個下劃線(__)開頭的方法都保留爲魔術方法,所以建議大家函數名最好不用__開頭,除非是爲了重載已有的魔術方法。  
    2. PHP中的魔術方法有 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone, __autoload  
    3. 1、__get、__set  
    4. 這兩個方法是爲在類和他們的父類中沒有聲明的屬性而設計的  
    5. __get( $property ) 當調用一個未定義的屬性時,此方法會被觸發,傳遞的參數是被訪問的屬性名  
    6. __set( $property$value ) 給一個未定義的屬性賦值時,此方法會被觸發,傳遞的參數是被設置的屬性名和值  
    7. 這裏的沒有聲明包括當使用對象調用時,訪問控制爲proteced,private的屬性(即沒有權限訪問的屬性)。  
    8. 2、__isset、__unset  
    9. __isset( $property ) 當在一個未定義的屬性上調用isset()函數時調用此方法  
    10. __unset( $property ) 當在一個未定義的屬性上調用unset()函數時調用此方法  
    11. 與__get方法和__set方法相同,這裏的沒有聲明包括當使用對象調用時,訪問控制爲proteced,private的屬性(即沒有權限訪問的屬性)  
    12. 3、__call  
    13. __call( $method$arg_array ) 當調用一個未定義的方法是調用此方法  
    14. 這裏的未定義的方法包括沒有權限訪問的方法;如果方法不存在就去父類中找這個方法,如果父類中也不存在就去調用本類的__call()方​法,如果本類中不存在__call()方法就去找父類中的__call()方法  
    15.   
    16. 4、__autoload  
    17. __autoload 函數,它會在試圖使用尚未被定義的類時自動調用。通過調用此函數,腳本引擎在 PHP 出錯失敗前有了最後一個機會加載所需的類。  
    18. 如果要定義一個全局的自動加載類,則必須用spl_autoload_register()方法將處理類註冊到PHP標準庫:  
    19. view plaincopy to clipboardprint?  
    20. <?php    
    21. class Loader    
    22. {    
    23. static function autoload_class($class_name)    
    24. {    
    25. //尋找正確的$class_name類,並引入,沒有則拋出異常    
    26. }    
    27. }    
    28.     
    29. /** 
    30. *   設置對象的自動載入 
    31. *   spl_autoload_register — Register given function as __autoload() implementation 
    32. */    
    33. spl_autoload_register(array('Loader''autoload_class'));    
    34.     
    35. $a = new Test();//Test沒用require就實例化,實現自動加載,很多框架就用這種方法自動加載類    
    36.     
    37. ?>    
    38. 注意: 在 __autoload 函數中拋出的異常不能被 catch 語句塊捕獲並導致致命錯誤,所以應該在函數本身做捕獲。  
    39. 5、__construct、__destruct  
    40. __construct 構造方法,當一個對象創建時調用此方法,相對於PHP4使用此方法的好處是:可以使構造方法有一個獨一無二的名稱,無論它所在的類的名稱是什麼.這樣你在改變類的名稱時,就不需要改變構造方法的名稱  
    41. __destruct 析構方法,PHP將在對象被銷燬前(即從內存中清除前)調用這個方法。默認情況下,PHP僅僅釋放對象屬性所佔用的內存並銷燬對象相關的資源,析構函數允許你在使用一個對象之後執行任意代碼來清除內存。當PHP決定你的腳本不再與對象相關時,析構函數將被調用。  
    42. 在一個函數的命名空間內,這會發生在函數return的時候。  
    43. 對於全局變量,這發生於腳本結束的時候。  
    44. 如果你想明確地銷燬一個對象,你可以給指向該對象的變量分配任何其它值.通常將變量賦值勤爲NULL或者調用unset.  
    45. 6、__clone  
    46. PHP5中的對象賦值是使用的引用賦值,如果想複製一個對象則需要使用clone方法,在調用此方法是對象會自動調用__clone魔術方法,如果在對象複製需要執行某些初始化操作,可以在__clone方法實現。  
    47. 7、__toString  
    48. __toString方法在將一個對象轉化成字符串時自動調用,比如使用echo打印對象時。  
    49. 如果類沒有實現此方法,則無法通過echo打印對象,否則會顯示:Catchable fatal error: Object of class test could not be converted to string in  
    50. 此方法必須返回一個字符串。  
    51. 在PHP 5.2.0之前,__toString方法只有結合使用echo() 或 print()時 才能生效。PHP 5.2.0之後,則可以在任何字符串環境生效(例如通過printf(),使用%s修飾符),但 不能用於非字符串環境(如使用%d修飾符)。從PHP 5.2.0,如果將一個未定義__toString方法的對象 轉換爲字符串,會報出一個E_RECOVERABLE_ERROR錯誤。  
    52. 8、__sleep、__wakeup  
    53. __sleep 串行化的時候用  
    54. __wakeup 反串行化的時候調用  
    55. serialize() 檢查類中是否有魔術名稱 __sleep 的函數。如果這樣,該函數將在任何序列化之前運行。它可以清除對象並應該返回一個包含有該對象中應被序列化的所有變量名的數組。  
    56. 使用 __sleep 的目的是關閉對象可能具有的任何數據庫連接,提交等待中的數據或進行類似的清除任務。此外,如果有非常大的對象而並不需要完全儲存下來時此函數也很有用。  
    57. 相反地,unserialize() 檢查具有魔術名稱 __wakeup 的函數的存在。如果存在,此函數可以重建對象可能具有的任何資源。  
    58. 使用 __wakeup 的目的是重建在序列化中可能丟失的任何數據庫連接以及處理其它重新初始化的任務。  
    59. 9、__set_state  
    60. 當調用var_export()時,這個靜態 方法會被調用(自PHP 5.1.0起有效)。  
    61. 本方法的唯一參數是一個數組,其中包含按array(’property’ => value, …)格式排列的類屬性。  
    62. 10、__invoke  
    63. 當嘗試以調用函數的方式調用一個對象時,__invoke 方法會被自動調用。  
    64. PHP5.3.0以上版本有效  
    65. 11、__callStatic  
    66. 它的工作方式類似於 __call() 魔術方法,__callStatic() 是爲了處理靜態方法調用,  
    67. PHP5.3.0以上版本有效  
    68. PHP 確實加強了對 __callStatic() 方法的定義;它必須是公共的,並且必須被聲明爲靜態的。同樣,__call() 魔術方法必須被定義爲公共的,所有其他魔術方法都必須如此  
     
  6. 一些編譯php時的configure 參數  
    Php代碼  收藏代碼
    1. ./configure  
    2. –prefix=/usr/local/php                      php 安裝目錄  
    3. –with-apxs2=/usr/local/apache/bin/apxs  
    4. –with-config-file-path=/usr/local/php/etc      指定php.ini位置  
    5. –with-mysql=/usr/local/mysql           mysql安裝目錄,對mysql的支持  
    6. –with-mysqli=/usr/local/mysql/bin/mysql_config    mysqli文件目錄,優化支持  
    7. –enable-safe-mode                              打開安全模式  
    8. –enable-ftp                                 打開ftp的支持  
    9. –enable-zip                                 打開對zip的支持  
    10. –with-bz2                    打開對bz2文件的支持  
    11. –with-jpeg-dir                                 打開對jpeg圖片的支持  
    12. –with-png-dir                                 打開對png圖片的支持  
    13. –with-freetype-dir              打開對freetype字體庫的支持  
    14. –without-iconv                關閉iconv函數,種字符集間的轉換  
    15. –with-libxml-dir                 打開libxml2庫的支持  
    16. –with-xmlrpc              打開xml-rpc的c語言  
    17. –with-zlib-dir                                 打開zlib庫的支持  
    18. –with-gd                                    打開gd庫的支持  
    19. –enable-gd-native-ttf               支持TrueType字符串函數庫  
    20. –with-curl                      打開curl瀏覽工具的支持  
    21. –with-curlwrappers                 運用curl工具打開url流  
    22. –with-ttf                      打開freetype1.*的支持,可以不加了  
    23. –with-xsl            打開XSLT 文件支持,擴展了libxml2庫 ,需要libxslt軟件  
    24. –with-gettext                      打開gnu 的gettext 支持,編碼庫用到  
    25. –with-pear            打開pear命令的支持,php擴展用的  
    26. –enable-calendar             打開日曆擴展功能  
    27. –enable-mbstring                  多字節,字符串的支持  
    28. –enable-bcmath                  打開圖片大小調整,用到zabbix監控的時候用到了這個模塊  
    29. –enable-sockets                  打開 sockets 支持  
    30. –enable-exif                      圖片的元數據支持  
    31. –enable-magic-quotes               魔術引用的支持  
    32. –disable-rpath                     關閉額外的運行庫文件  
    33. –disable-debug                  關閉調試模式  
    34. –with-mime-magic=/usr/share/file/magic.mime      魔術頭文件位置  
    35. cgi方式安裝才用的參數  
    36. –enable-fpm                     打上php-fpm 補丁後纔有這個參數,cgi方式安裝的啓動程序  
    37. –enable-fastcgi                  支持fastcgi方式啓動php  
    38. –enable-force-cgi-redirect             同上 ,幫助裏沒有解釋  
    39. –with-ncurses                     支持ncurses 屏幕繪製以及基於文本終端的圖形互動功能的動態庫  
    40. –enable-pcntl           freeTDS需要用到的,可能是鏈接mssql 纔用到  
    41. mhash和mcrypt算法的擴展  
    42. –with-mcrypt                     算法  
    43. –with-mhash                     算法  
    44. –with-gmp  
    45. –enable-inline-optimization  
    46. –with-openssl           openssl的支持,加密傳輸時用到的  
    47. –enable-dbase  
    48. –with-pcre-dir=/usr/local/bin/pcre-config    perl的正則庫案安裝位置  
    49. –disable-dmalloc  
    50. –with-gdbm                    dba的gdbm支持  
    51. –enable-sigchild  
    52. –enable-sysvsem  
    53. –enable-sysvshm  
    54. –enable-zend-multibyte              支持zend的多字節  
    55. –enable-mbregex  
    56. –enable-wddx  
    57. –enable-shmop  
    58. –enable-soap  
    59. PHP配置選項完整列表  
    60. 數據庫選項  
    61. –with-dbplus  
    62. 包括 dbplus 的支持。  
    63. –with-adabas[=DIR]  
    64. 包括 Adabas D 的支持。DIR 是 Adabas 的基本安裝目錄,默認爲 /usr/local。  
    65. –with-sapdb[=DIR]  
    66. 包括 SAP DB 的支持。DIR 是 SAP DB 的基本安裝目錄,默認爲 /usr/local。  
    67. –with-solid[=DIR]  
    68. 包括 Solid 的支持。DIR 是 Solid 的基本安裝目錄,默認爲 /usr/local/solid。  
    69. –with-ibm-db2[=DIR]  
    70. 包括 IBM DB2 的支持。DIR 是 DB2 的基本安裝目錄,默認爲 /home/db2inst1/sqllib。  
    71. –with-empress[=DIR]  
    72. 包括 Empress 的支持。DIR 是 Empress 的基本安裝目錄,默認爲 $EMPRESSPATH。自 PHP4 起,本選項僅支持 Empress 8.60 及以上版本。  
    73. –with-empress-bcs[=DIR]  
    74. 包括 Empress Local Access 的支持。DIR 是 Empress 的基本安裝目錄,默認爲 $EMPRESSPATH。自 PHP4 起,本選項僅支持 Empress 8.60 及以上版本。  
    75. –with-birdstep[=DIR]  
    76. 包括 Birdstep 的支持。DIR 是 Birdstep 的基本安裝目錄,默認爲 /usr/local/birdstep。  
    77. –with-custom-odbc[=DIR]  
    78. 包 括用戶自定義 ODBC 的支持。DIR 是 ODBC 的基本安裝目錄,默認爲 /usr/local。要確認定義了 CUSTOM_ODBC_LIBS 並且在 include 目錄中有某個 odbc.h。例如,對於 QNX 下的 Sybase SQL Anywhere 5.5.00,在運行 configure 腳本之前應該先定義以下環境變量: CPPFLAGS=”-DODBC_QNX -DSQLANY_BUG” LDFLAGS=-lunix CUSTOM_ODBC_LIBS=”-ldblib -lodbc”.  
    79. –with-iodbc[=DIR]  
    80. 包括 iODBC 的支持。DIR 是 iODBC 的基本安裝目錄,默認爲 /usr/local。  
    81. –with-esoob[=DIR]  
    82. 包括 Easysoft OOB 的支持。DIR 是 OOB 的基本安裝目錄,默認爲 /usr/local/easysoft/oob/client。  
    83. –with-unixODBC[=DIR]  
    84. 包括 unixODBC 的支持。DIR 是 unixODBC 的基本安裝目錄,默認爲 /usr/local。  
    85. –with-openlink[=DIR]  
    86. 包括 OpenLink ODBC 的支持。DIR 是 OpenLink 的基本安裝目錄,默認爲 /usr/local。這和 iODBC 一樣。  
    87. –with-dbmaker[=DIR]  
    88. 包括 DBMaker 的支持。DIR 是 DBMaker 的基本安裝目錄,默認爲最新版 DBMaker 安裝的目錄(例如 /home/dbmaker/3.6)。  
    89. –disable-unified-odbc  
    90. 取消對 unified ODBC 的支持。僅適用於激活了 iODBC,Adabas,Solid,Velocis 或用戶自定義 ODBC 界面。僅能用於 PHP 3!  
    91. 圖像選項  
    92. –without-gd  
    93. 禁用 GD 支持。僅用於 PHP 3!  
    94. –with-imagick  
    95. Imagick 擴展被移到 PEAR 中的 PECL 中去了,可以在這裏找到。PHP 4 中的安裝指示可以在 PEAR 站點中找到。  
    96. 只用 –with-imagick 僅在 PHP 3 中支持,除非依照 PEAR 站點的指示去做。  
    97. –with-ming[=DIR]  
    98. 包括 ming 支持。  
    99. 雜類選項  
    100. –enable-force-cgi-redirect  
    101. 激活服務器內部重定向的安全檢查。如果是在 Apache 中以 CGI 方式使用 PHP 則應該使用此選項。  
    102. –enable-discard-path  
    103. 使用此選項可以使 PHP 的 CGI 可執行程序安全地放置在 web 目錄樹以外的地方,並且別人也不能繞過 .htaccess 的安全設置。  
    104. –with-fastcgi  
    105. 將 PHP 編譯成 FastCGI 應用程序。  
    106. –enable-debug  
    107. 編譯時加入調試符號。  
    108. –with-layout=TYPE  
    109. 設置安裝後的文件佈局。TYPE 可以是 PHP(默認值)或者 GNU。  
    110. –with-pear=DIR  
    111. 將 PEAR 安裝在 DIR 目錄中(默認爲 PREFIX/lib/php)。  
    112. –without-pear  
    113. 不安裝 PEAR。  
    114. –enable-sigchild  
    115. 激活 PHP 自己的 SIGCHLD 句柄。  
    116. –disable-rpath  
    117. 禁止傳遞附加的運行時庫搜索路徑。  
    118. –enable-libgcc  
    119. 激活顯式 libgcc 連接。  
    120. –enable-php-streams  
    121. 包含試驗的 PHP 流。除非是測試源代碼,否則不要使用!  
    122. –with-zlib-dir=<DIR>;  
    123. 定義 zlib 的安裝路徑。  
    124. –with-aspell[=DIR]  
    125. 包含 ASPELL 支持。  
    126. –with-ccvs[=DIR]  
    127. 包含 CCVS 支持。  
    128. –with-cybercash[=DIR]  
    129. 包含 CyberCash 支持。DIR 是 CyberCash MCK 的安裝目錄。  
    130. –with-icap[=DIR]  
    131. 包含 ICAP 支持。  
    132. –with-ircg-config  
    133. ircg-config 腳本的路徑。  
    134. –with-ircg  
    135. 包含 ircg 支持。  
    136. –enable-mailparse  
    137. 包含 mailparse 支持。  
    138. –with-muscat[=DIR]  
    139. 包含 muscat 支持。  
    140. –with-satellite[=DIR]  
    141. 激活通過 Satellite(試驗性質)的 CORBA 支持。DIR 是 ORBit 的主目錄。  
    142. –enable-trans-sid  
    143. 激活透明的 session id 傳播。  
    144. –with-regex[=TYPE]  
    145. 使用系統 regex 庫(不贊成)。  
    146. –with-vpopmail[=DIR]  
    147. 包含 vpopmail 支持。  
    148. –with-tsrm-pthreads  
    149. 使用 POSIX 線程(默認值)。  
    150. –enable-shared[=PKGS]  
    151. 編譯共享庫 [default=yes]。  
    152. –enable-static[=PKGS]  
    153. 編譯靜態庫 [default=yes]。  
    154. –enable-fast-install[=PKGS]  
    155. 爲快速安裝而優化 [default=yes]。  
    156. –with-gnu-ld  
    157. 假定 C 編譯器使用 GNU ld [default=no]。  
    158. –disable-libtool-lock  
    159. 避免鎖死(可能會破壞並行編譯)。  
    160. –with-pic  
    161. 嘗試只使用 PIC/non-PIC 對象 [default=use both]。  
    162. –enable-memory-limit  
    163. 編譯時加入內存限制支持。  
    164. –disable-url-fopen-wrapper  
    165. 禁止通過 URL 的 fopen wrapper,不能通過 HTTP 或 FTP 訪問文件。  
    166. –enable-versioning  
    167. 僅輸出所需要的符號。更多信息見 INSTALL 文件。  
    168. –with-imsp[=DIR]  
    169. 包含 IMSp 支持(DIR 是 IMSP 的 include 目錄和 libimsp.a 目錄)。僅用於 PHP 3!  
    170. –with-mck[=DIR]  
    171. 包含 Cybercash MCK 支持。DIR 是 cybercash mck 編譯目錄,默認爲 /usr/src/mck-3.2.0.3-linux。幫助見 extra/cyberlib。僅用於 PHP 3!  
    172. –with-mod-dav=DIR  
    173. 包含通過 Apache 的 mod_dav 的 DAV 支持。DIR 是 mod_dav 的安裝目錄(僅用於 Apache 模塊版本!)僅用於 PHP 3!  
    174. –enable-debugger  
    175. 編譯入遠程調試函數。僅用於 PHP 3!  
    176. –enable-versioning  
    177. 利用 Solaris 2.x 和 Linux 提供的版本控制與作用範圍的優勢。僅用於 PHP 3!  
    178. PHP 選項  
    179. –enable-maintainer-mode  
    180. 激活將編譯規則和未使用的(以及一些混淆的)依賴文件放入臨時安裝中。  
    181. –with-config-file-path=PATH  
    182. 設定 php.ini 所在的路徑,默認爲 PREFIX/lib。  
    183. –enable-safe-mode  
    184. 默認激活安全模式。  
    185. –with-exec-dir[=DIR]  
    186. 安全模式下只允許此目錄下執行程序。默認爲 /usr/local/php/bin。  
    187. –enable-magic-quotes  
    188. 默認激活 magic quotes。  
    189. –disable-short-tags  
    190. 默認禁止簡寫的 PHP 開始標記 <?。  
    191. 服務器選項  
    192. –with-aolserver=DIR  
    193. 指定已安裝的 AOLserver 的路徑。  
    194. –with-apxs[=FILE]  
    195. 編譯共享 Apache 模塊。FILE 是可選的 Apache 的 apxs 工具的路徑,默認爲 apxs。確保指定的 apxs 版本是安裝後的文件而不是 Apache 源程序中包中的。  
    196. –with-apache[=DIR]  
    197. 編譯 Apache 模塊。DIR 是 Apache 源程序的最高一級目錄。默認爲 /usr/local/apache。  
    198. –with-mod_charset  
    199. 激活 mod_charset 中的傳遞表(Apache 中)。  
    200. –with-apxs2[=FILE]  
    201. 編譯共享的 Apache 2.0 模塊。FILE 是可選的 Apache 的 apxs 工具的路徑,默認爲 apxs。  
    202. –with-fhttpd[=DIR]  
    203. 編譯 fhttpd 模塊。DIR 是 fhttpd 的源代碼路徑,默認爲 /usr/local/src/fhttpd。  
    204. –with-isapi=DIR  
    205. 將 PHP 編譯爲 ISAPI 模塊用於 Zeus。  
    206. –with-nsapi=DIR  
    207. 指定已安裝的 Netscape 服務器路徑。  
    208. –with-phttpd=DIR  
    209. 暫無信息。  
    210. –with-pi3web=DIR  
    211. 將 PHP 編譯爲用於 Pi3Web 的模塊。  
    212. –with-roxen=DIR  
    213. 將 PHP 編譯爲一個 Pike 模塊。DIR 是 Roxen 的根目錄,通常爲 /usr/local/roxen/server。  
    214. –enable-roxen-zts  
    215. 編譯 Roxen 模塊,使用 Zend Thread Safety。  
    216. –with-servlet[=DIR]  
    217. 包含 servlet 支持。DIR 是 JSDK 的基本安裝目錄。本 SAPI 需要 java 擴展必須被編譯爲共享的 dl。  
    218. –with-thttpd=SRCDIR  
    219. 將 PHP 編譯爲 thttpd 模塊。  
    220. –with-tux=MODULEDIR  
     
  7. 向php傳入參數的兩種方法。
  8. (mysql)請寫出數據類型(int char varchar datetime text)的意思; 請問varchar和char有什麼區別;
    Sql代碼  收藏代碼
    1. char是一種固定長度的類型,varchar則是一種可變長度的類型,它們的區別是:  
    2.   
    3. char(M)類型的數據列裏,每個值都佔用M個字節,如果某個長度小於M,MySQL就會在它的右邊用空格字符補足.(在檢索操作中那些填補出來的空格字符將被去掉)在varchar(M)類型的數據列裏,每個值只佔用剛好夠用的字節再加上一個用來記錄其長度的字節(即總長度爲L+1字節).  
    4.   
    5. 在MySQL中用來判斷是否需要進行對據列類型轉換的規則  
    6.   
    7.   1、在一個數據表裏,如果每一個數據列的長度都是固定的,那麼每一個數據行的長度也將是固定的.  
    8.   2、只要數據表裏有一個數據列的長度的可變的,那麼各數據行的長度都是可變的.  
    9.   3、如果某個數據表裏的數據行的長度是可變的,那麼,爲了節約存儲空間,MySQL會把這個數據表裏的固定長度類型的數據列轉換爲相應的可變長度類型.  
    10. 例外:長度小於4個字符的char數據列不會被轉換爲varchar類型  
    11.   
    12. 一個定長  
    13. 一個不定長  
    14. char(10)  
    15. varchar(10)  
    16. 都存入'abc'  
    17. a 10字節  
    18. b 3字節   
     
  9. error_reporting 等調試函數使用
  10. 您是否用過版本控制軟件? 如果有您用的版本控制軟件的名字是?
  11. posix和perl標準的正則表達式區別;
    Php代碼  收藏代碼
    1. 正則表達式(Regular Expression,縮寫爲regexp,regex或regxp),又稱正規表達式、正規表示式或常規表達式或正規化表示法或正規表示法,是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串 。在很多文本編輯器或其他工具裏,正則表達式通常被用來檢索和/或替換那些符合某個模式的文本內容 。許多程序設計語言都支持利用正則表達式進行字符串操作。例如,在Perl中就內建了一個功能強大的在正則表達式引擎。正則表達式這個概念最初是由 Unix中的工具軟件(例如sed和grep)普及開的。(摘自維基百科)  
    2.   
    3. PHP同時使用兩套正則表達式規則,一套是由電氣和電子工程師協會(IEEE)制定的POSIX Extended 1003.2兼容正則(事實上PHP對此標準的支持並不完善),另一套來自PCRE(Perl Compatible Regular Expression)庫提供PERL兼容正則,這是個開放源代碼的軟件,作者爲 Philip Hazel。  
    4.   
    5. 使用POSIX兼容規則的函數有:  
    6. ereg_replace()  
    7. ereg()  
    8. eregi()  
    9. eregi_replace()  
    10. split()  
    11. spliti()  
    12. sql_regcase()  
    13. mb_ereg_match()  
    14. mb_ereg_replace()  
    15. mb_ereg_search_getpos()  
    16. mb_ereg_search_getregs()  
    17. mb_ereg_search_init()  
    18. mb_ereg_search_pos()  
    19. mb_ereg_search_regs()  
    20. mb_ereg_search_setpos()  
    21. mb_ereg_search()  
    22. mb_ereg()  
    23. mb_eregi_replace()  
    24. mb_eregi()  
    25. mb_regex_encoding()  
    26. mb_regex_set_options()  
    27. mb_split()  
    28.   
    29. 使用PERL兼容規則的函數有:  
    30. preg_grep()  
    31. preg_replace_callback()  
    32. preg_match_all()  
    33. preg_match()  
    34. preg_quote()  
    35. preg_split()  
    36. preg_replace()  
    37.   
    38. 定界符:  
    39.   
    40. POSIX兼容正則沒有定界符,函數的相應參數會被認爲是正則。  
    41.   
    42. PERL兼容正則可以使用任何不是字母、數字或反斜線(\)的字符作爲定界符,如果作爲定界符的字符必須被用在表達式本身中,則需要用反斜線轉義。也可以使用(),{},[] 和 <> 作爲定界符  
    43.   
    44. 修正符:  
    45.   
    46. POSIX兼容正則沒有修正符。  
    47.   
    48. PERL兼容正則中可能使用的修正符(修正符中的空格和換行被忽略,其它字符會導致錯誤):  
    49.   
    50. i (PCRE_CASELESS):  
    51. 匹配時忽略大小寫。  
    52.   
    53. m(PCRE_MULTILINE):  
    54. 當設定了此修正符,行起始(^)和行結束($)除了匹配整個字符串開頭和結束外,還分別匹配其中的換行符(\n)的之後和之前。  
    55.   
    56. s(PCRE_DOTALL):  
    57. 如果設定了此修正符,模式中的圓點元字符(.)匹配所有的字符,包括換行符。沒有此設定的話,則不包括換行符。  
    58.   
    59. x(PCRE_EXTENDED):  
    60. 如果設定了此修正符,模式中的空白字符除了被轉義的或在字符類中的以外完全被忽略。  
    61.   
    62. e:  
    63. 如果設定了此修正符,preg_replace() 在替換字符串中對逆向引用作正常的替換,將其作爲 PHP 代碼求值,並用其結果來替換所搜索的字符串。 只有 preg_replace() 使用此修正符,其它 PCRE 函數將忽略之。  
    64.   
    65. A(PCRE_ANCHORED):  
    66. 如果設定了此修正符,模式被強制爲“anchored”,即強制僅從目標字符串的開頭開始匹配。  
    67.   
    68. D(PCRE_DOLLAR_ENDONLY):  
    69. 如果設定了此修正符,模式中的行結束($)僅匹配目標字符串的結尾。沒有此選項時,如果最後一個字符是換行符的話,也會被匹配在裏面。如果設定了 m 修正符則忽略此選項。  
    70.   
    71. S:  
    72. 當一個模式將被使用若干次時,爲加速匹配起見值得先對其進行分析。如果設定了此修正符則會進行額外的分析。目前,分析一個模式僅對沒有單一固定起始字符的 non-anchored 模式有用。  
    73.   
    74. U(PCRE_UNGREEDY):  
    75. 使“?”的默認匹配成爲貪婪狀態的。  
    76.   
    77. X(PCRE_EXTRA):  
    78. 模式中的任何反斜線後面跟上一個沒有特殊意義的字母導致一個錯誤,從而保留此組合以備將來擴充。默認情況下,一個反斜線後面跟一個沒有特殊意義的字母被當成該字母本身。  
    79.   
    80. u(PCRE_UTF8):  
    81. 模式字符串被當成UTF-8。  
    82.   
    83. 邏輯區隔:  
    84.   
    85. POSIX兼容正則和PERL兼容正則的邏輯區隔符號作用和使用方法完全一致:  
    86. []:包含任選一操作的相關信息。  
    87. {}:包含匹配次數的相關信息。  
    88. ():包含一個邏輯區間的相關信息,可被用來進行引用操作。  
    89. |:表示“或”,[ab]和a|b是等價的。  
    90.   
    91. 元字符與“[]”相關:  
    92.   
    93. 有兩組不同的元字符:一種是模式中除了方括號內都能被識別的,還有一種是在方括號“[]”內被識別的。  
    94.   
    95. POSIX兼容正則和PERL兼容正則“[]之外”“一致”的元字符:  
    96. \ 有數種用途的通用轉義符  
    97. ^ 匹配字符串的開頭  
    98. $ 匹配字符串的結尾  
    99. ? 匹配0或者1  
    100. * 匹配 0 個或多個前面指定類型的字符  
    101. + 匹配 1 個或多個前面指定類型的字符  
    102.   
    103. POSIX兼容正則和PERL兼容正則“[]之外”“不一致”的元字符:  
    104. . PERL兼容正則匹配除了換行符外的任意一個字符  
    105. . POSIX兼容正則匹配任意一個字符  
    106.   
    107. POSIX兼容正則和PERL兼容正則“[]之內”“一致”的元字符:  
    108. \ 有數種用途的通用轉義符  
    109. ^ 取反字符,但僅當其爲第一個字符時有效  
    110. - 指定字符ASCII範圍,仔細研究ASCII碼,你會發現[W-c]等價於[WXYZ\\^_`abc]  
    111.   
    112. POSIX兼容正則和PERL兼容正則“[]之內”“不一致”的元字符:  
    113. - POSIX兼容正則中[a-c-e]的指定會拋出錯誤。  
    114. - PERL兼容正則中[a-c-e]的指定等價於[a-e]。  
    115.   
    116. 匹配次數與“{}”相關:  
    117.   
    118. POSIX兼容正則和PERL兼容正則在匹配次數方面完全一致:  
    119. {2}:表示匹配前面的字符2次  
    120. {2,}:表示匹配前面的字符2次或多次,默認都是貪婪(儘可能多)的匹配  
    121. {2,4}:表示匹配前面的字符2次或4次  
    122.   
    123. 邏輯區間與“()”相關:  
    124.   
    125. 使用()包含起來的區域是一個邏輯區間,邏輯區間的主要作用是體現出一些字符出現的邏輯次序,另一個用處就是可以用來引用(可以將此區間內的值引用給一個變量)。後一個作用比較奇特:  
    126. <?php  
    127. $str = "http://www.163.com/";  
    128. // POSIX兼容正則:  
    129. echo ereg_replace("(.+)","<a href = \\1 >\\1</a>",$str);  
    130. // PERL兼容正則:  
    131. echo preg_replace("/(.+)/","<a href = $1 >$1</a>",$str);  
    132. // 顯示兩個鏈接  
    133. ?>  
    134.   
    135. 在引用的時候,括號是可以嵌套的,邏輯次序是按照“(”出現的次序來標定的。  
    136.   
    137. 類型匹配:  
    138.   
    139. POSIX兼容正則:  
    140. [:upper:]:匹配所有的大寫字母  
    141. [:lower:]:匹配所有的小寫字母  
    142. [:alpha:]:匹配所有的字母  
    143. [:alnum:]:匹配所有的字母和數字  
    144. [:digit:]:匹配所有的數字  
    145. [:xdigit:]:匹配所有的十六進制字符,等價於[0-9A-Fa-f]  
    146. [:punct:]:匹配所有的標點符號,等價於 [.,"'?!;:]  
    147. [:blank:]:匹配空格和TAB,等價於[ \t]  
    148. [:space:]:匹配所有的空白字符,等價於[ \t\n\r\f\v]  
    149. [:cntrl:]:匹配所有ASCII 0到31之間的控制符。  
    150. [:graph:]:匹配所有的可打印字符,等價於:[^ \t\n\r\f\v]  
    151. [:print:]:匹配所有的可打印字符和空格,等價於:[^\t\n\r\f\v]  
    152. [.c.]:功能不明  
    153. [=c=]:功能不明  
    154. [:<:]:匹配單詞的開始  
    155. [:>:]:匹配單詞的結尾  
    156.   
    157. PERL兼容正則(這裏可以看出PERL正則的強大):  
    158. \a alarm,即 BEL 字符(’0)  
    159. \cx "control-x",其中 x 是任意字符  
    160. \e escape(’0B)  
    161. \f 換頁符 formfeed(’0C)  
    162. \n 換行符 newline(’0A)  
    163. \r 回車符 carriage return(’0D)  
    164. \t 製表符 tab(’0)  
    165. \xhh 十六進制代碼爲 hh 的字符  
    166. \ddd 八進制代碼爲 ddd 的字符,或 backreference  
    167. \d 任一十進制數字  
    168. \D 任一非十進制數的字符  
    169. \s 任一空白字符  
    170. \S 任一非空白字符  
    171. \w 任一“字”的字符  
    172. \W 任一“非字”的字符  
    173. \b 字分界線  
    174. \B 非字分界線  
    175. \A 目標的開頭(獨立於多行模式)  
    176. \Z 目標的結尾或位於結尾的換行符前(獨立於多行模式)  
    177. \z 目標的結尾(獨立於多行模式)  
    178. \G 目標中的第一個匹配位置  
     
  12. Safe_mode 打開後哪些地方受限.
  13. 寫代碼來解決多進程/線程同時讀寫一個文件的問題。
    Php代碼  收藏代碼
    1. 大家都知道,PHP是沒有多線程概念的,儘管如此我們仍然可以用“不完美”的方法來模擬多線程。簡單的說,就是隊列處理。通過對文件進行加鎖和解鎖,來實現。當一個文件被一個用戶操作時,該文件是被鎖定的,其他用戶只能等待,確實不夠完美,但是也可以滿足一些要求不高的應用。  
    2. function T_put($filename,$string){  
    3. $fp = fopen($filename,’a'); //追加方式打開  
    4. if (flock($fp, LOCK_EX)){ //加寫鎖  
    5. fputs($fp,$string); //寫文件  
    6. flock($fp, LOCK_UN); //解鎖  
    7. }  
    8. fclose($fp);  
    9. }  
    10. function T_get($filename,$length){  
    11. $fp = fopen($filename,’r'); //追加方式打開  
    12. if (flock($fp, LOCK_SH)){ //加讀鎖  
    13. $result = fgets($fp,$length); //讀取文件  
    14. flock($fp, LOCK_UN); //解鎖  
    15. }  
    16. fclose($fp);  
    17. return $result;  
    18. }  
     
  14. 寫一段上傳文件的代碼。
  15. Mysql 的存儲引擎,myisam和innodb的區別。 
    Sql代碼  收藏代碼
    1. 簡單的表達。  
    2. MyISAM 是非事務的存儲引擎。  
    3. innodb是支持事務的存儲引擎。  
    4.   
    5. innodb的引擎比較適合於插入和更新操作比較多的應用  
    6. 而MyISAM 則適合用於頻繁查詢的應用  
    7.   
    8. MyISAM --表鎖。  
    9. innodb--設計合理的話是行鎖。  
    10. MyISAM 不會出現死鎖。  
    11.   
    12. 最大的區別就是MYISAM適合小數據,小併發;INNODB 適合大數據,大併發。最大的區別就是在鎖的級別上。  
    13.   
    14. MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。 MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但是不提供事務支持,而InnoDB提供事務支持已經外部鍵等高級數據庫功能。綜述,就可以根據數據表不同的用處是用不同的存儲類型。而且MyISAM是文件存儲的,可以進行直接在不同操作系統間拷貝使用。  
    15.    
    16. InnoDB:  
    17. InnoDB 給 MySQL 提供了具有事務(commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)的事務安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行鎖(locking on row level),提供與 Oracle 類型一致的不加鎖讀取(non-locking read in SELECTs)。這些特性均提高了多用戶併發操作的性能表現。在InnoDB表中不需要擴大鎖定(lock escalation),因爲 InnoDB 的列鎖定(row level locks)適宜非常小的空間。InnoDB 是 MySQL 上第一個提供外鍵約束(FOREIGN KEY constraints)的表引擎。InnoDB 的設計目標是處理大容量數據庫系統,它的 CPU 利用率是其它基於磁盤的關係數據庫引擎所不能比的。在技術上,InnoDB 是一套放在 MySQL 後臺的完整數據庫系統,InnoDB 在主內存中建立其專用的緩衝池用於高速緩衝數據和索引。 InnoDB 把數據和索引存放在表空間裏,可能包含多個文件,這與其它的不一樣,舉例來說,在 MyISAM 中,表被存放在單獨的文件中。InnoDB 表的大小隻受限於操作系統的文件大小,一般爲 2 GB。InnoDB所有的表都保存在同一個數據文件 ibdata1 中(也可能是多個文件,或者是獨立的表空間文件),相對來說比較不好備份,可以拷貝文件或用navicat for mysql。  
    18.    
    19. MyISAM  
    20. 每張MyISAM 表被存放在三個文件 :frm 文件存放表格定義。 數據文件是MYD (MYData) 。 索引文件是MYI (MYIndex) 引伸。  
    21. 因爲MyISAM相對簡單所以在效率上要優於InnoDB,小型應用使用MyISAM是不錯的選擇。  
    22. MyISAM表是保存成文件的形式,在跨平臺的數據轉移中使用MyISAM存儲會省去不少的麻煩  
     

2. web 架構,安全,項目經驗

  1. 介紹xdebug,apc,eAccelerator,Xcache,Zend opt的使用經驗。
  2. 使用mod_rewrite,在服務器上沒有/archivers/567.html這個物理文件時,重定向到index.php?id=567 ,請先打開mod_rewrite.
  3. MySQL數據庫作發佈系統的存儲,一天五萬條以上的增量,預計運維三年,怎麼優化?
  4. 寫出一種排序算法(原理),並說出優化它的方法。
  5. 請簡單闡述您最得意的開發之作
  6. 對於大流量的網站,您採用什麼樣的方法來解決各頁面訪問量統計問題
  7. 您是否用過模板引擎? 如果有您用的模板引擎的名字是?
  8. 請介紹Session的原理,大型網站中Session方面應注意什麼?
  9. 測試php性能和mysql數據庫性能的工具,和找出瓶頸的方法。
  10. 正則提出一個網頁中的所有鏈接.
  11. 介紹一下常見的SSO(單點登陸)方案(比如dedecms整合discuz的passport)的原理。
  12. 您寫過的PHP框架的特點,主要解決什麼問題,與其他框架的不同點。
  13. 大型的論壇/新聞文章系統/SNS網站在性能優化上有什麼區別?
  14. 相冊類應用:要求在瀏覽器中能同時選中並上傳多個文件,圖片要求能剪裁,壓縮包在服務器端解壓。能上傳單個達50M的文件。上傳過程中有進度條顯示。每個圖片能生成四種大小縮略圖,視頻文件要轉成flv供flash播放。敘述要涉及的各類開源軟件和簡單用途。
  15. 一 羣猴子排成一圈,按1,2,…,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停的 進行下去,直到最後只剩下一隻猴子爲止,那隻猴子就叫做大王。要求編程模擬此過程,輸入m、n, 輸出最後那個大王的編號。用程序模擬該過程。

3. unix/linux 基本使用

  1. linux下查看當前系統負載信息的一些方法。
  2. vim的基本快捷鍵。
  3. ssh 安全增強方法;密碼方式和rsa key 方式的配置。
  4. rpm/apt/yum/ports 裝包,查詢,刪除的基本命令。
  5. Makefile的基本格式,gcc 編譯,連接的命令,-O0 和-O3區別。
  6. gdb,strace,valgrind的基本使用.

 

4. 前端,HTML,JS

  1. css盒模型。
  2. javascript中的prototype。
  3. javascript中this對象的作用域。
  4. IE和firefox事件冒泡的不同。
  5. 什麼是怪異模式,標準模式,近標準模式。
  6. DTD的定義
  7. IE/firefox常用hack.
  8. firefox,IE下的前端js/css調試工具。
發佈了61 篇原創文章 · 獲贊 0 · 訪問量 2693
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章