大家好,我是編程熊,今天和大家分享我是如何從雙非,拿到ACM金牌,再拿到字節跳動、曠視科技等大廠offer,保研985的經歷。

坎坷的大學
我本科是一所雙非院校,專業是軟件工程,高考失利,進入到了一所不想去的大學,曾經覺得自己的一輩子就和普通大學一樣,注定普通,無法像重點大學的同學實現人生理想。
但我后面的故事告訴我,高考是結束,也是開始,我的人生并沒有完蛋。
大學開始
大一上學期我和剛入學同學一樣,平常偶爾上課劃劃水,但我對寫代碼很感興趣,從 “Hello World”
到 A+B
問題,我覺得寫代碼很爽。
一次偶然的機會我知道學院有算法實驗室,簡單的從網上了解了一下ACM比賽,當時還不知道這么難,就勇敢的找算法實驗室的學長詢問如何學習算法、參加競賽。
學長耐心的告訴我如何入門: 可以先學習C++基本語法、然后去算法平臺刷簡單的基礎題(HDUOJ第11頁),其次學習算法與數據結構知識,再刷題鞏固。
就這樣踏上了算法競賽的"不歸路",從入門到禿頭,有時候一道題要花一天的時間。
就這樣一邊學習一邊刷題,我通過了算法實驗室的選拔,成為了ACM隊員,也找到了最開始的隊友。
努力是一切的開始
很多同學上了大學都開始無所事事,過上了神仙生活,我身邊也有很多這樣的同學。
但我卻保持自律,每天堅持學習算法與數據結構和刷題,甚至逃了很多課,只為了去實驗室多刷兩道題,每次看到題目通過Accepted
,我都開心的像個孩子一樣。
現在回想起來,與其說我是上大學去了,不如說: 我去學習算法,順便讀了個大學。
前期碰壁
努力學習的時光度過的很快,我很快到了大二,去參加了我算法競賽生涯的第一場比賽,雖說可以預料到過可能拿不到銅獎,但當成績出來的時候,失望和難過的心情,卻沒有因此而減退。
如果努力還不夠,就更努力
初站失利后,我回去更加的努力訓練刷題,了解ACM競賽的同學應該知道,每場比賽都有很多難題。
我的策略是: 先搞定銅牌題(ACM基礎題),就這樣刷了很多題,大三上我又參加了一次ACM邀請賽,又一次落榜!
說實話,這次真的打擊到我了,我開始懷疑: 我是不是不是這塊料、腦子不行、雙非學校是不是不應該選擇打ACM競賽...
堅持是成功的秘訣
在連續經歷了兩次失利后,雖然有過自我懷疑和否定,但內心的不甘和不服輸的決心很快的將自我懷疑驅逐,我選擇了堅持!
這次我將所有ACM考點根據專題分了類,去學習每個專題的對應的算法與數據結構,然后刷對應的題目進行鞏固和加深理解。
曾經一度找到一個空的房間,整天除了吃飯都在空蕩蕩房間里訓練刷題,是的你沒聽錯,是除了吃飯,因為晚上是在實驗室睡的。
雨后終有彩虹
終于在大三下的ACM區域賽,拿到了我人生的第一塊ACM獎牌,雖然是一塊銅牌,但對那時的我意義非凡。
我依舊記得比賽結束的那天,太陽正好、天也很藍。
曠視我人生第一份工作
大三上的期末拿到ACM銅牌后,在朋友的內推下投遞了曠視科技的算法實習生,因為是算法組,面試主要考察了算法與數據結構,第一次面試很緊張,好在題目都做出來了,有驚無險的通過了面試、拿到了Offer,后面約定好入職時間,寒假就去實習了。

