- 相關推薦
php工程師面試問題
PHP開發工程師面試題分享
1. 下列哪一句不能將'john'添加到數組$user? 答:BD
A. $user[] = 'john';
B. array_add($user, 'john');
C. array_push($user, 'john');
D. $user ||= 'john';
2. 比較sort(), asort(), ksort()三個函數的用法以及使用環境。
答:sort -- 將數組的值由a-z重排,并自動替換索引從0...結束
asort --- 此函數將數組的元素由a-z重新排列,且保持原先索引值和元素的對應關系,這個函數主要是用于
需要將數組的元素重新排列。這個函數比較常用。
ksort --- 此函數將數組依照索引值由a-z重新排列
例子:
對array('a'=>111, '9'=>"orange", 6=>2, "apple");排序。
sort則返回: Array ( [0] => apple [1] => orange [2] => 2 [3] => 111 )值由a-z重排,索引也變了。
asort則返回:Array ( [10] => apple [9] => orange [6] => 2 [a] => 111 )值由a-z重排,保持索引以應
ksort則返回: Array ( [a] => 111 [6] => 2 [9] => orange [10] => apple )索引值由a-z重新排列,保持索
引以應
3. 以下代碼輸出什么內容, 為何。
$num = 10;
function foo(){
$num = $num * 10;
}
foo();
echo $num;
答:
結果為10.因為foo()中的$num是訪問不到函數外的變量的。要想訪問加上global $num;結果就成100了。
4. 引用和普通變量的區別。
答:普通變量是開辟了一塊新的存儲空間,引用是直接指向其他的存儲空間。
如:
$num = 10;
function foo($num){
$num = $num * 10;
}
foo($num);
echo $num;
調foo($num);函數時以變量傳遞,則返回10;
如果改成引用傳遞,返回100;
$num = 10;
function foo(&$num){
$num = $num * 10;
}
foo($num);
echo $num;
5. 加載類庫的方法。
答:
function __autoload($class){
require_once("./lib/".$class.'.php');
}
6. foo()和@foo()的區別。
答:加上@符號會屏蔽報錯提示。
如下:
$num = 10;
function foo(&$num){
$num = $num / 0;
}
foo($num);
echo $num;
大家都知道除數不能為0。如果加上@符號后就沒有Warning: Division by zero
7. 你平時如何調試PHP代碼。
答:用echo打出調試或用exit調試。再加上火狐瀏覽器調。
8. === 的作用是什么?舉一個例子,使用 == 返回true,但是使用 === 返回false。
答:=== 的作用是比較變量的值還比較變量的類型。==只比較值。
如下:
$str = '111';
if($str==111){//如果改成===則返回"失敗了";
echo "成功了";
}else{
echo "失敗了";
}
9. 聲明一個不含方法和屬性的類。
答:class Db {}
10. 創建一個對象myclass的實例。
答:$db = new myclass();
11. 從類的內部訪問或者設置屬性。
答:
class DB{
private $username; //用戶名
private $userpwd; //密碼
public function test(){
$this->username='root';//給變量賦值
self::test2();//相當于$this->test2();//調用本類test2方法
//parent::test2();這樣的話就調用了父類的test2方法
}
public function test2(){
}
}
12. include與include_once的區別和聯系,以及include與require的區別和聯系。
答:include與include_once區別是:用include_once如果該文件中的代碼已經被包含了,則不會再次包含。如同此語句名字暗示的那樣,只會包含一次。
include() 產生一個警告而 require() 則導致一個致命錯誤。換句話說,如果想在遇到丟失文件時停止處理頁面就用 require()。include() 就不是這樣,腳本會繼續運行。
13. 使用什么函數重定向瀏覽器請求。
答:header("Location: http://hi.baidu.com/woaidelphi/blog");
14. 打開一個文件供讀寫。
答:fopen("d:/test.txt","r+");//r+讀寫方式打開,將文件指針指向文件頭。'w+'讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建之。 'a+'讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之
15. mysql_fetch_row和mysql_fetch_array的區別。
答:mysql_fetch_row -- 從結果集中取得一行作為枚舉數組
mysql_fetch_array -- 從結果集中取得一行作為關聯數組,或數字數組,或二者兼有 //MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH
16. 一個ereg_replace的理解。里面涉及正則捕捉和引用。
答:ereg_replace -- 替換正則表達式
string ereg_replace ( string pattern, string replacement, string string )
本函數在 string 中掃描與 pattern 匹配的部分,并將其替換為 replacement。
返回替換后的字符串。
“里面涉及正則捕捉和引用。”這句話不懂。
17. 寫一個正則表達式,過濾所有的HTML代碼。
如下:
$str = "大家好< /b>一起學習。共同進步。";
echo preg_replace("/<[^>]+>/i",'',$str);
18. 比較PHP與Perl的array和hash
答:http://hi.baidu.com/sujun/blog/item/85a4c8131c06432bdd54010b.html上面寫的很好。
19. How to get around stateless nature of HTTP using PHP ? (我理解錯誤)
答:呵呵,不知。
20. GD是用來做什么的。
答:GD庫是用來做圖的。比如可以做驗證碼。
21. 用PHP寫出幾個方法用來輸出HTML代碼塊。
highlight_file('demo.html');
22. Is PHP better than Perl? Discuss.
如何面試PHP工程師?
問一些日常的正常的PHP問題,主要是考察應聘者的認知:
一個包含中英文的字符串如何獲得它的自然長度(看看ta是否有encoding的知識和意識)
問一問什么是ORM,有時候會問這個詞的英文全稱是什么,問問ta對于ORM有什么個人的看法?(看看ta學習細不細,有沒有技術判斷,PHP開發人員應該知道什么時候使用ORM)
問一問假如ta要自己去實現一個framework,ta會怎么設計。(看看ta對代碼架構的理解,對MVC的理解)
問一問framework設計里的url dispatcher他會怎么考慮。(HTTP知識)
問一問ta對框架本身的看法
了解一下ta對Design Pattern的認知,比如Singleton,Observer,Factory等常用的設計模式,問一問ta對設計模式本身的看法。
問兩三個數據庫設計的問題
問幾個前端的問題,哪怕ta的職位是PHP開發人員,好的PHP人員不可能不了解前端,而且很可能很了解前端
問一問ta對noSQL的了解情況(對與noSQL的認識是和傳統Relational DB的認知是分不開的)
問一問ta碰到問題時候會如何去尋找答案
問一問ta習慣使用哪一個搜索引擎
問一問ta最近看的書
問一問ta的職業規劃,喜歡做什么,對工作環境有什么要求
【php工程師面試問題】相關文章:
關于php面試寶典及PHP面試技巧04-02
關于PHP慢速日志的問題分析06-22
工程師崗位面試問題12-12
pcb工程師面試問題11-27
php工程師簡歷模板05-19
網絡工程師面試問題07-06
php工程師崗位職責11-15
PHP開發工程師崗位的職責06-14
php面試自我介紹范文10-26
關于PHP面試題的分享11-20