學習經驗總結|C++後臺開發/雲計算方向,offer收割機的學習路線

做者:特立獨行MVP
連接:nowcoder.com/discuss/18
來源:牛客網html


我是20年畢業,目前計劃去字節跳動實習,暑假實習拿到了BAT,微軟等十幾家的實習offer(這裏的B指的字節 百度沒鳥我。。)java

具體面經參見:nowcoder.com/discuss/17python

暫時寫個我的的學習路線,供你們參考參考~mysql

我的介紹

南京大學電子科學與工程學院,本碩。本科:通訊工程。linux

實習經歷:在北京圖森將來的基礎架構部門。c++

目前我也是圖森在南京大學的校園大使,你們有想去實習和工做的能夠私信我內推呀~

我以前也是經歷過很長一段時間的迷茫,糾結於算法仍是研發方向,由於我自己作過算法優化相關的工做(本科末也水過paper)面試

以前也對深度學習機器學習有過很大的熱情,可是迫於環境和自身的想法仍是選擇了研發方向,主要是後臺開發和雲計算相關。因此你們若是可以很早的肯定本身的方向仍是能夠少走些彎路的。固然個人經驗僅供參考。算法

因爲我所在的實驗室比較的。。。。坑。。。。因此研一研二根本沒辦法出去實習,並且南京以前也沒有特別好的大廠能夠就近去實習。我在研一末和研二初的時候仍是去嘗試投了一些實習,去年是拿到了sql

  • 微軟的nlp的寒假實習
  • momenta的高精地圖開發的春季實習
  • 趨勢科技的開發崗位實習
  • 圖森將來的基礎架構 實習
  • 華泰證券 項目實習
    沒敢投任何的大廠,那個時候我仍是比較的菜的,怕菜的被拉黑。家若是有機會仍是能夠嘗試寒假或者早一點的實習,會在以後都比較有優點。

目前我暑假實習基本告一段落,拿到的offer以下:docker

  • 阿里雲 存儲團隊 (杭州)經歷5面
  • 騰訊 csig 後臺開發 (上海) 經歷4面
  • 頭條 基礎架構(北京、上海 ) 經歷4面
  • 網易互娛 基礎架構 (廣州) 經歷3面
  • 快手 基礎架構 (北京)經歷4面
  • 依圖 後端開發 (上海)經歷3面
  • 遠景智能 後端開發 (上海) 經歷3面
  • 蝦皮科技 c++開發 (深圳)經歷3面
  • 商湯科技 雲平臺開發 (北京)經歷3面
  • 華爲雲 雲計算 (杭州) 經歷2面
  • 海康威視 大數據開發 (杭州)經歷3面

整個面試週期就是從2月底到4月底這,兩個月,別問我爲何拿到了這麼多,我面也快面吐了。我我的的準備大概是在研一的下學期開始的,一直到研二上整整一年,後面我會從語言基礎,數據結構和算法,基礎知識點,項目上進行總結。

學習建議

雖然面試有不少的地方能夠討巧和臨時補充以及團隊合做。可是從我的的發展和將來成長來講,我以爲基礎是最最重要的。我我的是看書爲主結合一些本身感興趣的項目會寫着練練手若是沒時間寫就多看看別人的項目源碼,而後就是寫寫博客記錄一些本身遇到的問題和想法,不少的問題真的都有在面試當中被問到。

算法和數據結構

這一段算法大神或者ACM大神就不要看了,我怕被噴。
算法這塊由於我沒打過ACM,因此一開始惡補的不少,我建議先找一些比較靠譜的視頻或者公開課去學會比較好,固然若是學校裏的課還不錯能夠去上上,由於個人專業開的計算機相關的課很是少,我記得本科就一個c語言和c++程序設計。因此我是蹭了不少計科的課:好比數據結構,算法設計與分析這類的課。由於算法這東西仍是須要時間去訓練的。

課程

  • 浙大的數據結構
  • MIT的算法導論

刷題

固然若是你時間不夠那麼,牛客網左神的算法課你就不能錯過了!很是系統和直接,就是乾貨,看過的都說好。
學完了以後呢,固然就是刷題了,我不推薦天天沒日沒夜的刷,固然我也曾經這樣過一天刷他個十幾道,可是真的這樣效率其實不高,我是建議在有必定題量以後天天隨便找個時間寫個1-2題就夠了,難度就是leetcode中等就好了,推薦你們一些必刷的和一些我以爲還不錯的oj:

