php經典面試題及答案
對于PHP程序員在求職中,提前了解面試題及答案很重要,那么你做好面試準備了嗎?下面小編已經為你們整理了php經典面試題及答案,一起來看看吧。
php經典面試題及答案一
1、如何實現字符串翻轉?
不考慮中英文混合,不是最優算法,不用php庫函數翻轉字符串:
function str_to_reverse( $str ){
for($length=0;$str[$length]!=null;$length++){;}
$strlength = $length-1;
unset($length);
for($start=0,$end=$strlength;$start<$end;$start++,$end--){
$temp = $str[$start];
$str[$start] = $str[$end];
$str[$end] = $temp;
}
unset($temp,$start,$end,$strlength);
return $str;
}
2、優化MYSQL數據庫的方法。
1) 將where中用的比較頻繁的字段建立索引,聯合索引。
2) 保證單表數據不超過200W,適時分割表。
3) 避免使用長連接。
4) 修改my.cnf里面的各項參數,比如最大連接數,查詢緩存等。根據你的服務器內存來最大化調節那些配置參數。
5) 針對需求,使用正確的表引擎,是myisam或是innodb。
3.用PHP寫出顯示客戶端IP與服務器IP的代碼:
echo $_SERVER['REMOTE_ADDR'] //客戶端ip
echo $_SERVER['SERVER_ADDR'] //服務器端ip
4、apache+mysql+php實現最大負載的方法
1) 問的太籠統,生成靜態html頁面,squid反向代理,apache,mysql的負載均衡。
2)可以采取數據緩存的方法,我們通常在統計數據的時候,需要在原始數據的基礎上經過計算等一系列操作,才會得到最終的結果,如果每做一個查詢都需要這樣一系列操作,當數據量大時,勢必會帶來很多問題。可以建立一個結果表,寫一個腳本,用crontab定時觸發腳本去原始表取數據,計算,寫入到結果表,前端查詢從結果表取數據,這也是比較常用的一種做法。
3)采用分布式,多個apache,多個mysql,其實就是dns負載均衡,dns根據當前用戶解析幾個ip的ping值,將用戶轉移到某一臺最快的服務器,或者平均分配。
4)money不是問題的話,可以考慮F5硬件負載均衡!
5)可以使用Microsoft Windows Server系統的負載均衡設置
php經典面試題及答案二
1、請舉例說明在你的開發過程中用什么方法來加快頁面的加載速度
答:要用到服務器資源時才打開,及時關閉服務器資源,數據庫添加索引,頁面可生成靜態,圖片等大文件單獨服務器。使用代碼優化工具
2、.以下的代碼會產生什么?為什么?
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;
由于函式 multiply() 沒有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。
3. php class中static,public,private,protected的區別?
static 靜態,類名可以訪問
public 表示全局,類內部外部子類都可以訪問;
private表示私有的,只有本類內部可以使用;
protected表示受保護的,只有本類或子類或父類中可以訪問;
4. HTTP協議中GET、POST和HEAD的區別?
HEAD: 只請求頁面的首部。
GET: 請求指定的頁面信息,并返回實體主體。
POST: 請求服務器接受所指定的文檔作為對所標識的URI的新的從屬實體。
(1)HTTP 定義了與服務器交互的不同方法,最基本的方法是 GET 和 POST。事實上 GET 適用于多數請求,而保留 POST 僅用于更新站點。
(2)在FORM提交的時候,如果不指定Method,則默認為GET請 求,Form中提交的數據將會附加在url之后,以?分開與url分開。字母數字字符原樣發送,但空格轉換為"+"號,其它符號轉換為%XX,其中XX為 該符號以16進制表示的ASCII(或ISO Latin-1)值。GET請求請提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中;
GET方式提交的數據最多只能有1024字節,而POST則沒有此限制。
(3)GET 這個是瀏覽器用語向服務器請求最常用的方法。POST這個方法也是用來傳送數據的,但是與GET不同的是,使用POST的時候,數據不是附在URI后面傳遞的,而是要做為獨立的行來傳遞,此時還必須要發送一個Content_length標題,以標明數據長度,隨后一個空白行,然后就是實際傳送的數據。網頁的表單通常是用POST來傳送的。
php經典面試題及答案三
1、表單提交get和post的區別?
答:get的方式是把數據在地址欄中發送,get傳送的數據量較小不能大于2KB。post傳送的數據量比較大,一般默認為不受限制。
2、用PHP大于出前一天的時間格式2006-5-10 22:21:21
echo date("Y-m-d H:i:s",time-(3600*24)) 或者是 echo date("Y-m-d H:i:s",strtotime("-1 day"))
3、php中include和require的區別?
這兩種結構除了在如何處理失敗之外完全一樣。include() 產生一個警告而 require() 則導致一個致命錯誤。換句話說,如果你想在遇到丟失文件時停止處理頁面就用 require()。include() 就不是這樣,腳本會繼續運行。
4、echo(),print(),print_r()的區別
echo可以接多個參數,print只能接一個參數,它們都是PHP的語言結構,print_r是遞規打印,用來打印數組或對象
5、能夠使HTML和PHP分離開使用的模板
smarty,phplib,SmartTemplate
6你如何理解MVC模式?
首先說一下框架,框架:就是別人把一些底層,常用操作.比如數據操作(增,刪,改,查)寫好.你來直接用.其它的功能要自己來做。MVC:設計模式,M模型,V顯示,C控制.現在許多框架都是基于MVC來做的把邏輯和顯示分開.比如你要換頁面,只需要改V里面的東西并不需要再去變動程序!(詳細的東西可以上網上查一下)
7、如何實現PHP、JSP交互?
PHP提供了支持JAVA的類庫文件,或者通過HTTP協議來交互數據
8、使用哪些工具進行版本控制?
VSS,CVS,SVN
看了“php經典面試題及答案”