日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

大环境下瑟瑟发抖辞职的第二天,拿了两个 offer

發(fā)布時(shí)間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大环境下瑟瑟发抖辞职的第二天,拿了两个 offer 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本來(lái)想找 PHP 的,誤打誤撞發(fā)現(xiàn)廣州的 Golang 和 PHP 混合用的公司還蠻多,恰好約面試的都是 Golang,挺納悶的難道 PHP 真的萎靡了?不過(guò)有時(shí)候?qū)?Go 結(jié)構(gòu)體真的不習(xí)慣,這一點(diǎn) PHP 的高級(jí)面向?qū)ο筇匦蕴懔恕?/p>

面試過(guò)程:

1. 看你簡(jiǎn)歷里也有用過(guò) Go,Go 和 PHP 在運(yùn)行的時(shí)候有什么區(qū)別和優(yōu)勢(shì)?

答:PHP 每個(gè)請(qǐng)求進(jìn)來(lái)時(shí)都會(huì)創(chuàng)建 fpm-worker 進(jìn)程,從而導(dǎo)致系統(tǒng)并發(fā)高時(shí) CPU 會(huì)產(chǎn)生頻繁創(chuàng)建進(jìn)程的開(kāi)銷,而 Go 不會(huì)。

2. 你剛剛說(shuō)到 PHP 那既然是多進(jìn)程,那怎么共享數(shù)據(jù)?

答:PHP 既然是多進(jìn)程,進(jìn)程資源的地址和 PCB 空間都是獨(dú)立的,沒(méi)辦法共享數(shù)據(jù)吧。

3. 那我如果要在 Go 里實(shí)現(xiàn)共享數(shù)據(jù),有什么方式?

答:我在項(xiàng)目里使用過(guò)協(xié)程,可以用 channel

4. 那 channel 的本質(zhì)和底層是什么?

答:這個(gè)知識(shí)點(diǎn)有點(diǎn)模糊,我想想,如果沒(méi)記錯(cuò),我記得就是 linux 的管道吧

5. 那 linux 的管道有什么特性?

答:管道的特性應(yīng)該是只能等一邊寫(xiě)完,另一邊才能讀,不知道我回答的對(duì)不對(duì)?

6. 對(duì)你說(shuō)得沒(méi)錯(cuò),那你覺(jué)得管道是用什么實(shí)現(xiàn)的?

答:不好意思,這題我不會(huì)

7. 其實(shí)管道就是文件,那對(duì)文件操作就是加鎖

答:對(duì)對(duì)對(duì),我想起來(lái)了,其實(shí)這里涉及到資源的搶占,那系統(tǒng)對(duì)資源的搶占肯定就是加鎖實(shí)現(xiàn)。

8. 既然剛剛你也提到協(xié)程,可以描述下 Go 的協(xié)程原理嗎?

答:Go 的協(xié)程是基于 CSP 并發(fā)模型的 GPM 調(diào)度機(jī)制,M 可以理解為處理機(jī) CPU,P 就是 Go 底層用來(lái)管理 Goroutine 協(xié)程的。

9.(這個(gè)時(shí)候面試官拿了一張白紙過(guò)來(lái))寫(xiě)一個(gè)二分查找的算法看看吧,用 PHP 或 Go 都可以

答:好,那我用 PHP 寫(xiě)吧(PS: 這里我用的是遞歸法,要注意二分查找的臨界問(wèn)題)

10. 嗯,算法沒(méi)問(wèn)題,問(wèn)一點(diǎn)網(wǎng)絡(luò)的吧,socket 用過(guò)嗎?

答:websocket 用過(guò),在做直播聊天室的時(shí)候會(huì)用到長(zhǎng)連接

11. 那你覺(jué)得 websocket 是基于什么協(xié)議?

答:是基于 TCP 協(xié)議的

12.TCP 客戶端和服務(wù)端是怎么建立連接通信的?

答:(ps:一開(kāi)始答錯(cuò)了,我說(shuō)是 ack 吧,面試官糾正是 syn)然后我恍然大悟接著說(shuō),第一步是客戶端發(fā)送 syn,第二步是服務(wù)器應(yīng)答 syn+ack, 第三步是客戶端回復(fù) ack

13. 那 TCP 握手是幾次,斷開(kāi)是幾次?

答:握手是三次,斷開(kāi)是四次(ps: 有些面試官會(huì)問(wèn)為什么斷開(kāi)要四次,這里涉及到半連接等待關(guān)閉,幸好沒(méi)問(wèn))

14. 假設(shè)我們現(xiàn)在要做一對(duì)一視頻聊天,每日 DAU 可能達(dá)到幾十萬(wàn)以上,后端怎么實(shí)現(xiàn)一對(duì)一匹配的算法?還有,怎么實(shí)現(xiàn)快速的匹配服務(wù)器不會(huì)有壓力問(wèn)題?

答:我想一下。用戶登錄的時(shí)候,如果未開(kāi)始匹配,可以把用戶放到 redis 里的 set 集合里,通過(guò) SRANDMEMBER 命令隨機(jī)抽取人出來(lái)就好了 ,至于 redis 的 value 最大可以保持 512m 數(shù)據(jù),也就是理論上我們承載可以達(dá)到上千萬(wàn)上億用戶都不是問(wèn)題,至于要保持 redis 的高可用,可以用 rdb 或 aof 做數(shù)據(jù)持久化,另外,redis 也有哨兵模式,主 redis 掛了也可以選舉抽取空閑的 redis 服務(wù)器頂上

15.mysql 主從的時(shí)候有沒(méi)有遇到過(guò)主從延遲同步的情況?是怎么解決的?

答:emmmmm,這個(gè)情況我還沒(méi)遇到過(guò)。

16. 你也知道我們是做社交 APP 的,如果我們要做一些興趣推薦的內(nèi)容或者人,你會(huì)怎樣實(shí)現(xiàn)?

答:可以用 ElasticSearch,我以前的項(xiàng)目有配合 ik 中文分詞使用,缺點(diǎn)是比較吃機(jī)器內(nèi)存。

總結(jié):

面試完和面試官聊了聊,得知面試官是從 YY 出來(lái)的

從整個(gè)面試流程來(lái)看,面試官太會(huì)引導(dǎo)問(wèn)題了,從應(yīng)用層面一點(diǎn)點(diǎn)問(wèn)出底層細(xì)節(jié),也加予了適當(dāng)?shù)奶崾?#xff0c;這一點(diǎn)很值得學(xué)習(xí)

另外一個(gè) offer 是醫(yī)院體系下醫(yī)療行業(yè),因?yàn)闆_擊較大未來(lái)盈利可能有困難,規(guī)模是 20 人,就不考慮接 offer 了,不過(guò)還是分享一下面試的內(nèi)容

1、redis 在項(xiàng)目里用過(guò)哪些數(shù)據(jù)類型?

2、怎么解決 redis 在并發(fā)下商品超賣(mài)的問(wèn)題?

3、Golang 長(zhǎng)連接的時(shí)候是怎樣做心跳機(jī)制的?

4、說(shuō)一下你是怎么理解微服務(wù)的?

5、mq 用過(guò)嗎?在什么場(chǎng)景使用的?

總結(jié)

以上是生活随笔為你收集整理的大环境下瑟瑟发抖辞职的第二天,拿了两个 offer的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。