自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我招了個(gè)“水貨”程序員......

新聞
這篇文章對(duì)很多沒(méi)有高并發(fā)經(jīng)驗(yàn)的程序員來(lái)說(shuō),會(huì)非常有幫助。很多程序員可能都遇到過(guò)類(lèi)似的困惑:我沒(méi)有高并發(fā)項(xiàng)目經(jīng)驗(yàn),但是面試的時(shí)候經(jīng)常被問(wèn)到高并發(fā)、性能調(diào)優(yōu)方面的問(wèn)題,該怎么辦?

[[412871]]

圖片來(lái)自包圖網(wǎng)

這個(gè)問(wèn)題怎么解決?和大家說(shuō)說(shuō)我招人的一個(gè)經(jīng)歷。程序員小張參加工作已 5 年,是一位高級(jí)工程師,是我親自招進(jìn)公司,表現(xiàn)很出色。

前一陣子,我把小張叫進(jìn)會(huì)議室,想讓他單獨(dú)帶個(gè)團(tuán)隊(duì)。其中,我談到了面試時(shí),他簡(jiǎn)歷注水的問(wèn)題。

事情是這樣的,大概兩年前,公司有個(gè)核心項(xiàng)目缺人,需要一位高級(jí)程序員。

這個(gè)崗位非常重要,所以對(duì)面試人要求不低:

  • 有高性能、高并發(fā)開(kāi)發(fā)經(jīng)驗(yàn)
  • 有高可用系統(tǒng)經(jīng)驗(yàn)
  • 參與中間件研發(fā)、優(yōu)化和系統(tǒng)存儲(chǔ)優(yōu)化

招聘持續(xù)了兩個(gè)月,面試了許多工作五年以上甚至十年的人選,卻依然沒(méi)有招到一個(gè)特別合適的。

就在我們快不抱希望的時(shí)候,同事讓我去面試一個(gè)有趣的人,他強(qiáng)烈推薦,并順手把簡(jiǎn)歷遞給了我,這人正是小張。

接過(guò)簡(jiǎn)歷后,我先翻了翻。這一翻,讓我皺起了眉頭。簡(jiǎn)歷里,小張的工作經(jīng)驗(yàn)只有區(qū)區(qū)三年,這三年全都在一家公司,公司本身還沒(méi)有什么名氣。

更重要的是,我懷疑他的簡(jiǎn)歷做了手腳。他說(shuō)自己三年里,負(fù)責(zé)過(guò)兩個(gè)項(xiàng)目,一個(gè)是電商項(xiàng)目,一個(gè)是關(guān)于這個(gè)電商項(xiàng)目的對(duì)外開(kāi)放平臺(tái)。

對(duì)這兩個(gè)項(xiàng)目,他著重強(qiáng)調(diào)了項(xiàng)目的高并發(fā),并說(shuō)自己解決了很多技術(shù)難題。

就是這里出現(xiàn)了問(wèn)題。我們當(dāng)時(shí)也有電商項(xiàng)目,市面上稍微有點(diǎn)名氣的電商平臺(tái)我都非常清楚,卻沒(méi)聽(tīng)說(shuō)過(guò)他簡(jiǎn)歷里的產(chǎn)品。所以我懷疑,這份簡(jiǎn)歷是包裝過(guò)度了。

但是,對(duì)于這么明顯的問(wèn)題,我不信前面的面試官們都沒(méi)看出來(lái)。那么,為什么他們還推薦我去見(jiàn)見(jiàn)呢?

說(shuō)心里話(huà),對(duì)簡(jiǎn)歷包裝過(guò)度我是比較惱火的,但是這只是我的懷疑。同時(shí),前面的面試官竟然是帶著一種從未有過(guò)的滿(mǎn)意語(yǔ)氣,叫我一定面面他,對(duì)同事們的認(rèn)可我又比較好奇。

就這樣,我?guī)е鴲阑鹩趾闷娴拿苄乃家?jiàn)到了小張。見(jiàn)到小張的時(shí)候,我由于有點(diǎn)惱火,臉色顯得非常嚴(yán)肅。

他可能看到我如此嚴(yán)肅,不禁局促了起來(lái)。但是,從他的眼神中,我又看到了很強(qiáng)的自信。

我心里想,確實(shí)挺有趣的人。我決定要好好的面試下這個(gè)人,看看他到底有什么本事,能讓我的同事如此滿(mǎn)意。

問(wèn)了下他大概背景后,開(kāi)始了進(jìn)入了正題。當(dāng)進(jìn)入了正題之后,小張的回答態(tài)度就讓我大加贊賞。態(tài)度自信,不卑不亢,邏輯表達(dá)也十分清晰明白。