必刷:

  • 劍指offer 2遍左右夠了
  • leetcode 全部簡單和中等的
  • 左神算法課上的全部例題

我的推薦:

  • hihoCoder :他會有一個每週周賽,都在週日,四道題。難度和代碼量都仍是挺大的,若是想去外企我建議多刷刷。
  • lintcode: 爲何推薦呢,由於他有個CAT模式也就是天梯上分,寫一題上一顆星每題有時間限制15分鐘或者30分鐘,提交次數限制3次,沒過會懲罰加題。總之很是適合面試模式。我是刷的停不下來。
  • codeforces:這個就偏比賽一點,可是不少新題都是這上面改的因此值得作一作。

再給一個我認爲好的算法博客:

書籍:

  • STL源碼剖析 : 各類數據結構的實現 都在裏面 c++必問
  • 算法導論 :當個參考書吧,沒事推個導,計算個複雜度仍是有點意思的。
  • 算法競賽入門經典

語言基礎

我我的的話主要語言是c++,python,java也就是個javaSE水平,go入門。
我我的建議開發的話必選就是一門主流靜態語言:c++或者java固然如今go也很是的火熱。加上一門解釋性語言:python
若是隻懂得一門語言的話,競爭力會小一點。除非你是精通c++級別的,那當我沒說,

c++學習建議

首先c++不容易學好,若是僅僅是學習語法或者寫個算法題那幾天就好了。可是用好c++仍是須要很長時間的積累的。
多的不說了給你們推薦幾本書:

  • C++語言的設計與演化
  • Effective C++
  • More Effective C++
  • 深度探索C++對象模型
  • c++ Primer :當個字典吧
  • STL源碼剖析

只從語言自己而言就是多看多理解和多使用。沒啥捷徑就是幹。
當你以爲語言不是問題的時候那麼就能夠去看看操做系統相關的以及高性能服務器相關的知識,這些應該是後臺方向必點的技能點了。

進階

操做系統

操做系統的話原理你們都懂,可是一問深的就不知道了,什麼進程線程,調度算法,虛擬地址這些的問題早就被問爛了。可是若是直接去看linux源碼的話,相信你們和我同樣剛開始都是拒絕的。仍是直接懟書吧,基礎最重要:

  • 深刻理解計算機系統 :經典!太好看了!
  • Linux內核設計與實現:不算系統可是算入門級別 建議和操做系統的課本結合一塊兒看會更好
  • 深刻理解linux內核 :講的2.6版本的內核

建議先把上面的幾本書看看,而後看本身的興趣吧,若是對哪塊很感興趣那就去看源碼看實現吧。

服務器編程

服務器編程其實就是創建在對linux的系統調用的理解以及網絡協議的理解上的。若是這兩塊的知識比較好的話就能夠動手實現一些簡單的服務器,而後對比別人實現的,壓測一下性能啥的,能夠做爲一個還不錯的我的項目,我其實也就是這麼作的。

  • Linux高性能服務器編程
  • UNIX 環境高級編程
  • UNIX網絡編程卷1

計算機網絡

計算機網絡的話我是看的浙大的計算機網絡課程,主要就是專一於協議的原理和分層模型,由於東西仍是比較的瑣碎的,建議你們多作些筆記寫一寫文檔。不論對於記憶仍是往後的複習都是頗有用的。

  • 計算機網絡原理:自頂向下方法

數據庫

對數據庫的理解也是必不可少的。若是是去大廠的話光會一個mysql基礎多是遠遠不夠的。

像是Redis,MongoDB等非關係型數據庫也是須要好好的掌握的。由於在實際的項目當中會常用Redis

做爲緩存,包括其分佈式集羣的原理等等都是面試的重點。

MySQL的話建議能夠看看,mysql必知必會,原理比較少可是使用細節仍是挺多的,適合先過一遍。其次就是能夠看看尚硅谷的mysql高級部分的課程,關於mysql的查詢優化以及其餘的高級特性都是書本上不多有的。不少的數據庫難題都是這上面出現的。

Redis建議看看Redis設計與實現這本書,很是詳細的講了Redis的底層數據結構,包括其複製,集羣部分也作了很好的解釋。而後的話能夠再去理解一下分佈式的Raft算法,Gossip協議等等。

數據庫就是多用多學,我的建議用學一學docker,之後配置這些服務很是方便,也是如今雲計算的一個很重要的組件。

