幾個PHP面試題

2021-05-27 09:30:25 字數 4141 閱讀 6142

一、 

1、有如下html:

1)用js取得________方法取得該物件; 

2)用________屬性取得屬性title的屬性值; 

3)用________方法取得屬性sina_title的屬性值; 

(1) document.getelementbyid('img1');

(2) document.getelementbyid('img1').getattribute('title');

(3) document.getelementbyid('img1').getattribute('sina_title');

2、php中對陣列序列化和反序列化的函式分別是______和_______; 

serialize,upserialize

3、rawurlencode和urlencode函式的區別是__________________; 

rawurlencode會將空格轉換為+,urlencode會把空格轉換為%20

4、php中過濾html的函式是_______,轉義的函式是____________; 

strip_tags,htmlspecialchars

5、寫出用正則把html中的js指令碼過濾掉; 

preg_replace('//is','',$htmlcode);

6、sql中left join的含義是______________; 

如果有乙個表tl_user儲存學生id和名字name,另外乙個表tl_score儲存學生id、科目subject和成績score(有的學生沒有考試成績),寫出sql語句列印出學生名字和各科總成績; 

左聯接,首先將左表中所有資料取出,然後再將滿足where條件中的右表資料取出來。當此行的資料並不滿足where條件,則返回空.

select tu.name,sum(ts.score) as totalscore from tl.user left join tl_score on tl.uid = ts.uid;

7、寫出三個呼叫系統命令的函式; 

system,passthru,exec

8、josn處理陣列的函式是; 

json_encode,json_decode

9、php中判斷變數是否被設定是函式是_______;判斷是否為空的是___________; 

isset,empty

10、error_reporting("e_all")和ini_set("display_errors", "on")的區別_________; 

前者是設定錯誤顯示等級,e_all代表提示全部錯誤(包括notice,warnning和error)。後者是設定讓php顯示錯誤,在關於錯誤顯示控制中,後者的優先順序最高。

11、php寫出顯示客戶端ip的預定義變數________;提供來路url的是__________; 

12、php把utf-8轉換成gbk的函式是___________; 

iconv('utf-8','gbk',$str);

13、php中分割字串成陣列的函式__________,連線數組成字串的是_______; 

explode,implode

14、php中類的靜態方法怎麼使用_____________________________________; 

在類外部,使用:類名後面跟雙冒號,再後面是方法名,類似classname::staticfucntion(),由於靜態方法不屬於某個物件,而是隸屬於整個類,所以要用類名來呼叫它。

二、 

1、如下錯誤:mysql server not go away,的原因是什麼?(大概這是這樣) 

應該是mysql has gone away吧?

一般情況下是由於max_allowed_packet設定的值過小導致的,max_allowed_packet用來控制緩衝區的包大小,有時在匯入資料的時候,此值過小就容易造成緩衝區容量不夠。將my.ini或my.cnf中的此值設定大一些即可解決。

還有一種可能是連線資料庫時使用了單例模式,多次運算元據庫但都使用的是同乙個連線,由於mysql處理每個執行緒也是佇列模式,當前乙個操作還沒執行完畢並且間隔小於wait_timeout所設定的值時就容易出現此問題,解決辦法是將wait_timeout的值設定大一些。

2、mysql的靜態表和動態表的區別,myisam和innodb的區別. 

靜態表是當乙個表中沒有採用varchar,blob,text這種可變長字段時,此表就是靜態表,反之,如果乙個表內存在至少乙個可變長字段時,或者如果乙個表被用row_format=dynamic選項來建立,此表就為動態表。

myisam與innodb的區別在於,myisam不支援事務處理,因為其不用去做commit操作,所以操作起來速度會比innodb較快。innodb在安全性方面要好於myisam,由於支援事務處理,insert,update,delete,select。等操作在預設autocommit=0時,會將每乙個操作都當作乙個事務,可以進行rollback。如果autocommit=1時,每乙個操作後它都會自動提交此事務,會造成執行的效率很慢,大概會比myisam慢10倍。

