php開發面試題---php高級程序員需要掌握的一些知識
一、總結
一句話總結:
還是需要多多接觸架構師的知識,比如這里說的微服務,還有需要php服務端的知識來解決web端的不足,比如Swoole
1、php如果web端不能滿足需求,比如性能不夠,比如phpexcel插件導入5000條數據就會造成數據溢出的問題,我們解決問題的考慮方式?
用php服務端:php cli
2、Swoole是什么?
PHP 異步網絡通信引擎:Swoole是一個面向生產環境的 PHP 異步網絡通信引擎,使 PHP 開發人員可以編寫高性能的異步並發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務。
Swoole 可以廣泛應用於互聯網、移動通信、企業軟件、雲計算、網絡游戲、物聯網(IOT)、車聯網、智能家居等領域。 使用 PHP + Swoole 作為網絡通信框架,可以使企業 IT 研發團隊的效率大大提升。
3、Swoole應用場景?
移動互聯網API服務器
高性能Web服務
游戲服務器
在線聊天系統
4、Swoole特性?
事件驅動的異步編程模式
支持並發百萬TCP長連接
異步TCP/UDP/HTTP/WebSocket/HTTP2協議的服務器端/客戶端
支持異步/同步/協程
異步TCP/UDP/HTTP/WebSocket/HTTP2協議的服務器端/客戶端 支持IPv4/IPv6/UnixSocket/TCP/UDP 支持SSL/TLS隧道加密 支持並發百萬TCP長連接 支持毫秒定時器 支持異步/同步/協程 支持CPU親和性設置/守護進程
5、swoft協程框架是什么?
PHP 協程框架,可以用於構建高性能的Web系統、API、中間件、基礎服務
6、天貓商城,比如過年或者雙11,為什么網頁有些功能(比如鞋子)掛了,有些功能(比如電器)還可以正常使用?
因為不同的功能可能是放在不同的服務器上面的
7、consul是什么?
分布式架構中的服務治理,和ZooKeeper類似
在分布式架構中,服務治理是一個重要的問題。在沒有服務治理的分布式集群中,各個服務之間通過手工或者配置的方式進行服務關系管理,遇到服務關系變化或者增加服務的時候,人肉配置極其麻煩且容易出錯。之前在一個C/C++項目中,采用ZooKeeper進行服務治理,可以很好的維護服務之間的關系,但是使用起來較為麻煩。現在越來越多新的項目采用consul進行服務治理,各方面的評價都優於ZooKeeper,經過幾天的研究,這里做一個總結。
8、比如新聞網站一天1000萬訪問,最好的優化方式是什么?
直接頁面靜態化就好,因為交互少,沒有必要微服務化
9、微服務化的適用場景是什么?
動態通訊的功能比較多
10、微服務化是什么?
微服務是一種架構風格,這種架構風格具有一些特點:①獨立進程;②輕量級通信機制;③圍繞業務能力進行構建;④由一組小的服務組成
11、互聯網架構為什么要做微服務化?
高並發訪問
12、微服務架構多“微”才合適?
以“子業務系統”粒度作為微服務的單位是比較合適的
粒度粗細的優劣 上文中談到的服務化與微服務,不同粒度的服務化各有什么優劣呢? 總的來說,細粒度拆分的優點有: (1)服務都能夠獨立部署 (2)擴容和縮容方便,有利於提高資源利用率 (3)拆得越細,耦合相對會減小 (4)拆得越細,容錯相對會更好,一個服務出問題不影響其他服務 (5)擴展性更好 細粒度拆分的不足也很明顯: (1)拆得越細,系統越復雜 (2)系統之間的依賴關系也更復雜 (3)運維復雜度提升 (4)監控更加復雜 (5)出問題時定位問題更難
13、消息中間件的適用場景?
划分微服務之后,不同的微服務之間需要通過消息中間件進行通信
14、分布式和微服務是緊密相連的,這句話如何理解?
分布式和微服務都是將大功能拆分成小功能,從而實現高並發的開發
15、如何處理學習php和學習java的關系?
php真正學精通之后,再去學java,學好一門之后,再去學另外一門
16、比如搞人工智能這些賺錢的,本質是做什么?
算法,所以算法還是要好好搞
二、內容在總結中