遇到了人生中重要的人
我所在的是曠視科技的算法組,組內全是大神,大多數同事都是高中保送都是 上交ACM班的,Leader是ACM亞洲區域賽的冠軍,還有本科中頂會的、Kaggle競賽大神、還有項目大佬、數學大神..., 一開始知道大家這么厲害,弱雞的我還不太敢說話,后面一起吃飯、團建,慢慢和大家熟悉了起來,發現大家人也很nice、很好相處。
就這樣我遇到了我人生第一批同事,后面也成為了我人生很重要的朋友。
實習工作
在進入曠視之前,我在學校沒有做過任何大項目,只寫過大作業,都還很水。
曠視的工作氛圍整體很友好,給了我這個小白入門的時間和空間,比如常見的git協作開發、項目的框架、編譯工具、業務的場景、代碼... ,了解了基本的東西后,就給了我一個簡單的任務,可以看出是為了鍛煉我的,可能并不會真實上線的。
現在我還記得,寫完代碼提交后,mentor給了我很多中肯的建議,有抽象上面的、有代碼風格上面的,并給我修改建議,學到了很多在學校接觸不到的東西,現在想到這些心中還很感動。
后面逐漸熟悉了后,開始承擔一些復雜的開發需求,但還是有mentor一起帶著的,在這個過程中也收獲了很多東西。
再戰一年
大三下拿到ACM銅牌后,我的兩個隊友就退役了,我就去曠視實習了,我也考慮要不要退役,還是和下一屆的學弟再戰一年,再戰一年的話意味著我沒有時間準備秋招,如果沒有拿到更好的成績可能找不到工作。
就在我猶豫的時期,我的Leader,也是我的好朋友hanyuan
鼓勵我再戰一年,向更好的成績發起沖擊,突破自己。
因為好朋友的鼓勵,加上自己內心也確實不甘心算法競賽以銅牌結束。
我選擇和兩個學弟再戰一年,因此我平常實習下班就會繼續刷題,學習新的知識。
秋招上岸
意外也是努力的結果
我是拿的字節跳動秋招提前批的offer, 七月份一次意外的水群,了解到字節跳動秋招提前批開始了,之前知道字節跳動主要考察算法與數據結構能力,自己對這塊還是有點信心的,就投遞了。
宇宙條果然效率奇高,第二天就約了我面試時間,因為我想暑假回學校和學習一起為了下半年的ACM亞洲區域賽做準備訓練,所以就立馬面試了,當時是現場面試,從上午十一點開始,一共三輪技術面+一輪hr面。
上午面了一輪技術面,主要問的是算法題,中午在hr小姐姐的帶領下,在頭條食堂吃了午飯,真的不錯!
下午面了兩輪技術面+一輪hr面,二面是交叉面,問了基礎知識,就回答了一些知道的東西,面試官可能看出我主要打競賽,沒有準備過八股文,后面就問了兩道算法題,有驚無險的都答上來了。
三面是技術Leader面,主要問了之前在曠視做的項目,還有算法題。
可以看出字節跳動面算法題還是非常多的,所以想去字節的讀者們,一定要好好刷題呀!
最后一面就是hr面,簡單聊了聊常見的問題,女朋友在不在異地、意向的薪資.... 一天就全部走完了所有流程,宇宙條的效率YYDS。
7月12號,我不出意外的拿到了字節跳動秋招提前批的意向offer,我上岸了!

人生第一個競賽冠軍
字節面完試,我就從曠視請假回學校訓練,準備大四也是我最后一年的比賽,這是我參加算法競賽的最后一年了。
還記得暑假很熱、學校人也不多,所以我早上起的很早,吃完早飯就去實驗室刷題,那段時間我的競賽狀態也很好,一般能想到的題目,都能通過。
當時正好江西省舉辦第一屆CCPC省賽,正好是我大四那一年,我和學弟一起組隊報名了,因為我大三下主要在外面實習,還比較擔心團隊合作的問題,但好在大家都自己刷了不少題。
比賽那天也很順利,基本上是看一道題,有思路了,上去寫,寫完就能通過,我們距離比賽最后一小時的時候已經是省內第一名,此時比賽已經過去了四個小時,剩下的題目有些難度,學弟開始吃點東西,考慮要不要不做了,感覺省內冠軍可能性已經很大了,我鼓勵了學弟繼續做,我選擇了一道題,我們三個合力思考、討論、商量解法。
最終最后十分鐘的時候通過了!冠軍穩了!
我拿到了冠軍,三年來的堅持在那一刻覺得很值得。

保研985
省賽奪冠后,我們對下半年的ACM亞洲區域賽充滿信心,我們相信一起努力訓練,一定可以創造學校的歷史。
暑假刷題的時間匆匆,轉眼就到了九月開學,年級群發了推免的通知,我想了想我要不要也試一試呢,我平時成績還行+競賽獲獎的加分,也有機會試一試。
正好暑假拿到了華東師范大學的夏令營優秀營員(后面會發文講講這個經歷),我就提交了材料,進入候選了。
期間知道專業只能保兩個人的時候,覺得自己無望了,后面發了公示的時候,看了下自己加完分正好第二,復試表現還行,最終的保研名額也是第二,成功拿到了保研資格!
后面我畢設老師,介紹了他的好朋友,在電子科技大學,因為之前去過華東師范大學,也算有點了解,加上自己想去大城市,所以后面就表示了婉拒和感謝。
最終保研了華東師范大學,我神奇的有研究生讀了。

說實話,自己也不是很興奮,因為我剛進大學的時候,就沒太想讀研,因為我平時也不太喜歡上課,并不喜歡學校的束縛,當時相比之下,更加喜歡工作,此時因為我已經有了字節秋招offer,我當時更加傾向于畢業了直接進大廠。
ACM金牌
保研后,已經快10月,我們選擇了兩個ACM賽區,就開始了認真準備比賽,那段時間每周都要一起組隊訓練好幾次,賽后補題。
十月我們踏上了比賽的征途,這次我們拿到了意想不到的成績,ACM亞洲區域賽金牌(金牌最后幾名、賽區相對容易,有運氣成分),這是我們學校、也是 江西省的第一塊ACM亞洲區域賽金牌,我真正的創造了歷史!