這時(shí)候,我心里決定,如果小張后續(xù)的回答,能證明他的實(shí)力達(dá)到簡(jiǎn)歷描述的八成水平,我會(huì)傾向于把 offer 給他。

[[412872]]

我先問(wèn)了問(wèn)他對(duì)高并發(fā)的理解,比如:高并發(fā)需要參考哪些指標(biāo)?

他告訴我,高并發(fā)由于產(chǎn)品類(lèi)型不同,所以指標(biāo)都不一樣。以他負(fù)責(zé)的電商系統(tǒng)來(lái)說(shuō),根據(jù)模塊的不同,關(guān)注的指標(biāo)不同。

商品瀏覽看得是 QPS,訂單模塊則是看得 TPS。同時(shí),他們還需要關(guān)注活躍的用戶(hù)量等等。

這回答真不錯(cuò)。面試以來(lái),哪怕是工作多年的人,絕大多數(shù)的答案就是 QPS,無(wú)非再多一個(gè) TPS。

能把產(chǎn)品類(lèi)型的不同和不同的高并發(fā)指標(biāo)之間關(guān)聯(lián)起來(lái),這說(shuō)明小張是仔細(xì)對(duì)這個(gè)問(wèn)題思考過(guò)的。

我愈發(fā)滿(mǎn)意了。在后面,我又追問(wèn)了集群部署、多級(jí)緩存、復(fù)雜查詢(xún)優(yōu)化等有關(guān)性能優(yōu)化的問(wèn)題,還附加了系統(tǒng)高可用的各種策略,和如何拆分去保證靈活擴(kuò)展等實(shí)際中我們正在采用的問(wèn)題。

等面試完畢后,時(shí)間已經(jīng)過(guò)了一個(gè)多小時(shí)。小張當(dāng)時(shí)并沒(méi)有百分百答好我問(wèn)的問(wèn)題。

從實(shí)際回答來(lái)看,關(guān)于性能優(yōu)化的細(xì)節(jié),比如,系統(tǒng)瓶頸的檢測(cè)和優(yōu)化,程序邏輯的優(yōu)化,JVM 優(yōu)化甚至數(shù)據(jù)庫(kù)的優(yōu)化都答得異乎尋常的出色。

但是,對(duì)于高可用的大概策略,比如降級(jí)處理,限流處理等,他只知道大的方向,很多答案一聽(tīng)就知道是從書(shū)本上或者互聯(lián)網(wǎng)上看來(lái)的。

而對(duì)于系統(tǒng)的擴(kuò)展性相關(guān)問(wèn)題,他甚至答的非常差,很多都回答不上來(lái)。

不過(guò)瑕不掩瑜,小張依然拿到了 offer,他期望的薪資我也沒(méi)有打任何折扣,這足以給他一份大大的驚喜了。

在后來(lái)的兩年里,小張的出色表現(xiàn),證明我沒(méi)有看錯(cuò)他。他為了公司的核心項(xiàng)目做出了巨大貢獻(xiàn),而他的技術(shù)水平,也有了肉眼可見(jiàn)的巨大提升。

他成為了一名高并發(fā)經(jīng)驗(yàn)豐富的高級(jí)程序員。所以,現(xiàn)在打算讓他帶團(tuán)隊(duì)了。

“那么,就剩一個(gè)問(wèn)題了。你面試之前到底是如何做到熟悉高并發(fā)的性能優(yōu)化的?” 我好奇的問(wèn)出了我壓在心底的問(wèn)題。

小張不太好意思的撓了撓頭,他詳細(xì)給我講述了他是如何搞定高并發(fā)經(jīng)驗(yàn)的。

我聽(tīng)完后,真的是對(duì)他這些準(zhǔn)備贊不絕口。我認(rèn)為該分享出來(lái),讓更多的人看到。

劃重點(diǎn)!如果你也渴望有高并發(fā)經(jīng)驗(yàn),那么下面的內(nèi)容你要格外關(guān)注了。

小張確實(shí)是做了電商平臺(tái)開(kāi)發(fā)的。但是,這個(gè)電商平臺(tái)沒(méi)多少訪問(wèn)量,QPS 可能一只手都能數(shù)的過(guò)來(lái)。說(shuō)句難聽(tīng)話(huà),也就是掛在網(wǎng)上而已。

他剛畢業(yè)入職開(kāi)始,就參與維護(hù)了這套電商平臺(tái)。就這樣持續(xù)了一年后,他發(fā)現(xiàn)自己已經(jīng)無(wú)法再有任何提高了。

他想跳槽,但是發(fā)現(xiàn)很多高級(jí)崗位都是要求高并發(fā)經(jīng)驗(yàn)的,他對(duì)此很著急。如果他繼續(xù)在以前的公司發(fā)展,就勢(shì)必接觸不了什么高并發(fā)。

