洋哥!我要进大厂!
閱讀本文大概需要4分鐘。
最近不少讀者咨詢洋哥如何進大廠,回答的多了就想著要不整理出一個系列文章出來。說干就干,第一期先寫寫應(yīng)屆畢業(yè)和剛工作不久的計算機專業(yè)的童鞋如何進大廠。
先說說必須要做到的幾件事:
第一,學校內(nèi)的課程,計算機基礎(chǔ)知識,如C語言,數(shù)據(jù)結(jié)構(gòu),計算機組成原理,計算機網(wǎng)絡(luò),計算機操作系統(tǒng)等這些基礎(chǔ)專業(yè)知識一定要理解掌握,在校招中,這些內(nèi)容必考。
第二,提升自己寫代碼的能力。不會配置環(huán)境,不會框架,就去找資料自學,B站,慕課很多免費視頻課程。
第三,做項目。這里不是指學校做的項目,而是真正可以部署上線的項目。你可以去GitHub上找,也可以從學長學姐或者老師看是否有合適的項目,或者找一些大廠實習崗位。
第四,瘋狂刷算法題。leetcode上的題目很多都可能在校招中被拿來當面試題,《劍指Offer》也挺不錯,leetcode最起碼刷個200,300道,然后把《劍指Offer》背一遍,基本沒大問題了。
以上基礎(chǔ),如果讀書期間沒有打牢固,工作后也必須想辦法拼命學習。
再說說我應(yīng)屆畢業(yè)加入騰訊的學習路線吧:
首先攻克C語言,這個沒什么,譚浩強的《C語言程序設(shè)計》反復看,然后一行行在電腦上敲出來。
當時對計算機缺乏系統(tǒng)認識,最難理解的就是指針,書上說它是個變量地址,那么問題來了,什么是地址?一不小心,指針就讓程序Crash了。直到讀研的時候,看了大學教材:《計算機組成原理》這本書,我才明白指針背后的含義。
攻克完C語言之后,聽師兄師姐說數(shù)據(jù)結(jié)構(gòu)也是自學編程需要攻克的重難點。從數(shù)組到鏈表再到堆棧、二叉樹、平衡二叉樹、紅黑樹、B+/B-樹,簡直就像看天書。還記得二叉樹的先序,中序,后序遍歷就把我弄暈乎了。更別提后面的AVL樹的刪除以及B-樹。
我應(yīng)付看不懂的方式也很粗暴:做筆記,勾選出沒看懂的部分,反復看。一遍不行看兩遍三遍四遍,直到所有內(nèi)容看懂為止,看懂后就上機,上到天昏地暗上到頭暈腦脹。數(shù)據(jù)結(jié)構(gòu)這本書,記得來來回回看了10多遍,上機100小時以上。
這之后開始系統(tǒng)的學習網(wǎng)絡(luò)、C++、VC,還記得有一本非常厚的書:《C++ Primer》,可以說上面的每一個例子,都上機造過輪子。
隨后開始啃《Effective C++》、《More Effective C++》、《C++程序設(shè)計原理》、《深度探索C++對象模型》、《STL源碼剖析》、《計算機網(wǎng)絡(luò)系統(tǒng)方法》、《TCP/IP詳解》。
除了瘋狂自學,畢業(yè)的壓力也很重,但掌握的東西越多,你對未來就越篤定。
因為我的目標是畢業(yè)后做游戲開發(fā),所以,主攻的三大方向很明確:Window C++開發(fā)、算法、網(wǎng)絡(luò)編程,這些都是游戲編程所需要掌握的硬核技能。除了這些,大學期間我還開始瘋狂刷題,當時我是在PKU ACM網(wǎng)站上刷的:
刷題和瘋狂學習的過程是枯燥且伴隨痛苦的,編譯報各種不通過的時候讓人無比抓狂,知識點學不會的時候會讓你懷疑自己的智商。曾經(jīng)看過的一部分書籍:
成長的過程,潤物細無聲,極難察覺。但那段枯燥痛苦的學習和刷題歲月讓我未來的道路受益匪淺。畢業(yè)后,我也如愿拿到騰訊游戲的Offer,開啟了職場生涯。
在我那個時代,線上資源并不豐富甚至是匱乏!今天各種論壇、公開課、學習資料非常豐富。最近指導師弟師妹應(yīng)對秋招,我找了一些資料,這里也順便讀者們推薦下:
核心就是通過刻意練習的方法學習計算機基礎(chǔ)課,主要要攻克三個方向(攻克了會讓你如虎添翼):
一、操作系統(tǒng)
操作系統(tǒng)真的可以說是一個奇跡,它為我們做了非常厲害的事情,以至于我們根本感覺不到,只有通過學習它,我們才能深刻體會到它的美妙絕倫,甚至會被計算機大佬們的設(shè)計思想所震撼,有些設(shè)計思想實際上也是可以應(yīng)用于我們工作開發(fā)中。
操作系統(tǒng)有四大模塊,分別是內(nèi)存管理、進程管理、文件系統(tǒng)管理、輸入輸出設(shè)備管理。推薦大家按照這個順序去學習操作系統(tǒng)。
尤其要首先學習內(nèi)存管理,因為它不僅是最重要最難的模塊,同時他和其他模塊的關(guān)聯(lián)性也最多。搞定內(nèi)存管理,就是把操作系統(tǒng)攻克了一大半。
另外美國有很多優(yōu)秀的操作系統(tǒng)公開課,比如mit6.828、哈弗OS/161,這些都可以系統(tǒng)學習下。
這類課程都會給你提供一個mini os殼程序,相當于一個核心組件,剩下的你可以自由發(fā)揮。比如你可以設(shè)計線程管理、文件系統(tǒng)等等。
相比只是看操作系統(tǒng)的書籍,這種學習方法的效率簡直高100倍!
下面是課程官網(wǎng):
https://pdos.csail.mit.edu/6.828/2018/schedule.html
國內(nèi)也有一些頂尖高校也是采取類似的方式,比如清華ucore基于 Linux 0.11魔改版本:
https://github.com/hoverwinter/HIT-OSLab
二、數(shù)據(jù)庫
國內(nèi)說數(shù)據(jù)庫就是mysql,這點要相信我!
首先概覽下mysql的知識體系:
基礎(chǔ):
sql語句
表結(jié)構(gòu)設(shè)計
調(diào)優(yōu):
索引、慢查詢優(yōu)化
配置參數(shù)調(diào)優(yōu)
核心原理:
InnoDb存儲引擎 (包括隔離級別、事務(wù)、鎖、緩存池、回滾日志等等)
Mysqld (包括連接管理、進程管理、查詢緩存、查詢優(yōu)化、日志等等)
架構(gòu)與運維:
用戶與權(quán)限、安全
備份與恢復
日志
分布式與高可用
對于零基礎(chǔ)的同學:
首先,學習基本的SQL語法。完成這個后,你就可以編寫SQL語句了。這一步推薦:W3Schools的?SQL 教程。
其次,學習數(shù)據(jù)庫的主要功能和使用方法,比如用戶相關(guān)或者權(quán)限相關(guān)等等。
推薦兩本書:
1.《MySQL必知必會》這本書講的非常全,從基本概念,到查詢到插入新建表,用戶的管理,都有具體的例子,非常適合沒有任何基礎(chǔ)的同學來學習Mysql。
這本書學習的方法是:1、十分鐘了解下數(shù)據(jù)庫的基本概念 2、找到練手的數(shù)據(jù)庫 3、對照著上面的內(nèi)容去敲。本書里也有大量的內(nèi)容是講sql的,可以結(jié)合w3c的sql教程一起,有取舍地看。
2.《數(shù)據(jù)庫系統(tǒng)概念》這本書是很多數(shù)據(jù)庫運維必看的,非常贊,看完這些并且實踐+思考之后,可以算入門了。
接下來對于希望成長為數(shù)據(jù)庫大拿的童鞋:
推薦四本書:《高性能MySQL(第3版)》、 《MySQL技術(shù)內(nèi)幕(第4版)》,《MySQL技術(shù)內(nèi)幕 InnoDB存儲引擎》,《深入理解MySQL》。
三、計算機網(wǎng)絡(luò)
網(wǎng)絡(luò)知識在工作中非常非常重要!
我分三個階段來介紹:
1. 入門
第一本書 建議看謝希仁的《計算機網(wǎng)絡(luò)基礎(chǔ)》
2.進階
然后第二本要看 《TCP/IP詳解1:協(xié)議》,這個階段需要多思考和動手網(wǎng)絡(luò)在LINUX系統(tǒng)上發(fā)揮的最淋漓盡致,所以在學習的時候最好學習LINUX配合使用,學習LINUX,推薦《鳥哥的LINUX私房菜:基礎(chǔ)篇》。
學習網(wǎng)絡(luò)過程中,要不斷抓包分析等,自己能寫些簡單的應(yīng)用來發(fā)包更是完美。抓包工具推薦:LINUX環(huán)境下用TCPDUMP,windows環(huán)境下用 wireshark。這個階段寫習完后,已經(jīng)是個小高手了。
主要技能應(yīng)該是 :對TCP,IP,DNS,icmp等協(xié)議應(yīng)該都蠻熟了得了,dhcp/tftp/ftp等協(xié)議也應(yīng)該都懂些,重點是要學會如何分析一個協(xié)議及LINUX系統(tǒng)的基本操作也差不多了。
3.高手階段
這個階段需要有一點的編程能力,指C/C++編程。主要學習的方向是協(xié)議的實現(xiàn)和協(xié)議的架構(gòu)原理。
協(xié)議的實現(xiàn)方面, 主要學習底層協(xié)議(指傳輸層及以下)的實現(xiàn), 這些協(xié)議都是在操作系統(tǒng)層面實現(xiàn)的,最好的教材是《TCP/IP詳解:實現(xiàn)》。至于網(wǎng)絡(luò)架構(gòu)這塊,可以學習《計算機網(wǎng)絡(luò)》這本書。
另外,計算機專業(yè)多刷算法題好處多多,算法厲害的人進大廠非常容易,這里推薦一本BAT大佬的算法筆記:尼瑪!BAT大佬的刷題筆記太經(jīng)典!(文末送書)。
今天就寫這么多,下一篇談?wù)勆缯腥绾芜M大廠,敬請期待~
·················END·················
你好,我是findyi,畢業(yè)于華科、清華,
一位大廠的業(yè)務(wù)負責人,
做過大廠技術(shù)總監(jiān),
也做過小廠CTO的產(chǎn)品技術(shù)人,
同時,也是一位信奉終身成長的職場人。
總結(jié)
- 上一篇: 跨平台导PDF,结合wkhtmltopd
- 下一篇: 这难道不是.NET5的bug? 在线求锤