騰訊 PHP 面試必備知識

phper666發表於2019-05-09

限於篇幅,完整試題請自行下載:https://u13950671.ctfile.com/fs/13950671-3...

  1. php的垃圾回收機制

PHP可以自動進行記憶體管理,清除不需要的物件。

PHP使用了引用計數(reference counting) GC機制。

每個物件都內含一個引用計數器refcount,每個reference連線到物件,計數器加1。當reference離開生存空間或被設為NULL,計數器減1。當某個物件的引用計數器為零時,PHP知道你將不再需要使用這個物件,釋放其所佔的記憶體空間。

參考 http://www.php.net/manual/zh/features.gc.r...

  1. session與cookie的區別和聯絡

區別:

1.存放位置:Session儲存在伺服器,Cookie儲存在客戶端。

2.存放的形式:Session是以物件的形式儲存在伺服器,Cookie以字串的形式儲存在客戶端。

3.用途:Cookies適合做儲存使用者的個人設定,愛好等,Session適合做客戶的身份驗證

4.路徑:Session不能區分路徑,同一個使用者在訪問一個網站期間,所有的Session在任何一個地方都可以訪問到。而Cookie中如果設定了路徑引數,那麼同一個網站中不同路徑下的Cookie互相是訪問不到的。

5.安全性:Cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙,考慮到安全應當使用session

6.大小以及數量限制:每個域名所煲含的cookie 數:IE7/8,FireFox:50個, Opera30個; Cookie總大小:Firefox和Safari允許cookie多達4097個位元組,Opera允許cookie多達4096個字 節,InternetExplorer允許cookie多達4095個位元組;一般認為Session沒有大小和數量限制。

聯絡:

  1. Session需要藉助Cookie才能正常工作。如果客戶端完全禁止Cookie,Session將失效!因為Session是由應用伺服器維持的一個 伺服器端的儲存空間,使用者在連線伺服器時,會由伺服器生成一個唯一的SessionID,用該SessionID 為識別符號來存取伺服器端的Session儲存空間。而SessionID這一資料則是儲存到客戶端,用Cookie儲存的,使用者提交頁面時,會將這一 SessionID 提交到伺服器端,來存取Session資料。這一過程,是不用開發人員干預的。所以一旦客戶端禁用Cookie,那麼Session也會失效。

  2. 如何修改SESSION的生存時間

  3. 設定瀏覽器儲存的sessionid失效時間 setcookie(session_name(), session_id(), time() + $lifeTime, "/");

  4. 可以使用SESSION 自帶的 session_set_cookie_params(86400); 來設定 Session 的生存期

  5. 通過修改php.ini中的session.gc_maxlifetime引數的值就可以改變session的生存時間

  6. PHP頁面重定向的方法有哪些

  7. header('Location: http://www.baidu.com/') ;

  8. echo '';

3 echo '';

  1. PDO、adoDB、PHPLib資料庫抽象層比較

PHP資料庫抽象層就是指,封裝了資料庫底層操作的介於PHP邏輯程式程式碼和資料庫之間的中介軟體。

PDO以PHP 5.1為基礎進行設計,它使用C語言做底層開發,設計沿承PHP的特點,以簡潔易用為準,從嚴格意義上講,PDO應該歸為PHP 5的SPL庫之一,而不應該歸於資料抽象層,因為其本身和MySQL和MySQLi擴充套件庫的功能類似。PDO是不適合用在打算或者有可能會變更資料庫的系 統中的。

ADODB不管後端資料庫如何,存取資料庫的方式都是一致的;

轉移資料庫平臺時,程式程式碼也不必做太大的更動,事實上只需要改動資料庫配置文 件。提供了大量的拼裝方法,目的就是針對不同的資料庫在抽象層的底層對這些語句進行鍼對性的翻譯,以適應不同的資料庫方言!但是這個抽象層似乎體積過於龐 大了,全部檔案大概有500K左右,如果你做一個很小的網站的話,用這個似乎大材小用了

PHPLib可能是伴隨PHP一同成長最老的資料庫抽象層(但和ADODB相比,它只算是一個MySQL抽象類庫),這個抽象類使用方法相當簡單,體積小,是小型網站開發不錯的選擇。

PDO提供預處理語句查詢、錯誤異常處理、靈活取得查詢結果(返回陣列、字串、物件、回撥函式)、字元過濾防止SQL攻擊、事務處理、儲存過程。

ADODB支援 快取查詢、移動記錄集、(HTML、分頁、選擇選單生成)、事務處理、輸出到檔案。 參考 http://apps.hi.baidu.com/share/detail/4636...

  1. 長連線、短連線的區別和使用

長連線:client方與server方先建立連線,連線建立後不斷開,然後再進行報文傳送和接收。這種方式下由於通訊連線一直存在。此種方式常用於P2P通訊。

短連線:Client方與server每進行一次報文收發交易時才進行通訊連線,交易完畢後立即斷開連線。此方式常用於一點對多點通訊。C/S通訊。

長連線與短連線的使用時機:

長連線:

短連線多用於操作頻繁,點對點的通訊,而且連線數不能太多的情況。每個TCP連 接的建立都需要三次握手,每個TCP連線的斷開要四次握手。如果每次操作都要建立連線然後再操作的話處理速度會降低,所以每次操作下次操作時直接傳送資料 就可以了,不用再建立TCP連線。例如:資料庫的連線用長連線,如果用短連線頻繁的通訊會造成socket錯誤,頻繁的socket建立也是對資源的浪 費。

短連線:

web網站的http服務一般都用短連線。因為長連線對於伺服器來說要耗費一定 的資源。像web網站這麼頻繁的成千上萬甚至上億客戶端的連線用短連線更省一些資源。試想如果都用長連線,而且同時用成千上萬的使用者,每個使用者都佔有一個 連線的話,可想而知伺服器的壓力有多大。所以併發量大,但是每個使用者又不需頻繁操作的情況下需要短連線。

參考http://www.cnblogs.com/Roberts/archive/2010/12/05/1986550.html

  1. HTTP協議詳解、應用

http(超文字傳輸協議)是一個基於請求與響應模式的、無狀態的、短連線、靈活、應用層的協議,常基於TCP 的連線方式。

參考 http://blog.csdn.net/gueter/article/detail...  (http協議詳解)

(HTTP響應狀態碼)

HTTP響應狀態碼

狀態程式碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:

1xx:指示資訊--表示請求已接收,繼續處理

2xx:成功--表示請求已被成功接收、理解、接受

3xx:重定向--要完成請求必須進行更進一步的操作

4xx:客戶端錯誤--請求有語法錯誤或請求無法實現

5xx:伺服器端錯誤--伺服器未能實現合法的請求

常見狀態程式碼、狀態描述、說明:

200 OK      //客戶端請求成功

400 Bad Request  //客戶端請求有語法錯誤,不能被伺服器所理解

401 Unauthorized //請求未經授權,這個狀態程式碼必須和WWW-Authenticate報頭域一起使用  403 Forbidden  //伺服器收到請求,但是拒絕提供服務

404 Not Found  //請求資源不存在,eg:輸入了錯誤的URL

500 Internal Server Error //伺服器發生不可預期的錯誤

503 Server Unavailable  //伺服器超時          //可能恢復正常

304 Not Modifed  //自從上次請求後,請求的網頁未修改過。

//伺服器返回此響應時,不會返回網頁內容。

  1. 異構系統通訊中的通訊加密方案

參考 http://blog.csdn.net/linvo/article/details...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章