但是跳槽的話(huà),他又必須有高并發(fā)經(jīng)驗(yàn)才能找到一個(gè)不錯(cuò)的崗位去繼續(xù)提升自己。

這貌似成了一個(gè)死結(jié)。在百般無(wú)奈之下,他決定自己模擬高并發(fā)去獲得經(jīng)驗(yàn)。

現(xiàn)在總結(jié)下來(lái),其實(shí)他的練習(xí)可以粗略分為三個(gè)階段:

第一階段

這個(gè)階段,小張完成了在高并發(fā)條件下,對(duì)單機(jī)性能優(yōu)化的學(xué)習(xí)。

小張用 Docker 容器去運(yùn)行他維護(hù)的電商項(xiàng)目。然后用 jmeter、wrk 等工具去壓測(cè)。

在壓測(cè)期間,他敏銳地發(fā)現(xiàn)了由于系統(tǒng)每個(gè)模塊不同,所以性能表現(xiàn)就不一樣,這種現(xiàn)象引發(fā)了他的思考。

他經(jīng)過(guò)網(wǎng)絡(luò)搜索和查詢(xún)資料,明白了不同模塊、不同產(chǎn)品對(duì)并發(fā)指標(biāo)的要求是不一樣的。

基于這種情況,他又根據(jù)產(chǎn)品的業(yè)務(wù)邏輯編寫(xiě)了復(fù)雜的壓測(cè)腳本,能自動(dòng)實(shí)現(xiàn)不同模塊的壓測(cè)任務(wù)。

就是在這種不斷地壓測(cè)探測(cè)下,他明白了如何探測(cè)問(wèn)題,如何通過(guò)優(yōu)化代碼、JVM 去解決問(wèn)題。

比如,解決誤用 HashMap 導(dǎo)致死循環(huán)的問(wèn)題。又比如,誤用不帶緩存的文件 IO 流,去讀取文件的問(wèn)題等等。

在程序和 JVM 優(yōu)化完畢后,他又發(fā)現(xiàn)數(shù)據(jù)庫(kù)也存在問(wèn)題。于是,他又學(xué)會(huì)了如何優(yōu)化數(shù)據(jù)庫(kù) SQL,如何對(duì)數(shù)據(jù)庫(kù)分表等問(wèn)題。

也是在這個(gè)階段,他認(rèn)識(shí)到了緩存的必要性以及同步緩存數(shù)據(jù)狀態(tài)的重要性等重要知識(shí)點(diǎn)。

小張?jiān)诟懔藛螜C(jī)優(yōu)化后,他覺(jué)得也沒(méi)有辦法再通過(guò)單機(jī)的壓測(cè)學(xué)到什么新的東西了。于是,他轉(zhuǎn)向了第二階段。

[[412873]]

第二階段

小張從阿里云買(mǎi)了兩臺(tái)機(jī)器,他開(kāi)始嘗試使用負(fù)載均衡去分擔(dān)高并發(fā)的壓力。

同樣的,也是借助壓測(cè)工具去模擬了高并發(fā)。在壓測(cè)期間,負(fù)載均衡和系統(tǒng)屢屢出現(xiàn)和單機(jī)完全不一樣的問(wèn)題。

比如,負(fù)載均衡本身的性能問(wèn)題。比如,在一些時(shí)候,負(fù)載均衡后面的機(jī)器負(fù)載是不平衡的,需要對(duì)負(fù)載算法進(jìn)行調(diào)整。

這個(gè)階段,小張理解了負(fù)載均衡中大部分的細(xì)節(jié)。但是,高并發(fā)中,很多系統(tǒng)的構(gòu)成會(huì)很復(fù)雜,以至于需要分布式架構(gòu)系統(tǒng)的程度。他們需要各種中間件做通信,做存儲(chǔ)。

所以,小張根據(jù)招聘的一些需求,他做了第三階段的練習(xí)。

第三階段

為了能熟悉市面上各中間件的使用,小張把他那套電商平臺(tái)改了又改。

比如,一些本地調(diào)用的方法,被他替換成了 Dubbo 遠(yuǎn)程調(diào)用。比如,一些模塊間調(diào)用,被他替換成了 MQ 中間件傳消息。

再比如,一些放在關(guān)系數(shù)據(jù)庫(kù)的被頻繁訪問(wèn)的數(shù)據(jù),被他改存在了 MongoDB 中……

當(dāng)然,壓測(cè)依然繼續(xù)。就這樣,小張又實(shí)踐了很多中間件和分布式框架的使用。

在模擬高并發(fā)練習(xí)的同時(shí),小張不忘去讀各種高并發(fā)高性能的書(shū)籍。比如,《大型網(wǎng)站服務(wù)器容量規(guī)劃》、《互聯(lián)網(wǎng)創(chuàng)業(yè)核心技術(shù):構(gòu)建可伸縮的 web 應(yīng)用》等書(shū)籍。

