PHP常見面試題

2021-07-11 07:31:27 字數 3007 閱讀 1588

1.nginx使用哪種網路協議? 

nginx是應用層 我覺得從下往上的話 傳輸層用的是tcp/ip 應用層用的是http 

fastcgi負責排程程序 

可能伺服器上面沒有開啟短標籤short_open_tag =設定為off,,php.ini開啟短標籤控制引數: short_open_tag = on 

3. 簡述下面程式的輸出結果, 簡要說明為什麼, 如何解決這類問題? 

<?php 

$tmp = 0 == "a"? 1: 2; 

echo $tmp; 

?> 

結果 1 int和string型別強制轉換造成的,0==="a" 

0 == 0 肯定是true啊 

php是弱型別。。 

$tmp = 0 === "a"? 1: 2; 

echo $tmp; 這樣就是2 

4. 已知乙個字串如下: $str = "1109063 milo 1"; 

用一行**將該字串裡面的1109063賦值給$uid, milo賦值給$user, 1賦值給$type 

空格如下 

list($uid, $user, $type) = explode(" ", $str); 

\t如下 

list($uid, $user, $type) = explode("\t", $str); 

list($uid, $user, $type) = sscanf($str, "%d %s %d"); 

$n = sscanf($auth, "%d\t%s %s", $id, $first, $last); 

5. instanceof的作用, 經常在什麼設計模式中使用 

單例模式,但是其他的模式也會用到 

6. include和require 分別返回什麼錯誤級別 

include會系統警告並繼續執行,require會發出系統警告但是會引致致命錯誤令指令碼終止執行 

魔術函式 

1。__construct() 

例項化物件時被呼叫, 

當__construct和以類名為函式名的函式同時存在時,__construct將被呼叫,另乙個不被呼叫。 

2。__destruct() 

當刪除乙個物件或物件操作終止時被呼叫。 

3。__call() 

物件呼叫某個方法, 

若方法存在,則直接呼叫; 

若不存在,則會去呼叫__call函式。 

4。__get() 

讀取乙個物件的屬性時, 

若屬性存在,則直接返回屬性值; 

若不存在,則會呼叫__get函式。 

5。__set() 

設定乙個物件的屬性時, 

若屬性存在,則直接賦值; 

若不存在,則會呼叫__set函式。 

6。__tostring() 

列印乙個物件的時被呼叫。如echo $obj;或print $obj; 

7。__clone() 

轉殖物件時被呼叫。如:$t=new test();$t1=clone $t; 

8。__sleep() 

serialize之前被呼叫。若物件比較大,想刪減一點東東再序列化,可考慮一下此函式。 

9。__wakeup() 

unserialize時被呼叫,做些物件的初始化工作。 

10。__isset() 

檢測乙個物件的屬性是否存在時被呼叫。如:isset($c->name)。 

11。__unset() 

unset乙個物件的屬性時被呼叫。如:unset($c->name)。 

12。__set_state() 

呼叫var_export時,被呼叫。用__set_state的返回值做為var_export的返回值。 

13。__autoload() 

例項化乙個物件時,如果對應的類不存在,則該方法被呼叫。 

7:請問php中echo和print有什麼區別?
這兩個看起來很相似,因為它們都是將一些值列印在螢幕上。但是echo和print的本質區別在於:echo用來輸出字串,顯示多個值的時候可以用逗號隔開。只支援基本型別,print不僅可以列印字串值,而且可以列印函式的返回值。

回答:我們再網頁上填寫的表單資訊都可以通過這兩個方法將資料傳遞到伺服器上,當我們使用get方法是,所有的資訊都會出現在url位址中,並且使用get方法最多只能傳遞1024個字元,所以如果在傳輸量小或者安全性不那麼重要的情況下可以使用get方法。說到post方法,最多可以傳輸2mb位元組的資料,而且可以根據需要調節。

回答:php中使用define () 來定義常量。

define (「newconstant」, 30);

10、請說明php中傳值與傳引用的區別。什麼時候傳值什麼時候傳引用?(2分)

答:按值傳遞:函式範圍內對值的任何改變在函式外部都會被忽略

按引用傳遞:函式範圍內對值的任何改變在函式外部也能反映出這些修改

優缺點:按值傳遞時,php必須複製值。特別是對於大型的字串和物件來說,這將會是乙個代價很大的操作。

按引用傳遞則不需要複製值,對於效能提高很有好處。

11、mysql資料庫中的字段型別varchar和char的主要區別是什麼?那種欄位的查詢效率要高,為什麼?

varchar是變長,節省儲存空間,char是固定長度。查詢效率要char型快,因為varchar是非定長,必須先查詢長度,然後進行資料的提取,比char定長型別多了乙個步驟,所以效率低一些

12、echo count(「abc」); 輸出什麼?

答案:1

13. php class中static,public,private,protected的區別?

static 靜態,類名可以訪問

public 表示全域性,類內部外部子類都可以訪問;

private表示私有的,只有本類內部可以使用;

protected表示受保護的,只有本類或子類或父類中可以訪問;

常見面試題

1.get和post的區別 1 本質區別 get是向伺服器請求資料,post是向伺服器傳送資料。2 伺服器獲取值的方式 get方式提交的資料,伺服器端使用request.querystring獲取變數的值。post方式提交的資料,伺服器端使用request.form獲取資料。3 安全性 get安全效...

常見面試題

1 一行 實現1 100之和 lst i for i in range 1,101 print sum lst 2 如何在乙個函式內部修改全域性變數?在函式內部新增 global 變數名 這樣就可以在本地作用域定義全域性作用域了 name 大明 def eat name1 global name n...

常見面試題

dns解析 發起tcp三次握手,並建立tcp連線 發起http請求 伺服器相應http請求並得到html 伺服器解析html 並對頁面進行渲染然後返回給使用者 首先先進行ioc容器的初始化 ioc 容器的初始化過程分為三步驟 resource 定位 beandefinition 的載入和解析,bea...