字節工作經歷
入職
打完比賽,我就回老東家曠視辦了離職,和朋友們告了別,就去字節跳動提前實習了,去辦理入職的時候,發的是最新款的MacBook Pro,并且很多一起入職的人,可以看出字節真的發展很快,
上午辦理完入職,吃完午飯,下午就去工位了,有一個入門要學習的文檔,按著文檔一步步來就行。
快節奏
字節跳動整體上工作節奏要快很多。我大概熟悉一周后,就開始接手一些簡單的需求了,字節的基礎架構做的很好,業務方的后端開發,不需要考慮框架的問題,公司都有現成的輪子,整體上開發的速度要快很多。
同時公司的文化也是坦誠清晰,一般有問題會拉個群,群里@一直對方,一般都會得到對方的解答。
因為我之前在曠視是算法實習生,工程上的經驗比較少,在字節是后端開發,因此很多東西都是從0開始學習的,比如: golang、框架、工具、字節云....
后面隨著工作需要,慢慢的也得心應手了。

人生重要選擇
實習期間,我也考慮過我到底是要在互聯網大廠工作,還是去讀研,這個問題真的糾結了很久,我一開始是更傾向于工作的,我不是很看重學歷,自己也更想做比較接地氣的事情,在公司的成長速度比較快的。
但不可回避的是,在互聯網大廠工作確實也很累,每天10點半左右上班,晚上十點左右下班。
到了家洗個澡,整理下家里,就快十二點了,卻也總想找一些娛樂去對抗忙碌的生活,因此一刷手機就刷到了一兩點,早上九點多起床,吃個早飯就去上班了,開啟了打工人新的一天。
期間父母也無數輪勸說,自己也開始動搖了,在互聯網大廠一直工作下去,放棄讀研以后會不會后悔,最終我選擇了讀研。

總結
五年的經歷給了我許多感悟,我總結了以下幾點,分享給大家,希望能幫助大家少走彎路。
多和上進的人同行
如果你身處的環境不好,身邊大多數人都不學習,那我建議你去認識一些上進努力的同學、朋友,比如加入學校的實驗室,不管是做開發、還是學習算法... 選擇一個自己感興趣的,多向上進的人學習,一段時間過后,你可能已經悄悄驚艷所有人。
勇敢
羅翔老師把勇敢稱為最高級的詞匯。
勇敢幫助我從普通邁向不凡的第一步,沒有勇敢的參加實驗室,沒有勇敢的向學長請教,沒有勇敢的參加實驗室選拔,可能所有后續的故事都不會發生。
所以請勇敢邁出第一步吧,邁出第一步的你也許會發現,一切也沒有自己想象的那么困難。
堅持
堅持是成功的秘訣。剛進入一個新的領域,肯定會四處碰壁和遇到困難,這是很正常的。如果你認為自己在正確的路上,那么遇到困難,不要停下來。
雨后彩虹可能很快就會到來。
收集信息
如果是去工作,多去了解哪些公司的哪些部門正在招人,不要小看消息,選擇一個hc多、缺人的部門,可以大大增加你面試通過的概率。
如果是去讀研,多向讀研的學長學姐請教,問問他們有什么東西要準備。早點開始準備,學好專業課,選好目標院校,看看專業課考哪幾門,可以重點復習,同時多去問問復試考察的哪些內容,可以增加上岸的幾率。
多利用身邊的資源
現在網上的資料很多,學習什么方向,可以在知乎搜到很多攻略、學習資料,大家一定要好好利用這些學習資源,可以幫助你少走很多彎路。
有了學習資料,要堅持學習,才能不斷提高,看到更遠的地方。
多嘗試
人在面臨選擇時,常常會陷入迷茫。
如果當前階段,還沒有想清楚入海還是讀研深造、工作崗位選擇算法、還是后端、還是前端...,我建議都去了解了解,都去嘗試一下,看看自己對那個更感興趣,更加擅長什么方向。
嘗試過后,選擇一個最適合自己的方向,然后朝著這個方向努力。
結尾
五年過去了,我從本科雙非,到拿到字節跳動、曠視科技等大廠offer,到ACM金牌,再到985研究生,我完成了一系列不可思議的成長與蛻變。
由于篇幅限制,這次就寫到里,后續我會分享在985讀研的經歷、以及有了那些新的體會、放棄大廠選擇讀研后不后悔 等,歡迎持續關注。
感恩一路上幫助過我的人。離開了他人的幫助, 若非命運的加持,自己可能什么都不是。
我會盡力演好命運所給自己的人生劇本,演好我的角色,盡可能的幫助更多的人。

C++20新特性的小細節

多線程學習指南

手擼一個對象池

這里收集了100多篇C++原創文章(入門進階必備)

點個在看你最好看