雲計算

爲何會接觸到雲計算其實也是以前實習的時候重要作的項目,主要就是關於docker容器化以及Kubernetes容器編排框架。

docker在容器化的貢獻是巨大的,也能夠爲咱們在平常配置服務過程中減去很是大的麻煩,不管是工做中仍是平時本身的使用都是很是友好的。

若是是走這個方向的話對於docker以及k8s是必修的,建議看看下面的書或者博客:

  • Kubernetes權威指南
  • docker源碼剖析
  • 極客時間:深刻剖析Kubernetes專欄

面試技巧

大大小小的面試我也是經歷了大幾十輪了,總結下來就是要有策略,要有總結,以及要有信息

首先就是策略,一開始最好不要馬上投大廠,由於一上來就面大廠的話容易崩,剛開始面的人少因此難度也會相對高一些,有的還湊合的會被大廠當備胎,很難受的。其次就是能內推就不要走官網,能免筆試免筆試,不是說筆試難度大仍是咋地,這玩意實際上是玄學,由於你說你一我的作呢沒問題,大神嘛無所謂可是你保不齊別人是一個實驗室或者一個班級的人在作,若是遇到點坑的題目,你交代了,別人合做作出來了那你被掛能怪誰呢。還有就是若是你們也是合做作題的話,oj的查重或者做弊系統的判別如今愈來愈嚴,若是保不齊你被抓到了,可能就被企業拉黑,而後你還不知道,後面怎麼投都沒面試機會這是最慘的。還有就是你們都是一塊兒作的,而後分數也差很少,可是別人接到了面試而你沒有,我就遇到了這樣的狀況,就很玄學我都懷疑是隨機選的人面試。反正就是筆試有風險,你們仍是抱緊學長學姐的大腿,能走內推就內推。可是內推以前仍是須要可以瞭解一下這個部門,大概是作什麼的,hc的數量以及技術氛圍,這點其實很重要,由於一旦進了流程,你反悔就來不及了,若是過了以後還想換部門那隻能從新面試,再走一遍別說多噁心了。其實哪一個部門最好或者哪一個部門最有前景啥的這些問題,真的很難了解的很是清楚,我就糾結過好久好久,這種事情找不到最優解的,不過還好對我而言如今只是實習。

其次就是面試總結了。面試過程中我建議你們開啓手機錄音。這樣方便過後覆盤,我是每次都會再聽一遍本身的錄音,不管是寫面經仍是琢磨本身的回答有錄音真的方便不少。由於面試期間的緊張感會讓你很難用最好的描述回答清楚問題,那麼過後總結就會讓你在下次遇到一樣的問題的時候回答的更好。若是說你們有小夥伴在一塊兒戰鬥的話那麼常常互相分享經驗真的會決定你能不能拿到offer,你們的經驗會讓你迅速成長,說實話面試實習這2月也是我成長的最快的一個階段。

最後就是信息。在面試結束的時候,通常面試官都會問:你有什麼問題問我。這個時候我我的最常常問的就是這個部門正在作什麼,若是我進來我會接觸到什麼。面試官纔是最瞭解這個部門的人,只有從他的口裏獲得的信息纔是最真實也是最有用的,經過他的回答你會了解到這個部門作的產品或者是使用的技術,對於本身的學習方向也有很大的指向做用。其次,我會問的問題就是:您認爲我在哪些方面能夠提升本身。這個問題其實從側面可讓你獲取你這次面試的結果。由於這個問題不像問我面試能不能過這樣直白的面試禁忌。通常面試官會指明他認爲你的缺點,若是他在說的時候帶有建議的語氣以及對你其餘方面的確定那基本是十拿九穩了,再不濟有大佬對你的一個建議指導對你本身查漏補缺也是很是有幫助的。說下我本身的經歷吧,我在面阿里雲3面的時候,那位p9大佬在我問完這個問題以後不只確定了個人一些表現還給我推薦了2本書建議我去閱讀,這真的是很是良好的面試體驗。

最後

這個帖子我會在之後繼續的更新,我目前還在慢慢的職業摸索階段,也仍是一個菜鳥而已,若是有任何錯誤的地方也歡迎你們指正修改。

之後的經驗我也會更新在這個帖子裏,但願對你們有幫助!


與做者交流:nowcoder.com/discuss/18

更多筆經面經:nowcoder.com/discuss?

相關文章
相關標籤/搜索