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