您好,登錄后才能下訂單哦!
這篇文章主要講解了“PHP的相關面試題有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP的相關面試題有哪些”吧!
1. 看你簡歷里也有用過 Go,Go 和 PHP 在運行的時候有什么區別和優勢?
答:PHP 每個請求進來時都會創建 fpm-worker 進程,從而導致系統并發高時 CPU 會產生頻繁創建進程的開銷,而 Go 不會。
2. 你剛剛說到 PHP 那既然是多進程,那怎么共享數據?
答:PHP 既然是多進程,進程資源的地址和 PCB 空間都是獨立的,沒辦法共享數據吧。
3. 那我如果要在 Go 里實現共享數據,有什么方式?
答:我在項目里使用過協程,可以用 channel
4. 那 channel 的本質和底層是什么?
答:這個知識點有點模糊,我想想,如果沒記錯,我記得就是 linux 的管道吧
5. 那 linux 的管道有什么特性?
答:管道的特性應該是只能等一邊寫完,另一邊才能讀,不知道我回答的對不對?
6. 對你說得沒錯,那你覺得管道是用什么實現的?
答:不好意思,這題我不會
7. 其實管道就是文件,那對文件操作就是加鎖
答:對對對,我想起來了,其實這里涉及到資源的搶占,那系統對資源的搶占肯定就是加鎖實現。
8. 既然剛剛你也提到協程,可以描述下 Go 的協程原理嗎?
答:Go 的協程是基于 CSP 并發模型的 GPM 調度機制,M 可以理解為處理機 CPU,P 就是 Go 底層用來管理 Goroutine 協程的。
9.(這個時候面試官拿了一張白紙過來)寫一個二分查找的算法看看吧,用 PHP 或 Go 都可以
答:好,那我用 PHP 寫吧(PS: 這里我用的是遞歸法,要注意二分查找的臨界問題)
10. 嗯,算法沒問題,問一點網絡的吧,socket 用過嗎?
答:websocket 用過,在做直播聊天室的時候會用到長連接
11. 那你覺得 websocket 是基于什么協議?
答:是基于 TCP 協議的
12.TCP 客戶端和服務端是怎么建立連接通信的?
答:(ps:一開始答錯了,我說是 ack 吧,面試官糾正是 syn)然后我恍然大悟接著說,第一步是客戶端發送 syn,第二步是服務器應答 syn+ack, 第三步是客戶端回復 ack
13. 那 TCP 握手是幾次,斷開是幾次?
答:握手是三次,斷開是四次(ps: 有些面試官會問為什么斷開要四次,這里涉及到半連接等待關閉,幸好沒問)
14. 假設我們現在要做一對一視頻聊天,每日 DAU 可能達到幾十萬以上,后端怎么實現一對一匹配的算法?還有,怎么實現快速的匹配服務器不會有壓力問題?
答:我想一下。用戶登錄的時候,如果未開始匹配,可以把用戶放到 redis 里的 set 集合里,通過 SRANDMEMBER 命令隨機抽取人出來就好了 ,至于 redis 的 value 最大可以保持 512m 數據,也就是理論上我們承載可以達到上千萬上億用戶都不是問題,至于要保持 redis 的高可用,可以用 rdb 或 aof 做數據持久化,另外,redis 也有哨兵模式,主 redis 掛了也可以選舉抽取空閑的 redis 服務器頂上
15.mysql 主從的時候有沒有遇到過主從延遲同步的情況?是怎么解決的?
答:emmmmm,這個情況我還沒遇到過。
16. 你也知道我們是做社交 APP 的,如果我們要做一些興趣推薦的內容或者人,你會怎樣實現?
答:可以用 ElasticSearch,我以前的項目有配合 ik 中文分詞使用,缺點是比較吃機器內存。
感謝各位的閱讀,以上就是“PHP的相關面試題有哪些”的內容了,經過本文的學習后,相信大家對PHP的相關面試題有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。