PHP面試題收集

技術小胖子發表於2017-11-07

提示:答案不唯一,祝各位PHPer找到稱心的好工作!


1、PHP是啥東東?(PHP的意思)

1
PHP是一個基於服務端來建立動態網站的指令碼語言。(PHP原始為Personal Home Page的縮寫,已經正式更名為 "PHP: Hypertext Preprocessor"

2、PHP獲取客戶端和伺服器端IP?

客戶端:$_SEVER[`REMOTE_ADDR`] 服務端:$_SERVER["SERVER_ADDR"]

3、PHP如何檢測一個日期的有效性?

var_dump(checkdate(11,21,2012)); //返回true or false

4、資料庫去除重複查詢

select distinct `title` from `table`;

5、冒泡演算法

<? $arr = array(345,4,17,6,52,16,58,69,32,8,6666,234); for($i=1; $i<count($arr); $i++){     for($j=count($arr)-1; $j>=$i; $j--){              if($arr[$j] < $arr[$j-1]){             $temp = $arr[$j-1];             $arr[$j-1] = $arr[$j];             $arr[$j] = $temp;         }              } } print_r($arr); ?>

6、echo,print,print_r區別?

echo    輸出,不是函式,沒有返回值,故輸出速度比print快。 print   列印字串,本身是個函式,有返回值。 print_r 則是列印複合型別  如陣列 物件

7、表單中 get與post提交方法的區別?

1
2
3
4
答:get使用者端將資料加到URL後,格式為”?欄位1=輸入資料1&欄位2=輸入資料2&..."。
  由於get提交引數後會在位址列中顯示出來,所以會產生嚴重的安全問題。
  get傳輸的資料量小,get傳輸的資料量小,這主要是因為受url長度限制;而post可以傳輸大量的資料。
  get限制表單中資料集的範圍為asc2碼,而post可以支援整個iso10646字符集。

8、session與cookie的區別?

1
cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。

9、資料庫中的事務是什麼?

1
答:事務就是一系列的操作,這些操作完成一項任務。只要這些操作裡有一個操作沒有成功,事務就操作失敗,發生回滾事件。即撤消前面的操作,這樣可以保證資料的一致性。而且可以把操作暫時放在快取裡,等所有操作都成功有提交資料庫,這樣保證費時的操作都是有效操作。

10、用PHP列印出前一天的時間格式是2006-5-10 22:21:21

1
2
3
4
5
6
<?
echo date(`Y-m-d H:i:s`,mktime(date("H"), date("i"), date("s"), date("m") , date("d")-1, date("Y"))); 
echo date(`Y-m-d H:i:s`,date(strtotime("-1 day"))); 
echo date(`Y-m-d H:i:s`strtotime(`-1 day`));
//三種方法都可以
?>

11、能夠使HTML和PHP分離開使用的模板

1
能夠使HTML和PHP分離使用的模板引擎:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

12、使用哪些工具進行版本控制?

1
svn版本控制系統、cvs版本控制系統 等等

13、如何實現字串翻轉?

1
strrev()函式 用於反轉字串

14、優化MYSQL資料庫的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
1、選取最適用的欄位屬性
2、使用連線(JOIN)來代替子查詢(Sub-Queries)
3、使用聯合(UNION)來代替手動建立的臨時表
4、事務
5、鎖定表
6、使用外來鍵
7、使用索引
8、優化的查詢語句
9、必要的時候用不同的儲存引擎.比如InnoDB可以減少死鎖.HEAP可以提高一個數量級的查詢速度
10、所得皆必須,只從資料庫取必需的資料
11、資料庫設計方面,設計結構良好的資料庫,必要的時候,去正規化,允許部分資料冗餘,避免JOIN操作,以提高查詢效率 
12、系統架構設計方面,表雜湊,把海量資料雜湊到幾個不同的表裡面.快慢表,快表只留最新資料,慢表是歷史存檔.叢集,主伺服器Read & write,從伺服器read only,或者N臺伺服器,各機器互為Master 
詳細見:http://tech.ccidnet.com/art/1108/20070619/1117649_1.html

15、MYSQL取得當前時間的函式是?格式化日期的函式是?

1
2
取得當前時間用 now()
DATE_FORMAT() 函式用於以不同的格式顯示日期/時間資料。DATE_FORMAT(date,format)

16、實現中文字串擷取無亂碼的方法

1
2
3
1、使用mbstring擴充套件庫的mb_substr擷取就不會出現亂碼了。
2、自己書寫擷取函式,但效率不如用mbstring擴充套件庫來得高。
3、如果僅是為了輸出擷取的串,可用如下方式實現:substr($str, 0, 30).chr(0)。

17、請簡單闡述您最得意的開發之作

1
PHPerxuqin-PHP開發者的上網首頁(http://www.phperxuqin.com/)

18、對於大流量的網站,您採用什麼樣的方法來解決訪問量問題?

1
2
3
4
5
6
1、確認伺服器硬體是否足夠支援當前的流量。
2、優化資料庫訪問。
3、禁止外部的盜鏈。
4、控制大檔案的下載。
5、負載均衡,使用不同主機分流主要流量。
6、使用流量分析統計軟體,針對問題做進一步的優化。

19、語句include和require的區別是什麼?為避免多次包含同一檔案,可用(?)語句代替它們?

1
2
3
4
5
1、PHP程式執行到require()時,只會讀取一次檔案,故常放在程式開頭,檔案引入後PHP會將網頁檔重新編譯,讓引入檔成為原先網頁的一部分。
2、PHP程式執行到include()時,每次皆會讀取檔案,故常用於流程控制的區段,如條件判斷或迴圈中。
3、require() :無條件包含,如果檔案不存在,會報出一個fatal error.指令碼停止執行
4、include() : 有條件包含,如果檔案不存在,會給出一個 warning,但指令碼會繼續執行
5、推薦使用require_once()和include_once(),可以檢測檔案是否有重複包含。

20、如何修改SESSION的生存時間?

1
2
3
4
5
6
一:在php.ini 中設定 session.gc_maxlifetime = 1440 //預設時間
 
二:程式碼實現
$lifeTime = 24 * 3600; // 儲存一天 
session_set_cookie_params($lifeTime); 
session_start();

21、在HTTP 1.0中,狀態碼301、401的含義是?如果返回“找不到檔案”的提示,則可用header函式,其語句為?

1
2
3
301 Moved Permanently 客戶請求的文件在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地訪問新的URL。
401:表示未經授權
header("HTTP/1.0 404 Not Found");

22、


繼續…



      本文轉自許琴 51CTO部落格,原文連結:http://blog.51cto.com/xuqin/1065509,如需轉載請自行聯絡原作者





相關文章