身為php工程師在面試的時候必定會接觸一些面試題,本文主要和大家分享一些PHP基礎面試題整理,希望能幫助到大家。
雙引號單引號區別
#雙引號解釋變量,單引號不解釋變數
雙引號裡插入單引號,其中單引號裡如果有變數的話,變數解釋
雙引號的變數名稱後面必須要有一個非數字、字母、底線的特殊字符,或用{}講變數括起來,否則會將變數名稱後面的部分當做一個整體,引起語法錯誤
能使單引號字元盡量使用單引號,單引號的效率比雙引號高
GET和POST提交方式的差異
GET產生一個TCP封包; POST產生兩個TCP封包;
對於GET方式的請求,瀏覽器會把http header和data一併發送出去,伺服器回應200(返回資料)
對於POST,瀏覽器先發送header,伺服器回應100 continue,瀏覽器再發送data,伺服器回應200 ok(回傳資料)。
GET在瀏覽器回退時是無害的,而POST會再次提交請求
GET請求會被瀏覽器主動cache ,而POST不會,除非手動設定
GET請求參數會被完整地保留在瀏覽器歷史記錄裡,而POST中的參數不會被保留
GET請求只能進行url編碼,而POST支援多種編碼方式
GET比POST更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感資訊
如何取得客戶端的真實ip
$_SERVER['REMOTE_ADDR']或getenv('REMOTE_ADDR')
include和require的區別
require是無條件包含,也就是如果一個流程裡加入require,無論條件成立與否都會先執行require,當檔案不存在或無法開啟的時候,會提示錯誤,並且會終止程式執行
include有回傳值,而require沒有(可能因為如此require的速度比include快),如果被包含的檔案不存在的化,那麼會提示一個錯誤,但是程式會繼續執行下去
注意:包含檔案不存在或語法錯誤的時候require是致命的,而include不是
AJAX的優勢是什麼
ajax是異步傳輸技術,可以透過javascript實現,也可以透過JQuery框架實現,實現局部刷新,減輕了伺服器的壓力,也提高了使用者體驗
在程式的開發中,如何提升程式的運作效率
優化SQL語句,查詢語句中盡量不使用select *,用哪個字段查哪個字段;
少用子查詢可用表連接代替;
少用模糊查詢;
在資料表中建立索引;
#對程式中常用到的資料產生快取;
#SESSION與COOKIE的差異
儲存位置:session儲存在伺服器,cookie儲存在瀏覽器
安全性: session安全性高於cookie
isset和empty的區別
isset()函數一般用來偵測變數是否設定
若變數不存在則回傳FALSE
若變數存在且其值為NULL,也傳回FALSE
若變數存在且值不為NULL,則傳回TURE
empty()函數是檢查變數是否為空
若變數不存在則回傳TRUE
若變數存在且其值為""、0、"0"、NULL、 、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回TURE
若變數存在且值不為""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則傳回FALSE
資料庫三範式
第一範式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解;
第二範式:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;
第三範式:3NF是對字段冗餘性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗餘。
主鍵、外鍵和索引的區別
#定義
主鍵--唯一標識一筆記錄,不能有重複的,不允許為空
外鍵--表的外鍵是另一表的主鍵, 外鍵可以有重複的, 可以是空值
索引--該欄位沒有重複值,但可以有一個空值
作用
主鍵--用來保證資料完整性
外鍵--用來和其他表建立聯繫用的
索引--是提高查詢排序的速度
個數
主鍵--主鍵只能有一個
外鍵--一個表格可以有多個外鍵
索引--一個表可以有多個唯一索引
堆疊和堆疊的區別
堆疊是編譯期間就分配好的記憶體空間,因此你的程式碼中必須就棧的大小有明確的定義;
堆是程式運作期間動態分配的記憶體空間,你可以根據程式的運作情況來決定要分配的堆記憶體的大小。
相關推薦:
以上是PHP基礎面試題整理的詳細內容。更多資訊請關注PHP中文網其他相關文章!