- 相關(guān)推薦
PHP程序員面試常見(jiàn)問(wèn)題
PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯后代碼,編譯可以達到加密和優(yōu)化代碼運行,使代碼運行更快。下面yjbys小編為大家分享PHP程序員面試常見(jiàn)問(wèn)題,希望對大家面試有幫助!
1. Include 與 require的區別,require和require_once的效率哪個(gè)高?
Php在遇到include時(shí)就解釋一次,如果頁(yè)面中出現10次include,php就解釋10次,而php遇到require時(shí)只解釋一次,即使頁(yè)面出現多次require也只解釋一次,因此require的執行表率比include高。
Php使用require包含文件時(shí)將被包含的文件當成當前文件的一個(gè)組成部分,如果被包含的文件中有語(yǔ)法錯誤或者被包含的文件不存在,則php腳本將不再執行,并提示錯誤。
Php使用include包含文件時(shí)相當于指定了這個(gè)文件的路徑,當被包含的文件有語(yǔ)法錯誤或者被包含的文件不存在時(shí)給出警告,不影響本身腳本的運行。
Include在包含文件時(shí)可以判斷文件是否包含,而require則不管任何情況都包含進(jìn)來(lái)。
Require的效率比require_once的效率更高,因為require_once在包含文件時(shí)要進(jìn)行判斷文件是否已經(jīng)被包含。
2. Cookie和session的區別,禁止了cookie后session能正常使用嗎?session的缺點(diǎn)是什么?session在服務(wù)器端是存在哪里的?是共有的還是私有的?
COOKIE保存在客戶(hù)端,用戶(hù)通過(guò)手段可以進(jìn)行修改,不安全,單個(gè)cookie允許的最大值是3k。而SESSION保存在服務(wù)器端,相對比較安全,大小沒(méi)有限制。禁用了cookie之session不能正常使用。
Session的缺點(diǎn):保存在服務(wù)器端,每次讀取都從服務(wù)器進(jìn)行讀取,對服務(wù)器有資源消耗。
Session保存在服務(wù)器端的文件或數據庫中,默認保存在文件中,文件路徑由php配置文件的session.save_path指定。
Session文件是公有的。
3. 怎么防止sql注入?
1、過(guò)濾掉一些常見(jiàn)的數據庫操作關(guān)鍵字:select,insert,update,delete,and,*等
或者通過(guò)系統函數:addslashes(需要被過(guò)濾的內容)來(lái)進(jìn)行過(guò)濾。
2、在PHP配置文件中
Register_globals=off;設置為關(guān)閉狀態(tài) //作用將注冊全局變量關(guān)閉。
比如:接收POST表單的值使用$_POST['user'],如果將register_globals=on;直接使用$user可以接收表單的值。
3、SQL語(yǔ)句書(shū)寫(xiě)的時(shí)候盡量不要省略小引號(tab鍵上面那個(gè))和單引號
4、提高數據庫命名技巧,對于一些重要的字段根據程序的特點(diǎn)命名,取不易被猜到的
5、對于常用的方法加以封裝,避免直接暴漏SQL語(yǔ)句
6、開(kāi)啟PHP安全模式
Safe_mode=on;
7、打開(kāi)magic_quotes_gpc來(lái)防止SQL注入
Magic_quotes_gpc=off;默認是關(guān)閉的,它打開(kāi)后將自動(dòng)把用戶(hù)提交的sql語(yǔ)句的查詢(xún)進(jìn)行轉換,把'轉為\',這對防止sql注入有重大作用。
因此開(kāi)啟:magic_quotes_gpc=on;
8、控制錯誤信息
關(guān)閉錯誤提示信息,將錯誤信息寫(xiě)到系統日志。
9、使用mysqli或pdo預處理。
4. 數據庫索引有幾類(lèi),分別是什么?什么時(shí)候該用索引
普通索引、主鍵索引、唯一索引
并非所有的數據庫都以相同的方式使用索引,作為通用規則,只有當經(jīng)常查詢(xún)列中的數據時(shí)才需要在表上創(chuàng )建索引。
5. 引用傳值和非引用傳值的區別,什么時(shí)候該用引用傳值?什么時(shí)候該用非引用傳值?
按值傳遞:函數范圍內對值的改變在函數外都會(huì )被忽略。
按引用傳遞:函數范圍內對值的任何改變在函數外也將反應出這些修改。
按值傳遞時(shí),php必須復制值,如果操作的是大型的對象和字符串,這將是一個(gè)代價(jià)很大的操作。按引用傳遞不需要復制值,因此對性能的提高有好處。
當需要在函數內改變源變量的值時(shí)用引用傳遞,如果不想改變原變量的值用傳值。
6. 寫(xiě)幾個(gè)魔術(shù)方法并說(shuō)明作用?
__call()當調用不存在的方法時(shí)會(huì )自動(dòng)調用的方法
__autoload()在實(shí)例化一個(gè)尚未被定義的類(lèi)是會(huì )自動(dòng)調用次方法來(lái)加載類(lèi)文件
__set()當給未定義的變量賦值時(shí)會(huì )自動(dòng)調用的方法
__get()當獲取未定義變量的值時(shí)會(huì )自動(dòng)調用的方法
__construct()構造方法,實(shí)例化類(lèi)時(shí)自動(dòng)調用的方法
__destroy()銷(xiāo)毀對象時(shí)自動(dòng)調用的方法
__unset()當對一個(gè)未定義變量調用unset()時(shí)自動(dòng)調用的方法
__isset()當對一個(gè)未定義變量調用isset()方法時(shí)自動(dòng)調用的方法
__clone()克隆一個(gè)對象
__tostring()當輸出一個(gè)對象時(shí)自動(dòng)調用的方法
7. $_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什么?
它們都是PHP預定義變量。
$_REQUEST用來(lái)獲取post或get方式提交的值
$_POST用來(lái)獲取post方式提交的值
$_GET用來(lái)獲取get方式提交的值
$_COOKIE用來(lái)獲取cookie存儲的值
$_SESSION用來(lái)獲取session存儲的值
$_FILE用來(lái)獲取上傳文件表單的值
8. 數組中下標最好是什么類(lèi)型的,為什么?
數組的下標最好是數字類(lèi)型的,數字類(lèi)型的處理速度快。
9. ++i和i++哪一個(gè)效率高,為什么?
++i效率比i++的效率更高,因為++i少了一個(gè)返回i的過(guò)程。
10.magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?
Magic_quotes_gpc()是php配置文件中的,如果設置為on則會(huì )自動(dòng)POST,GET,COOKIE中的字符串進(jìn)行轉義,在'之前加\
Magic_quotes_runtime()是php中的函數,如果參數為true則會(huì )數據庫中取出來(lái)的單引號、雙引號、反斜線(xiàn)自動(dòng)加上反斜杠進(jìn)行轉義。
11.Echo()、print()、print_r()的區別?
Echo() 是PHP語(yǔ)法,可以輸出多個(gè)值,不能輸出數組。
Print() 是php的語(yǔ)言結構,可以輸出單個(gè)簡(jiǎn)單類(lèi)型的變量值。
Print_r() 是php函數,可以打印出復雜類(lèi)型變量的值,如數組,對象。
12.談?wù)勀銓vc的認識
MVC是一種設計模式,強制使輸入、處理、輸出分開(kāi),MVC的三個(gè)核心部分:M模型,V視圖,C控制器。
視圖就是用戶(hù)看到并與之交互的界面。
模型就是程序的數據業(yè)務(wù)規則。
控制器接收用戶(hù)的數組調用模型和視圖去完成用戶(hù)需求。
使用MVC的優(yōu)點(diǎn):低耦合、高重用性、較低的生命周期成本、快速開(kāi)發(fā)部署、可維護性、可擴展性,有利于軟件工程化管理。
MVC的缺點(diǎn):沒(méi)有明確的定義,完全理解并不容易。小型項目不適合用MVC。
13.框架中什么是單一入口和多入口,單一入口的優(yōu)缺點(diǎn)
多入口就是通過(guò)訪(fǎng)問(wèn)不同的文件來(lái)完成用戶(hù)請求。
單一入口只web程序所有的請求都指向一個(gè)腳本文件的。
單一入口更容易控制權限,方便對http請求可以進(jìn)行安全性檢查。
缺點(diǎn):URL看起來(lái)不那么美觀(guān),特別是對搜索引擎來(lái)說(shuō)不友好。
14.打印一個(gè)用‘.’鏈接的字符串時(shí)候,還可以用什么代替‘.’鏈接效率更高些?
可以用,代替.,效率更高。
15.提示類(lèi)型200、404、502是什么意思?
200是請求成功,404是文件未找到,502是服務(wù)器內部錯誤。
16.編寫(xiě)一個(gè)自定義函數提取這段路徑的的后綴名。
“Www/hello/test.php.html?a=3&b=4”
Function geturltype($url){
$info=parse_url($url);
Return end(explode('.',$info['path']));
}
17.你對Memcach的理解,優(yōu)點(diǎn)有哪些?
Memcache是一種緩存技術(shù),在一定的時(shí)間內將動(dòng)態(tài)網(wǎng)頁(yè)經(jīng)過(guò)解析之后保存到文件,下次訪(fǎng)問(wèn)時(shí)動(dòng)態(tài)網(wǎng)頁(yè)就直接調用這個(gè)文件,而不必在重新訪(fǎng)問(wèn)數據庫。使用memcache做緩存的好處是:提高網(wǎng)站的訪(fǎng)問(wèn)速度,減輕高并發(fā)時(shí)服務(wù)器的壓力。
Memcache的優(yōu)點(diǎn):穩定、配置簡(jiǎn)單、多機分布式存儲、速度快
【PHP程序員面試常見(jiàn)問(wèn)題】相關(guān)文章:
PHP程序員的技術(shù)成長(cháng)規劃范文08-10
小升初英語(yǔ)面試常見(jiàn)問(wèn)題08-15
精選php面試自我介紹范文14篇08-29