一套PHP 面試題

2021-06-29 16:27:46 字數 4277 閱讀 5681

《來自 cnmm22:>

1、語句include和require都能把另外乙個檔案包含到當前檔案中,它們的區別是___;為避免多此包含同乙個檔案,可以用語句_____來代替它們。

1、php程式執行到require()時,只會讀取一次檔案,故常放在程式開頭,檔案引入後php會將網頁檔重新編譯,讓引入檔成為原先網頁的一部分。 2、php程式執行到include()時,每次皆會讀取檔案,故常用於流程控制的區段,如條件判斷或迴圈中。 3、require() :無條件包含,如果檔案不存在,會報出乙個fatal error.指令碼停止執行 4、include() : 有條件包含,如果檔案不存在,會給出乙個 warning,但指令碼會繼續執行 5、推薦使用require_once()和include_once(),可以檢測檔案是否有重複包含。

2、表單中 get與post提交方法的區別?

post方法比較適合用於傳送乙個保密的(比如信用卡號)或者比較大量的資料到伺服器,但速度慢。而get方法會將所要傳輸的資料附在**後面,然後一起送達伺服器,因此傳送的資料量就會受到限制且不安全,但是執行效率卻比 post方法好。具體來說如下:

1、get將表單中資料的按照variable=value的形式,新增到action所指向的url後面,並且兩者使用「?」連線,而各個變數之間使用「&」連線;post是將表單中的資料放在form的資料體中,按照變數和值相對應的方式,傳遞到action所指向url。

2、get是不安全的,因為在傳輸過程,資料被放在請求的url中,而如今現有的很多伺服器、**伺服器或者使用者**都會將請求url記錄到日誌檔案中,然後放在某個地方,這樣就可能會有一些隱私的資訊被第三方看到。另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部訊息將會一同顯示在使用者面前。post的所有操作對使用者來說都是不可見的。

3、get傳輸的資料量小,這主要是因為受url長度限制;而post可以傳輸大量的資料,所以在上傳檔案只能使用post(當然還有乙個原因,將在後面的提到)。

4、get限制form表單的資料集的值必須為ascii字元;而post支援整個iso10646字符集。

5、get是form的預設方法。

3、foo()和@foo()之間有什麼區別?

php 支援乙個錯誤控制運算子:@。當將其放置在乙個 php 表示式之前,該表示式可能產生的任何錯誤資訊都被忽略掉。

注意: @ 運算子只對表示式有效。對新手來說乙個簡單的規則就是:如果能從某處得到值,就能在它前面加上 @ 運算子。

例如,可以把它放在變數,函式和include()呼叫,常量,等等之前。不能把它放在函式或類的定義之前,也不能用於條件結構例如 if 和 foreach 等。

4、php中===和==有什麼區別?

===會比較兩個變數的型別~~   

而==只比較他們的值~~~  

5、簡述div元素和span元素的區別

他們同為塊級元素,但span又是內聯物件

舉例來說:第一例1

第一例1

顯示的效果是:第一例1

第一例1

而第二例2

第二例2

顯示的效果是:第二例2第二例2

你可以理解為div預設寬度是100%,而span無缺省寬度

最明顯的區別是:div是塊元素,span是內嵌元素。塊元素相當於內嵌元素在前後各加乙個

換行。其實,塊元素和行內元素也不是一成不變的,只要給塊元素定義display:inline,塊元素就成了內嵌元素,同樣地,給內嵌元素定義了display: block就成了塊元素了。

6、isset();empty();有什麼區別?對於不同的資料的判斷的結果?

$a=0;$a=』0′;$a=」;$a=false;$a=null;

isset判斷變數是否存在,如果存在則返回真,empty判斷變數是否為空,如果為空則返回真。

isset判斷:true,true,true,true,false。

empty判斷:true,true,true,true,true。

7、請說明php中傳值和傳引用的區別?什麼時候傳值什麼時候傳引用?

傳值:函式內對傳送變數修改不影響被傳變數的值(用傳送值對函式的內的變數重新賦值)

引用:傳送變數的引用,函式內的任何操作等同於對傳送變數的操作,傳送大型變數時效率高!

8、echo(),print(),print_r()的區別

echo是php語句, print和print_r是函式,語句沒有返回值,函式可以有返回值(即便沒有用)  

print只能列印出簡單型別變數的值(如int,string)  

print_r可以列印出複雜型別變數的值(如陣列,物件)  

9、sort()  assort()  ksort()  有什麼區別?  它們分別在什麼情況下使用?

sort(),根據陣列中元素的值,以英文本母順序排序,索引鍵會由0到n-1重新編號。主要是當陣列索引鍵的值無關緊要時用來把陣列排序。 

