2019php面試題


 1.echo count("abcd"); 這個語句會輸出什么內容?

答:會輸出整型 “1”;

count —計算數組長度或對象中的屬性個數

int count (mixed$var [, int$mode ] ), 如果 參數var 不是數組類型或者實現了Countable 接口的對象,將返回 1,有一個例外,如果 var 是NULL 則結果是 0。

2.php的構造函數和析構函數?

答:

__construct();//構造函數 __destruct();//析構函數

3.對數據庫索引原理的理解。

答:索引的原理

  • 對查詢的字段建立索引其實是把該字段按照一定的方式排序;
  • 建立的索引只對該字段有用,如果查詢的字段改變,那么這個索引也就無效;
  • 索引太多會降低查詢的速度

4.linux下find和grep的區別?

答:find用來查找文件,grep用來查找文字內容

5.大流量網站,采用什么方式解決訪問問題?

答:

  • 確認服務器硬件是否足夠支持當前的流量。
  • 頁面靜態化或者緩存,嘗試優化數據庫的查詢SQL.避免使用Select * from這樣的語句,避免短時間內的大量SQL查詢,索引字段減少函數操作;
  • 禁止外部的盜鏈。
  • 控制大文件的下載。
  • 使用不同主機分流主要流量
  • 使用流量分析統計軟件。
  • 事務處理(事物具有原子性,一致性,隔離性,持久性四大特點)

6.session原理?大型網站session需要注意什么?

答:

session原理

->       代碼運行  

->  服務器上產生session文件和與之唯一對應的一個保存在客戶端的session_id  

->  內容存儲在session文件中  

->  客戶端將session_id傳遞給服務端  

->  服務端根據session_id找到對應的文件讀取並反序列化得到session的值

->  保存的時候先序列化再寫入。

      Session_id是取得存儲在服務器端Session變量的身份證。

大流量session注意:

1、解決Session文件過多,消耗IO性能

  建議:可以更改php.ini的 session.save_handler 參數為redis或memcache等內存緩存數據庫。

2、解決Session的同步問題:可能有很多台服務器,用戶在A服務器上登錄了,種下了session信息,然后訪問網站的某些頁面沒准跳到B服務器上去了,如果這個時候B服務器上沒有session信息又沒有做特殊處理,可能就會出問題了。

  解決方案:

  (1)更改php.ini的 session.save_handler 參數為redis或memcache等內存緩存數據庫

  (2)通過加密的cookie來實現,用戶在A服務器上登錄成功,在用戶的瀏覽器上種上一個加密的cookie,當用戶訪問B服務器時,檢查有無 session,如果有當然沒問題,如果沒有,就去檢驗cookie是否有效,cookie有效的話就在B服務器上重建session。

  (3)在負載均衡那一層保持會話,把訪問者綁定在某個服務器上,他的所有訪問都在那個服務器上就不需要session同步了(比如負載均衡中的ip_hash)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM