1. 程式人生 > >PHP中級程式設計師常見面試題

PHP中級程式設計師常見面試題

1、寫一個函式,儘可能高效的,從一個標準url裡取出檔案的副檔名例如: http://www.test.com.cn/abc/de/fg.php?id=1需要取出php或.php

答: 1、$a="http://www.test.com.cn/abc/de/fg.php?id=1";    

2、$b=parse_url($a);

3、Echo substr($b['path'],strpos($b['path'],'.')); 或者:

4、Echo end(explode('.',$b['path']));

2、描述一下大流量高併發量網站的解決方案

答: 1、確認伺服器硬體是否足夠支援當前的流量。

2、使用memcache快取技術,將動態資料快取到記憶體中,動態網頁直接呼叫這些檔案,而不必在訪問資料庫。

3、禁止外部的盜鏈。

4、外部網站的圖片或者檔案盜鏈往往會帶來大量的負載壓力,因此應該嚴格限制外部對自身圖片或者檔案盜鏈,目前可以簡單的通過refer來控制盜 鏈,apache自己就可以通過配置來禁止盜鏈。

5、控制大檔案的下載。 大檔案的下載會佔用很大的流量,對於非SCSI硬碟來說會消耗,使得網站響應能力下降。

6、使用不同的主機分流主要流量

7、使用流量統計軟體。 在網站上安裝一個流量統計軟體,可以即時知道哪些地方耗費了大量流量,哪些頁面需要再進行優化。

8、分庫分表。

9、Sphinx全文索引引擎。

如何設計或配置Mysql,才能達到高效使用的目的。

答:

1、資料庫設計方面,設計結構良好的資料庫,允許部分資料冗餘。 選取最適用的欄位屬性,儘可能把欄位設定為NOTNULL,這樣在查詢的時候,資料庫不用去比較NULL值。

2、系統架構設計方面,表雜湊,把海量資料雜湊到幾個不同的表裡面,叢集,資料庫查詢和寫入分開。 寫高效sql語句,以提高效率。使用連線(join)來代替子查詢使用聯合(union)來代替手動建立的臨時表所得皆必須,只從資料庫取必須的資料。必 要的時候用不同的儲存引擎,比如Innodb可以減少死鎖,HEAP可以提高一個數量級的查詢速度。

使用事務使用外來鍵使用索引24.如何進行防SQL注 入?

答:

1、過濾掉一些常見的資料庫操作關鍵字:select,insert,update,delete,and,*等或者通過系統函 數:addslashes(需要被過濾的內容)來進行過濾。

2、在PHP配置檔案中Register_globals=off;設定為關閉狀態 //作用將註冊全域性變數關閉。比如:接收POST表單的值使用$_POST['user'],如果將register_globals=on;直接使 用$user可以接收表單的值。

3、SQL語句書寫的時候儘量不要省略小引號(tab鍵上面那個)和單引號

4、提高資料庫命名技巧,對於一些重要的欄位根據程式的特點命名,取不易被猜到的

5、對於常用的方法加以封裝,避免直接暴漏SQL語句

6、開啟PHP安全模式Safe_mode=on;

7、開啟magic_quotes_gpc來防止SQL注入 Magic_quotes_gpc=off;預設是關閉的,它開啟後將自動把使用者提交的sql語句的查詢進行轉換,把'轉為\',這對防止sql注入有重 大作用。因此開啟:magic_quotes_gpc=on;

8、控制錯誤資訊關閉錯誤提示資訊,將錯誤資訊寫到系統日誌。

9、使用mysqli或pdo預處理。

用PHP寫出一個安全的使用者登入系統需要注意哪些方面。

答:

1、密碼要使用MD5(密碼+字串)進行加 密。

2、登入表單的名稱不要跟資料庫欄位一樣,以免暴漏表字段。

3、使用者表的表名、欄位名、密碼儘量用不容易被猜到的。

4、要使用驗證碼驗證登陸,以防止 暴力破解。

5、驗證提交的資料是不是來自本網站。

6、登入後臺處理程式碼資料庫部分使用預處理,做好過濾,防止sql注入。

使用過哪些PHP框架。試 描述其優劣點。

答:

1、BroPHP框架:優點:輕量級學習型框架,配置簡單,操作簡單,容易上手,提供了比較全面的文件。缺點:

2、ThinkPHP框 架:優點:功能比較全面,配置相對比較簡單,操作相對比較簡單,有很多使用示例程式。缺點:提供的操作方法太多,新手不知如何選擇,文件不夠全面。

用過哪些版本控制工具?

答:使用過SVN版本控制器。

輸出為Mozilla/4.0(compatible;MSIE5.01;Window NT 5.0)時,可能的輸出語句是:B

A.$_SERVER['HTTP_USER_AGENT_TYPE'];

B. $_SERVER['HTTP_USER_AGENT'];

C. $_SERVER['USER_AGENT'];

D. $_SERVER['AGENT'];

下面功能PHP無法實現的是:D

A. 伺服器端指令碼執行

B. 命令列指令碼執行

C. 客戶端圖形介面(GUI)程式

D. 瀏覽器端執行DOM操作

下面說法不正確的是:C

A. PHP有四種標量型別:布林型(boolean),整型(integer),浮點型(float),字串(string)

B. 浮點型(float)與雙精度型(double)是同一種類型

C. 符合型別包括:陣列(array),物件(object),資源(resource)

D. 偽型別:混合型(mixed),數字型(number),回撥(callback)

下面不是PHP語法的組成部分的函式是:AD

A. array B. eval C. each D. list

執行下面的程式碼的結果是什麼?A

A. boolean

B. boolean0

C. booleanFALSE

D. booleanfalse

SESSION與 COOKIE的區別是什麼,請從協議,產生的原因與作用說明?

答:
1、http無狀態協議,不能區分使用者是否是從同一個網站上來的,同一個使用者請求不同的 頁面不能看做是同一個使用者。

2、SESSION儲存在伺服器端,COOKIE儲存在客戶端,SESSION依賴COOKIE進行傳輸,如果COOKIE被 禁用了,SESSION將不能繼續使用。

HTTP狀態中302、403、 500程式碼含義?

答:

300重定向、403伺服器拒絕訪問、500伺服器內部錯誤。

Linux 下建立壓縮包,解壓縮包的命令。

答:
1、壓縮:gzip 、tar -cvfz、zip、bzip22、解壓:gunzip、tar -zxvf、unzip、bunzip2
$a=3;$b=4; if($a||$b=5){ ||或和|的區別 echo 'todo'; } $b的值是(a):
A a. 4; b. 5; c. 3; d. false

什麼是面向物件?主要特徵是什麼?

答:
1、面向物件是程式的一種設計方式,它利於提高程式的重用性,是程式結構更加清晰。
2、主要特徵:封裝、繼承、多型。