php面試題目_php面試題及答案
PHP程序員在求職面試中,提前做好面試準備很有必要,那么你了解面試題目了嗎?下面小編已經(jīng)為你們整理了php面試題目,一起來看看吧。
php面試題目一
1.表單中 get與post提交方法的區(qū)別?
答:get是發(fā)送請求HTTP協(xié)議通過url參數(shù)傳遞進行接收,而post是實體數(shù)據(jù),可以通過表單提交大量信息.
2.session與cookie的區(qū)別?
答:session:儲存用戶訪問的全局唯一變量,存儲在服務器上的PHP指定的目錄中的(session_dir)的位置進行的存放
cookie:用來存儲連續(xù)訪問一個頁面時所使用,是存儲在客戶端,對于Cookie來說是存儲在用戶WIN的Temp目錄中的。
兩者都可通過時間來設置時間長短
3.數(shù)據(jù)庫中的事務是什么?
答:事務(transaction)是作為一個單元的一組有序的數(shù)據(jù)庫操作。如果組中的所有操作都成功,則認為事務成功,即使只有一個操作失敗,事務也不成功。如果所有操作完成,
事務則提交,其修改將作用于所有其他數(shù)據(jù)庫進程。如果一個操作失敗,則事務將回滾,該事務所有操作的影響都將取消。
4、談談對mvc的認識
答:由模型(model),視圖(view),控制器(controller)完成的應用程序
由模型發(fā)出要實現(xiàn)的功能到控制器,控制器接收組織功能傳遞給視圖;
5、寫出發(fā)貼數(shù)最多的十個人名字的SQL,利用下表:members(id,username,posts,pass,email)
答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;
6. 請說明php中傳值與傳引用的區(qū)別。什么時候傳值什么時候傳引用?
答:按值傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部都會被忽略
按引用傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部也能反映出這些修改
優(yōu)缺點:按值傳遞時,php必須復制值。特別是對于大型的字符串和對象來說,這將會是一個代價很大的操作。
按引用傳遞則不需要復制值,對于性能提高很有好處。
7. 在PHP中error_reporting這個函數(shù)有什么作用?
答:設置錯誤級別與錯誤信息回報
php面試題目二
1、您是否用過模板引擎? 如果有您用的模板引擎的名字是?
答:用過,smarty
2、請簡單闡述您最得意的開發(fā)之作
答:信息分類
3、對于大流量的網(wǎng)站,您采用什么樣的方法來解決訪問量問題?
答:確認服務器硬件是否足夠支持當前的流量,數(shù)據(jù)庫讀寫分離,優(yōu)化數(shù)據(jù)表,
程序功能規(guī)則,禁止外部的盜鏈,控制大文件的下載,使用不同主機分流主要流量
4、語句include和require的區(qū)別是什么?為避免多次包含同一文件,可用(?)語句代替它們?
答:require->require是無條件包含也就是如果一個流程里加入require,無論條件成立與否都會先執(zhí)行require
include->include有返回值,而require沒有(可能因為如此require的速度比include快)
注意:包含文件不存在或者語法錯誤的時候require是致命的,include不是
5、如何聲明一個名為”myclass”的沒有方法和屬性的類?
答:class myclass{ }
6、如何實例化一個名為”myclass”的對象?
答:new myclass()
7、你如何訪問和設置一個類的屬性?
答:$object = new myclass();
$newstr = $object->test;
$object->test = "info";
8、mysql_fetch_row() 和mysql_fetch_array之間有什么區(qū)別?
答:mysql_fetch_row是從結果集取出1行數(shù)組,作為枚舉
mysql_fetch_array是從結果集取出一行數(shù)組作為關聯(lián)數(shù)組,或數(shù)字數(shù)組,兩者兼得
9、GD庫是做什么用的?
答:gd庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。
在網(wǎng)站上GD庫通常用來生成縮略圖或者用來對圖片加水印或者對網(wǎng)站數(shù)據(jù)生成報表。
php面試題目三
1、用php打印出前一天的時間格式是2006-5-10 22:21:21
答:echo date('Y-m-d H:i:s', strtotime('-1 days'));
2、echo(),print(),print_r()的區(qū)別
答:echo是PHP語句, print和print_r是函數(shù),語句沒有返回值,函數(shù)可以有返回值(即便沒有用)
print() 只能打印出簡單類型變量的值(如int,string)
print_r() 可以打印出復雜類型變量的值(如數(shù)組,對象)
echo 輸出一個或者多個字符串
3、能夠使HTML和PHP分離開使用的模板
答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate
4、使用哪些工具進行版本控制?
答:cvs,svn,vss;
5、如何實現(xiàn)字符串翻轉?
答:echo strrev($a);
6、優(yōu)化MySQL數(shù)據(jù)庫的方法。
答:
1、選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設置NOT NULL,例如'省份,性別',最好設置為ENUM
2、使用連接(JOIN)來代替子查詢:
a.刪除沒有任何訂單客戶:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
b.提取所有沒有訂單客戶:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
c.提高b的速度優(yōu)化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid
WHERE orderinfo.customerid IS NULL
3、使用聯(lián)合(UNION)來代替手動創(chuàng)建的臨時表
a.創(chuàng)建臨時表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`
4、事務處理:
a.保證數(shù)據(jù)完整性,例如添加和修改同時,兩者成立則都執(zhí)行,一者失敗都失敗
mysql_query("BEGIN");
mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";
mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");
mysql_query("COMMIT");
5、鎖定表,優(yōu)化事務處理:
a.我們用一個 SELECT 語句取出初始數(shù)據(jù),通過一些計算,用 UPDATE 語句將新值更新到表中。
包含有 WRITE 關鍵字的 LOCK TABLE 語句可以保證在 UNLOCK TABLES 命令被執(zhí)行之前,
不會有其它的訪問來對 inventory 進行插入、更新或者刪除的操作
mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");
mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);
mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where customerid=".$id);
mysql_query("UNLOCK TABLES");
看了“php面試題目”