高級php面試題

      網友投稿 691 2025-03-31

      https://mp.weixin.qq.com/s/06otf79ABq_cfzwo3CY3xA

      面試是找工作必不可少的環節,尤其是像做網站小編這種技術開發類型的職業,面試題是用于考驗一個開發人員的知識面以及經驗的重要衡量依據。今天做網站小編就和大伙聊聊php的一些面試題,但愿對你有所幫助...

      假如有1億用戶的訪問量,你的服務器架構是怎樣的? 用戶信息的存儲方案如何設計?

      點評:

      A、此問答也比較泛,考察的是對解決一個問題的分析思路;

      B、從哪些方面,哪些層面對問題進行考察;

      C、對于想到的方面和層面,再細致挖掘考慮是否嚴謹;

      D、用戶信息存儲考察面試者對用戶信息業務本身的了解、存儲方式及其特點的了解。

      如果你是技術組長,所帶團隊任務進度無法完成你該如何解決?如果在進度排滿的前提下插入任務,你該如何保證總進度不延期?如果有的工程師今天預定任務沒有完成,你該如何解決?

      點評:

      A、考察帶隊能力;?B、注意不是所有的問題都有非常肯定和完美的答案,思考和解決問題的方式,比回答問題本身更為重要。

      從你的經驗方面談一下如何構建高性能web站點? 需要哪些環節? 步驟? 每個步驟需要注意什么如何優化等?

      參考提示點:帶寬、DNS、CDN、gzip、負載均衡以及數據庫等。

      技術型問題

      for與foreach哪個更快?

      foreach 的效率要比 for 高很多,也許有很大的一個原因是 for 要進行很多次條件判斷。所以以后能用 foreach 的地方就用 foreach ,可以提高1倍的效率。

      如果循環內要調用函數,用?array_walk?最好,它的效率要比 for 高出1倍,要比 foreach 高出43%的效率。

      PECL 和 PEAR 有什么區別?

      PECL (PHP Extension Community Library) 可以看作 PEAR (PHP Extension and Application Repository) 的一個組成部分,提供了與 PEAR 類似的功能。不同的是 PEAR 的所有擴展都是用純粹的 PHP 代碼編寫的,用戶在下載到 PEAR 擴展以后可以直接使用將擴展的代碼包含到自己的 PHP 文件中使用。而 PECL 是使用 C 語言開發的,通常用于補充一些用 PHP 難以完成的底層功能,往往需要重新編譯或者在配置文件中設置后才能在用戶自己的代碼中使用。

      最直接的表述:PEAR 是 PHP 的上層擴展,PECL 是 PHP 的底層擴展。它們都是為特定的應用提供現成的函數或者類。

      如何處理多服務器共享 Session ?

      大致上有三種方式可以處理:

      數據庫/文件同步 session

      cookie 同步 session

      緩存 (如 memcache )同步 session

      推薦使用最后緩存同步方案。

      什么是跨站腳本?SQL注入?

      跨站腳本( XSS )是一種計算機安全漏洞,是代碼注入的一種,通常出現在web應用程序上。它允許惡意用戶將代碼注入到網頁上,其他用戶觀看網頁時就會收到影響。這種攻擊通常包含了html以及客戶端腳本語言

      SQL 注入是發生于應用程序數據庫層的安全漏洞。是在輸入的字符中注入 SQL 指令,在設計不良的程序中忽略了檢查,那么這些注入的指令會被數據庫誤認為是正常的 SQL 指令而運行,因此遭到破壞。

      描述一下大流量高并發量網站的解決方案?

      確認服務器硬件是否足夠支持當前的流量。

      使用?memcache?緩存技術,將動態數據緩存到文件中,動態網頁直接調用這些文件,而不必在訪問數據庫。

      禁止外部的盜鏈。外部網站的圖片或者文件盜鏈往往會帶來大量的負載壓力,因此應該嚴格限制外部對自身圖片或者文件盜鏈,可以通過apache的URL重定向來防止盜鏈。

      控制大文件的下載。大文件的下載會占用很大的流量,對于非SCSI硬盤來說會消耗,使得網站響應能力下降。

      使用不同的主機分流主要流量。

      使用流量統計軟件。在網站上安裝一個流量統計軟件,可以即時知道哪些地方耗費了大量流量,哪些頁面需要再進行優化。

      PHP內存管理機制與垃圾回收機制

      php 的內存管理機制是:預先給出一塊空間,用來存儲變量,當空間不夠時,再申請一塊新的空間。

      存儲變量名,存在符號表。

      變量值存儲在內存空間。

      在刪除變量的時候,會將變量值存儲的空間釋放,而變量名所在的符號表不會減小。

      php 垃圾回收機制是:

      在5.2版本或之前版本,PHP會根據 引用計數 ( refcount )值來判斷是不是垃圾,如果refcount值為0,PHP會當做垃圾釋放掉,這種回收機制有缺陷,對于環狀引用的變量無法回收。

      在5.3之后版本改進了垃圾回收機制。具體如下:

      如果發現一個 zval 容器中的 refcount 在增加,說明不是垃圾; 如果發現一個 zval 容器中的 refcount 在減少,如果減到了0,直接當做垃圾回收; 如果發現一個 zval 容器中的 refcount 在減少,并沒有減到0,PHP 會把該值放到緩沖區,當做有可能是垃圾的懷疑對象; 當緩沖區達到了臨界值,PHP 會自動調用一個方法去遍歷每一個值,如果發現是垃圾就清理。

      為什么要對數據庫進行主從分離?

      一 什么是讀寫分離

      MySQL Proxy最強大的一項功能是實現“讀寫分離(Read/Write Splitting)”。基本的原理是讓主數據庫處理事務性查詢,而從數據庫處理SELECT查詢。數據庫復制被用來把事務性查詢導致的變更同步到集群中 的從數據庫。 當然,主服務器也可以提供查詢服務。使用讀寫分離最大的作用無非是環境服務器壓力。可以看下這張圖:

      二 讀寫分離的好處

      1.增加冗余

      2.增加了機器的處理能力

      3.對于讀操作為主的應用,使用讀寫分離是最好的場景,因為可以確保寫的服務器壓力更小,而讀又可以接受點時間上的延遲。

      高級php面試題

      三 讀寫分離提高性能之原因

      1、物理服務器增加,負荷增加

      2、主從只負責各自的寫和讀,極大程度的緩解X鎖和S鎖爭用

      3、從庫可配置myisam引擎,提升查詢性能以及節約系統開銷

      4、從庫同步主庫的數據和主庫直接寫還是有區別的,通過主庫發送來的binlog恢復數據,但是,最重要區別在于主庫向從庫發送binlog是異步的,從庫恢復數據也是異步的

      5、讀寫分離適用與讀遠大于寫的場景,如果只有一臺服務器,當select很多時,update和delete會被這些select訪問中的數據堵塞,等待select結束,并發性能不高。 對于寫和讀比例相近的應用,應該部署雙主相互復制

      6、可以在從庫啟動是增加一些參數來提高其讀的性能,例如--skip-innodb、--skip-bdb、--low-priority-updates以及--delay-key-write=ALL。當然這些設置也是需要根據具體業務需求來定得,不一定能用上

      7、分攤讀取。假如我們有1主3從,不考慮上述1中提到的從庫單方面設置,假設現在1 分鐘內有10條寫入,150條讀取。那么,1主3從相當于共計40條寫入,而讀取總數沒變,因此平均下來每臺服務器承擔了10條寫入和50條讀取(主庫不 承擔讀取操作)。因此,雖然寫入沒變,但是讀取大大分攤了,提高了系統性能。另外,當讀取被分攤后,又間接提高了寫入的性能。所以,總體性能提高了,說白 了就是拿機器和帶寬換性能。MySQL官方文檔中有相關演算公式:官方文檔 見6.9FAQ之“MySQL復制能夠何時和多大程度提高系統性能”

      8、MySQL復制另外一大功能是增加冗余,提高可用性,當一臺數據庫服務器宕機后能通過調整另外一臺從庫來以最快的速度恢復服務,因此不能光看性能,也就是說1主1從也是可以的。

      多線程和多進程的區別為?

      進程是程序在計算機上的一次執行活動。當你運行一個程序,你就啟動了一個進程。顯然,程序是死的(靜態的),進程是活的(動態的)。進程可以分為系統進程和用戶進程。凡是用于完成操作系統的各種功能的進程就是系統進程,它們就是處于運行狀態下的操作系統本身;所有由你啟動的進程都是用戶進程。進程是操作系統進行資源分配的單位。在 Windows 下,進程又被細化為線程,也就是一個進程下有多個能獨立運行的更小的單位。

      TCP/IP 網絡協議,OSI 7 層指是什么?

      TCP/IP 5層 指的是:

      應用層HTTP、FTP、SMTP、DNS、DSP、Telnet、Gopher、WAIS……傳輸層TCP、UDP、DVP……網絡層IP、ICMP、AKP、RARP、UUCP……接口層Ethernet、Arpanet、PDN……物理層只要能傳輸IP數據報(Datagram),允許任何協議……

      OSI 7層指的是:

      應用層 文件傳輸,電子郵件,文件服務,虛擬終端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示層 數據格式化,代碼轉換,數據加密 沒有協議會話層 解除或建立與別的接點的聯系 沒有協議傳輸層 提供端對端的接口 TCP,UDP網絡層 為數據包選擇路由 IP,ICMP,RIP,OSPF,BGP,IGMP數據鏈路層 傳輸有地址的幀以及錯誤檢測功能 SLIP,CSLIP,PPP,ARP,RARP,MTU物理層 以二進制數據形式在物理媒體上傳輸數據 ISO2110,IEEE802,IEEE802.2

      PHP 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:實用Word技巧分享:如何自動生成目錄?(怎么樣用word自動生成目錄?)
      下一篇:我是怎么博客粉絲轉到公眾號的
      相關文章
      国产亚洲人成在线影院| 在线精品自拍亚洲第一区| 噜噜噜亚洲色成人网站| 亚洲免费福利在线视频| 亚洲av无码久久忘忧草| 亚洲嫩草影院在线观看| 亚洲国产精品无码久久久| 久久精品亚洲一区二区三区浴池| 久久久久亚洲AV片无码| 国产亚洲无线码一区二区 | 亚洲免费观看在线视频| 亚洲精品午夜久久久伊人| 亚洲制服中文字幕第一区| 亚洲精品高清国产一久久| 婷婷亚洲综合五月天小说| 亚洲av无码成h人动漫无遮挡| 亚洲成Av人片乱码色午夜| 亚洲国产精品无码久久久不卡| 国产亚洲综合成人91精品| 国产亚洲A∨片在线观看| 亚洲成av人片天堂网| 内射少妇36P亚洲区| 在线观看亚洲人成网站| 亚洲精品国产第1页| 亚洲人成7777影视在线观看| avtt天堂网手机版亚洲| 伊人久久五月丁香综合中文亚洲| 最新国产成人亚洲精品影院| 亚洲欧美日韩综合俺去了| 自拍偷自拍亚洲精品偷一| 亚洲av高清在线观看一区二区| 亚洲婷婷国产精品电影人久久| 中文字幕亚洲天堂| 国产av无码专区亚洲av桃花庵| 亚洲AV无码一区二区二三区入口 | 亚洲精品自产拍在线观看| 亚洲ⅴ国产v天堂a无码二区| 亚洲网站在线免费观看| 亚洲国产成a人v在线观看| 国产精品亚洲一区二区麻豆| 欧美亚洲国产SUV|