在來(lái)到我們公司面試之前,小張如此練習(xí)了兩年左右。

[[412874]]

雖然小張面試的時(shí)候表現(xiàn)也存在很多不足,但是我當(dāng)時(shí)看中他的一些優(yōu)點(diǎn)是:

①小張滿(mǎn)足具有高并發(fā)經(jīng)驗(yàn)的要求

為什么我們需要找有高并發(fā)經(jīng)驗(yàn)的人?說(shuō)白了,我們想找的程序員其實(shí)是:

  • 不會(huì)亂寫(xiě)性能很差的代碼
  • 能敏銳感知到影響系統(tǒng)的問(wèn)題
  • 能獨(dú)立的處理由于高并發(fā)引發(fā)的問(wèn)題

小張通過(guò)他的練習(xí)是掌握了這些技能的。

②小張滿(mǎn)足熟悉高可用的要求

我們找熟悉高可用的人,其實(shí)并不要求這個(gè)人一定能給出什么獨(dú)特的高可用方案。我們要求的是,他能知道高可用的知識(shí)后,去意識(shí)到高可用的重要性。

比如限流功能出現(xiàn)問(wèn)題,他要能馬上認(rèn)識(shí)到這是個(gè)很重要的問(wèn)題,從而把解決的優(yōu)先級(jí)提到很高。

小張通過(guò)學(xué)習(xí),明白了高可用的重要性,也知道了高可用的大方向,這就夠了,剩下的細(xì)節(jié),我們有信心帶小張?jiān)趯?shí)際工作中學(xué)出來(lái)。

③小張能參與我們的中間件研發(fā)和存儲(chǔ)優(yōu)化

小張主動(dòng)改造過(guò)他們的電商系統(tǒng),而且使用了很多的中間件,并對(duì)這些中間件都進(jìn)行過(guò)優(yōu)化。對(duì)這些中間件的特性比較熟悉,并且在實(shí)踐中,他也了解了很多原理。

除此之外,小張的主觀能動(dòng)性尤其打動(dòng)我們。他對(duì)技術(shù)的主動(dòng)鉆研、主動(dòng)學(xué)習(xí),表明了他是一個(gè)喜歡走出舒適區(qū),愿意挑戰(zhàn)自己的人。而這樣的人,有哪個(gè)團(tuán)隊(duì)不歡迎呢?

所以,其實(shí)沒(méi)有高并發(fā)經(jīng)驗(yàn)并不可怕。如果在工作中你接觸不到高并發(fā)的項(xiàng)目,那么也沒(méi)必要太糾結(jié)。公司做什么項(xiàng)目你改變不了,你能改變的只有你自己。

關(guān)鍵還是自己要去主動(dòng)學(xué)習(xí),主動(dòng)練習(xí),主動(dòng)提升。只有這樣的人,機(jī)會(huì)才會(huì)去垂青。

最后,畢竟在程序員這個(gè)圈子,90% 以上的人可能都沒(méi)有真正的高并發(fā)經(jīng)驗(yàn),所以在此也希望各位面試官,在招人的時(shí)候,如果遇到好苗子可以適當(dāng)寬容一些,給新人們一點(diǎn)機(jī)會(huì),說(shuō)不定能找到一匹千里馬。

作者:四猿外

編輯:陶家龍

出處:轉(zhuǎn)載自公眾號(hào)四猿外(ID:si-yuanwai)

 

責(zé)任編輯:武曉燕 來(lái)源: 四猿外
相關(guān)推薦

2012-06-25 10:05:10

程序員

2013-07-24 14:17:10

2020-03-30 08:30:53

年薪程序員水貨

2014-03-18 10:05:37

程序員碼農(nóng)

2012-11-28 13:25:27

程序員

2023-12-26 18:47:32

2009-03-26 09:22:05

2021-02-20 13:55:35

程序員計(jì)算機(jī)技術(shù)

2012-05-11 09:13:28

程序員開(kāi)發(fā)者

2013-08-01 10:03:41

程序員

2021-07-05 07:28:14

程序員菜鳥(niǎo)技術(shù)

2013-04-22 09:05:11

程序員

2016-04-19 10:20:42

程序員遺憾

2020-10-05 21:13:37

程序員技能開(kāi)發(fā)者

2012-09-18 10:05:51

程序員我的歌聲里程序員的歌

2020-11-04 07:13:16

程序員職業(yè)工資

2021-10-25 08:31:11

公司程序員代碼

2015-11-04 11:38:40

bug程序員

2009-06-02 13:43:04

程序員定義職場(chǎng)

2021-03-22 08:58:23

程序員產(chǎn)品經(jīng)理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)