3、$a = 1; $b = & $a; 

unset($a),$b是否還是1,為什麼? 

unset($b),$a是否還是1,為什麼? 

都等於1。

在php中,引用賦值不同於指標的感念,他只是將另乙個變數名指向了某個記憶體位址。此題中:$b = &$a;只是將$b這個名字也指向了$a變數所指向的記憶體位址。unset時只是釋放了這個名字的指向,並沒有釋放記憶體中的值。另一方面講unset($a),其實也並未真正立刻釋放記憶體中的值,也只是釋放了這個名字的指向而已,該函式只有在變數值所佔空間超過256位元組長的時候才會釋放記憶體,並且只有當指向該值的所有變數(比如有引用變數指向該值)都被銷毀後,位址才會被釋放。

三、 

1、寫出至少三個函式,取檔名的字尾,如檔案'/as/image/bc.jpg',得到 jpg或者.jpg。 

function mygetextname1( $path )

function mygetextname2( $path )

function mygetextname3( $path )

2、寫乙個函式,算出兩個檔案的相對路徑如 $a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; 計算出 $b 相對於 $a 的相路徑。

$a = '/a/b/c/d/e.php';

$b = '/a/b/12/34/c.php';

//求$b相對於$a的相對路徑

function getrelativelypath($a,$b)

3、用二分法(也叫折半查詢法)查詢某元素,對像可以是有序陣列。

//二分法查詢乙個陣列中是否存在某值

function binsearchwitharray($array,$searchvalue)

elseif($searchvalue < $array[$mid])

else

}return $searchvalue.'沒找到';}

$time = 1;

//要查詢的陣列

$array = array(1,5,8,101,13,19,25,50,60,199,35);

//要查詢的值

$searchvalue = 13;

//對陣列排序,二分法的關鍵

sort($array);

echo '要查詢的值為:',$searchvalue,'

';echo binsearchwitharray($array,$searchvalue);

這些題說實話不難,但我還是必須承認有些題我查了資料,因為很多函式平時不借助ide根本想不起來怎麼寫,有些概念以前即使知道並理解,但好長時間不涉及卻會漸漸淡忘,比如按引用傳遞那個。

面試時都是讓拿筆寫,我相信沒幾個人能用筆在短時間內把這些東西都寫出來,尤其是後面的寫**的,需要反覆修改,因為你在思考的過程中邏輯肯定會出現些漏洞,需要將**執行下才能明白**出了問題,用筆寫真的是扯淡。就算在計算機上寫,後面的一些**我還寫了2,3個小時呢。

各位都看看我的答案,有有沒有疏漏或錯誤的地方,我並不是覺得考這些東西完全沒有價值,只是覺得面試時作為筆試題很不妥。希望各位在各個公司參與面試別人的朋友能參考下我的意見,換一種更加合理的考核方式。

幾個面試題

1 公司裡面有1001個員工,現在要在公司裡面找到最好的羽毛球選手,也就是第一名,每個人都必須參賽,問至少要比賽多少次才能夠找到最好的羽毛球員工 2 現在有100個燈泡,每個燈泡都是關著的,第一趟把所有的燈泡燈泡開啟,第二趟把偶數字的燈泡制反 也就是開了的關掉,關了的開啟 第三趟讓第3,6,9.的燈...

幾個面試題

面試的時候被問到的幾個c 的題目 1.空類的大小 答 0 2.空類自帶幾個函式 答 1.建構函式 2.析構函式 3.拷貝構造 4.賦值操作符 5.取位址操作符 6.const取位址 3.父類的析構函式為什麼要是虛函式 父類指標指向乙個子類物件,析構這個父類指標時,如析構函式不是虛函式,將不會析構子物...

幾個面試題

1.請找出今天氣溫比昨天高的天氣記錄 天氣溫度表 id int date date temperature 120170101212 20170102203 20170103254 2017010422 輸出值 我的答案,當時寫不出來 select from weather w2 where w2....