assort(),php沒有assort()函式,所以可能是asort()的筆誤。asort(),對陣列進行排序,陣列的索引保持和單元的關聯。主要用於對那些單元順序很重要的結合陣列進行排序。 

ksort(),根據陣列中索引鍵的值,以英文本母順序排序,特別適合用於希望把索引鍵排序的關聯陣列。

10、mysql_fetch_row() 和mysql_fetch_array()之間有什麼區別?

這兩個函式,返回的都是乙個陣列,區別就是第乙個函式返回的陣列是只包含值,我們只能$row[0],$row[1],這樣以陣列下標來讀取資料,而mysql_fetch_array()返回的陣列既包含第一種,也包含鍵值對的形式,我們可以這樣讀取資料,(假如資料庫的字段是 username,passwd):

$row['username'], $row['passwd']

11、mysql的儲存引擎myisam和innodb的區別?

兩種型別最主要的差別就是innodb 支援事務處理與外來鍵和行級鎖。而myisam不支援.所以myisam往往就容易被人認為只適合在小專案中使用。

myisam型別不支援事務處理等高階處理,而innodb型別支援。myisam型別的表強調的是效能,其執行數度比innodb型別更快,但是不提供事務支援,而innodb提供事務支援以及外部鍵等高階資料庫功能。

12、抽象類和介面類有什麼區別?

一、抽象類裡面的方法可以有實現,但是介面裡面的方法確是只能宣告。

二、介面是設計的結果 

抽象類是重構的結果 

三、介面是特殊的抽象類,特殊在,介面中所有的方法都是抽象方法,介面中的屬性只能為靜態最終的常量

1.介面體現的是一種規範,抽象類體現的是模板式設計。

2.介面裡的方法全部是抽象方法,抽象類裡可以有方法實現。

3.介面裡不可以定義靜態方法,抽象類裡可以。

4.介面裡的變數全部為靜態常量,抽象類裡可以有普通變數。

5.介面裡不可以有建構函式和初始化塊,抽象類裡可以有。

6.乙個類可以實現多個介面,但只能繼承乙個抽象類。

13、cookie和session的區別,禁止了cookie後session能正常使用嗎?session的缺點是什麼?session在伺服器端是存在**的?是共有的還是私有的?

1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。 2、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙 考慮到安全應當使用session。 3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能 考慮到減輕伺服器效能方面,應當使用cookie。 4、單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie。 sesion存在的前提是瀏覽器支援cookie,使用者第一次訪問**時,cookie內沒有session id,然後伺服器是把sesion id寫入了cookie,以後每次訪問都從cookie獲得的.  但如果該使用者瀏覽器不支援cookie,那麼每次請求都沒有session id,伺服器就會  每次都認為使用者是不同的使用者,根本沒法在伺服器上儲存使用者之前一些操作結果.

14、->和::操作符的區別

類中 靜態方法和靜態屬性的引用方法

例如class test

}可以不用例項化物件直接使用 test::$test 來取得$test屬性的值

靜態方法呼叫也同理test::test(); 直接呼叫靜態方法test

在訪問php類中的成員變數或方法時,如果被引用的變數或者方法被宣告成const(定義常量)或者static(宣告靜態),那麼就必須使用操作符::,反之如果被引用的變數或者方法沒有被宣告成const或者static,那麼就必須使用操作符->。

另外,如果從類的內部訪問const或者static變數或者方法,那麼就必須使用自引用的self,反之如果從類的內部訪問不為const或者static變數或者方法,那麼就必須使用自引用的$this。

Java Web開發面試題一套 3

21 銷毀乙個session物件,應當呼叫下面哪乙個方法 a.session.invalidate b.session.expunge c.session.destroy d.session.end 22 actionform bean 中驗證表單資料方法的返回型別是 a.actionerror b...

一套Unix面試題(帶答案) 4

61.korn shell輸出變數用 2 export 62.對於smp 對稱多處理機 的cpu效能監視來說,我們可以用vmstat命令得到每個cpu的工作負荷情況 2 錯誤 63.在linux執行環境下,刪除lilo的命令是 假設lilo安裝在hda 2 lilo d dev hda 64.raw...

一套Unix面試題(帶答案) 3

41.使用 tar cvz 命令將 1.3.4 1建立乙個歸檔檔案 3.顯示執行的過程 4.使用壓縮或解壓方式 42.linux系統中所有的檔案都被連線到乙個總的目錄樹中。1 正確 43.乙個多協議支援的x終端上的使用者,可以在與大型主機和另外乙個linux系統進行會話的同時,還可以通過撥號方式再與...