你大学遗憾过吗
hello, 大家周末好,之前在知乎上看到在大學(xué)中一個(gè)比較典型選擇問(wèn)題:
計(jì)算機(jī)學(xué)生在大學(xué)四年應(yīng)是以數(shù)據(jù)結(jié)構(gòu)和算法為重還是技術(shù)為重?
如題,如果更偏向數(shù)據(jù)結(jié)構(gòu)和算法學(xué)的技術(shù)少是不是找工作就稍微困難或不是;如果以技術(shù)為重會(huì)不會(huì)只知道怎么用,而內(nèi)部的一些算法和數(shù)據(jù)結(jié)構(gòu)都不清楚無(wú)法提升自己能力呢?
先說(shuō)一下我自己大學(xué)經(jīng)歷吧,這樣回答問(wèn)題可能?更有說(shuō)服力。
(PS:答案在最后!)
目錄:
以為是王者
墮落的起點(diǎn)
燃燒的夢(mèng)想
刻苦訓(xùn)練
比賽失利
依然堅(jiān)持
最后的挽歌
正文(回答問(wèn)題)
最后
以為是王者
大一主要是上課,當(dāng)時(shí)信息沒(méi)有現(xiàn)在發(fā)達(dá),技術(shù)資料主要是從圖書館獲取,沒(méi)有公眾號(hào),不知道前輩指導(dǎo),也不知道技術(shù)博客這些東西,基本上悶頭學(xué)習(xí)(還有釋放天性玩游戲),大一不小心借來(lái)一本計(jì)算機(jī)組成原理的書,看得是非常津津有味(但當(dāng)時(shí)很多還是沒(méi)有完全明白),甚至在其他課上都在看,有一次被導(dǎo)員發(fā)現(xiàn)了,還在班級(jí)上夸了我,說(shuō)我大一就在看大三的課程(計(jì)算機(jī)組成原理應(yīng)該是計(jì)科大三的課程),頓時(shí)班級(jí)其他同學(xué)都認(rèn)為我是大神,我自己心里明白得很,就是一個(gè)菜鳥,當(dāng)時(shí)還沒(méi)有內(nèi)卷這個(gè)詞,不然肯定被大家鄙視。
在大學(xué)之前我從來(lái)沒(méi)有學(xué)過(guò)編程,選擇計(jì)科完成是因?yàn)槲腋咧刑貏e喜歡玩游戲,尤其競(jìng)技類游戲,比如CS,紅色警戒,帝國(guó)時(shí)代等(這些經(jīng)典競(jìng)技游戲,可能現(xiàn)在的大學(xué)生都不知道了),因?yàn)楦咧械臅r(shí)候,經(jīng)常去網(wǎng)吧玩游戲,這也是我比較遺憾的地方,浪費(fèi)大量學(xué)習(xí)時(shí)間,雖然最后考上211大學(xué),但并不是我目標(biāo)的大學(xué),高中還是要好好學(xué)習(xí),遠(yuǎn)離游戲。
墮落的起點(diǎn)
轉(zhuǎn)眼大一過(guò)去了,期末考試下來(lái),成績(jī)讓人有些失望,除了專業(yè)課看起來(lái)還可以,其他科目分并不高,大一基本上是在玩和學(xué)習(xí)中度過(guò),沒(méi)有找到奮斗的目標(biāo),但對(duì)編程卻感興趣起來(lái),C語(yǔ)言課程作業(yè),很快完成,而且還可以指導(dǎo)別人。
轉(zhuǎn)折點(diǎn)在大二,班里有人暑假?zèng)]有回家去參加了ACM培訓(xùn),我當(dāng)時(shí)還不知道ACM是什么,導(dǎo)員也沒(méi)有給大家普及,我暑假也沒(méi)有回家,是和校友(高中同學(xué),數(shù)學(xué)系)在宿舍玩帝國(guó)時(shí)代和學(xué)習(xí),我把電腦搬到他們宿舍,吃住一起,確實(shí)是一段比較歡樂(lè)的時(shí)光,奠定我們牢固友誼(將來(lái)10多年日子,我們依然混在一起),日子過(guò)得有些禿廢。
但恰恰在那次暑假中,讓我知道了ACM是啥,暑假不光是玩游戲,偶爾還學(xué)習(xí)編程(個(gè)人愛(ài)好),在搜索一個(gè)編程問(wèn)題文章的時(shí)候,我看到了一篇關(guān)于ACM選手文章,講他們學(xué)校(杭電)如何組隊(duì)參加比賽,如何逆風(fēng)翻盤,干翻名校獲獎(jiǎng)等,我上網(wǎng)搜索了關(guān)于ACM的一切,當(dāng)時(shí)周圍的人都不知道,得知ACM是計(jì)算機(jī)大學(xué)生最高級(jí)別競(jìng)賽,當(dāng)時(shí)燃起了我的斗志,我對(duì)一切競(jìng)技比賽,都有強(qiáng)烈好勝心。
燃燒的夢(mèng)想
由于太喜歡ACM這種比賽了,我的本能,讓我選擇了搞算法比賽,所以我放棄好好學(xué)習(xí),獲取獎(jiǎng)學(xué)金路線,也放棄了學(xué)習(xí)技術(shù)的路線,其實(shí)當(dāng)時(shí)還不知道技術(shù)路線,視野限制了我,我不知道大學(xué)學(xué)習(xí)的東西,未來(lái)會(huì)怎么用,我也沒(méi)有去認(rèn)真想過(guò),只知道曾經(jīng)有個(gè)夢(mèng)想是成為比爾蓋茨,在當(dāng)時(shí)大部分人都是懵逼的,我記得只有少部分用linux系統(tǒng)的同學(xué),他們對(duì)技術(shù)了解多一點(diǎn),或許Linux系統(tǒng)不會(huì)把人變傻,需要不斷去學(xué)習(xí)。
從此之后,我開始進(jìn)入算法比賽的圈子,知道很多圈子里面的東西,比如NOIP比賽,IOI比賽,ACM比賽,了解各種算法比賽或算題平臺(tái):POJ,ZOJ,USACO,UVA,URAL,Topcoder,Codeforces等。
這里簡(jiǎn)單普及一下區(qū)別:
NOIP比賽,是高中生比賽,為什么我一個(gè)大學(xué)生要去關(guān)注高中生比賽呢,因?yàn)楹芏啻笊穸际菑母咧斜荣惱锩孢^(guò)來(lái)的,比如樓教主;
IOI比賽,是國(guó)際信息學(xué)奧林匹克競(jìng)賽(高中),可以保送清華和北大的比賽,里面很多大神,單在算法領(lǐng)域超過(guò)80%的大學(xué)生,他們?cè)趪?guó)家隊(duì)訓(xùn)練的論文,質(zhì)量非常高,我基本全部都下載打印出來(lái)學(xué)習(xí),這個(gè)就是起步的差距,視野是多么的重要。
POJ(北大),ZOJ(浙大) 老牌國(guó)內(nèi)刷題網(wǎng)站,水題太多;
USACO 是美國(guó)中學(xué)生刷題網(wǎng)站,USACO的traing(天梯)不知道造福多少的oier們。高質(zhì)量的天梯題,友好的做題流程(給予錯(cuò)誤點(diǎn)的正確答案和標(biāo)準(zhǔn)輸入)。
UVA,URAL國(guó)外刷題網(wǎng)站,題目質(zhì)量高,偏難。
Topcoder和Codeforces?的社區(qū)比較活躍,優(yōu)秀的比賽平臺(tái),主要是題目質(zhì)量比較高,做的人人也比較多,可以查看別人代碼和數(shù)據(jù)。
我之前還在朋友圈感嘆過(guò),陳丹琦IOI金牌選手,而這些厲害的人現(xiàn)在依然很厲害, 大多數(shù)后面都轉(zhuǎn)向人工智能,但在當(dāng)時(shí)這個(gè)其實(shí)并不火,誰(shuí)也不知道。
刻苦訓(xùn)練
由于我是大二暑假才進(jìn)入ACM圈子,其實(shí)對(duì)于我這種大學(xué)才開始編程的人來(lái)說(shuō),起步確實(shí)有點(diǎn)晚了,我指定很多計(jì)劃,也買了一些算法書, 劉汝佳的黑書《算法藝術(shù)與信息學(xué)競(jìng)賽》, 這本書起點(diǎn)有點(diǎn)高,需要有點(diǎn)內(nèi)功的人才能完全領(lǐng)會(huì)里面的精華,計(jì)算機(jī)的課程基本上我都是自學(xué),比如數(shù)據(jù)結(jié)構(gòu)和算法,而且教材是去圖書館借的,算法導(dǎo)論,嚴(yán)蔚敏的《數(shù)據(jù)結(jié)構(gòu)》,然后開始拼命刷題,看別人的解題報(bào)告,看論文。
比如DD大牛的:背包九講
侯啟明:《信息論在信息學(xué)競(jìng)賽中的簡(jiǎn)單應(yīng)用》
方奇:《染色法和構(gòu)造法在棋盤上的應(yīng)用》
樓天城:《匹配算法在搜索問(wèn)題中的巧用》
周源:《淺談數(shù)形結(jié)合思想在信息學(xué)競(jìng)賽中的應(yīng)用》
朱澤園:《多串匹配算法及其啟示》
余遠(yuǎn)銘:《最短路算法及其應(yīng)用》
俞華程《矩陣乘法在信息學(xué)中的應(yīng)用》
陳丹琦《基于連通性狀態(tài)壓縮的動(dòng)態(tài)規(guī)劃問(wèn)題》
毛子青:《動(dòng)態(tài)規(guī)劃算法的優(yōu)化技巧》
方奇:《動(dòng)態(tài)規(guī)劃》
...
當(dāng)時(shí)最難的理解,就是動(dòng)態(tài)規(guī)劃,其他比較難的都是數(shù)學(xué)相關(guān)的(一般是數(shù)論或者是組合數(shù)學(xué)),這個(gè)花了我很多時(shí)間,和大多數(shù)人一樣,在這個(gè)圈子里面,起步晚的人都得刻苦訓(xùn)練,很多人都封閉式訓(xùn)練,陪伴他們都是無(wú)數(shù)個(gè)黑夜,泡面和外賣,而我并沒(méi)有加入校隊(duì),也沒(méi)有進(jìn)行封閉式訓(xùn)練,都是全屏個(gè)人熱愛(ài),私底下訓(xùn)練,當(dāng)時(shí)還很菜。
比賽失利
大三有幸報(bào)名學(xué)校的ACM培訓(xùn)班,一種相見恨晚感覺(jué),如果大一的時(shí)候,導(dǎo)員能夠提早告訴我們,或許人生可能就不一樣,當(dāng)時(shí)確實(shí)有點(diǎn)埋怨輔導(dǎo)員,因?yàn)橹叭⒓优嘤?xùn)的有些人根本就對(duì)ACM不感冒,我一定要珍惜這次機(jī)會(huì),?培訓(xùn)課里面會(huì)有校隊(duì)高手來(lái)指導(dǎo)我們,差距還是有一點(diǎn),他們有些人已經(jīng)參加過(guò)比賽,也刷大量的題,我依然是菜鳥一個(gè),培訓(xùn)結(jié)束后沒(méi)有比賽,也沒(méi)有選拔,有些人就進(jìn)了校隊(duì)了,我認(rèn)識(shí)一個(gè)校隊(duì)朋友,由于住得很近,每天都和他討論算法,他經(jīng)常帶著我進(jìn)校隊(duì)訓(xùn)練室,讓我終于看見那些真正打比賽人平時(shí)是怎么訓(xùn)練的,大部分時(shí)間,大家都在刷題,交流其實(shí)并不多。
我并不是校隊(duì)的人,但我卻天天和他們混在一起,反正隊(duì)長(zhǎng)也不介意,跟著他們一起刷題,但大家都很忙,基本上不會(huì)回答你的問(wèn)題,我都是自己琢磨,看網(wǎng)上題解,如果沒(méi)有人指導(dǎo),這個(gè)其實(shí)會(huì)走很多彎路,進(jìn)步會(huì)很慢,所以打ACM之前,一定要請(qǐng)教一些前輩。
證明自己的機(jī)會(huì)來(lái)了,ACM亞洲預(yù)選賽就我們學(xué)校舉行,校內(nèi)選拔賽那天,我還在床上睡覺(jué),突然班上一個(gè)同學(xué)叫我一起參加比賽,一起組隊(duì),我即興奮又緊張,第一次參加正式的比賽,比較激動(dòng),比賽過(guò)程很緊張,組隊(duì)其他兩個(gè)同學(xué)都是班上學(xué)習(xí)特別優(yōu)秀的同學(xué),但貌似我們大家都沒(méi)有太多比賽經(jīng)驗(yàn)(刷題不夠多),只做對(duì)了2道題,最后的結(jié)果是選拔失敗,無(wú)緣預(yù)選賽,非常失落,因?yàn)檫@一等就是一年,明年我就大四了,我還有機(jī)會(huì)嗎?
這讓我想起了,2009年,我另一個(gè)偶像,伍聲2009休學(xué)一年帶領(lǐng)LGD戰(zhàn)隊(duì),一舉奪得了中國(guó)的第一個(gè)DOTA世界冠軍,dota在大學(xué)時(shí)代,也是我又恨又愛(ài)的游戲,恨是這個(gè)游戲占據(jù)我大量的時(shí)間(周圍同學(xué)都在玩),愛(ài)是這個(gè)游戲教會(huì)我很多團(tuán)隊(duì)做事情的經(jīng)驗(yàn),知道一個(gè)優(yōu)秀團(tuán)隊(duì)需要分工明確,各展所長(zhǎng),我喜歡競(jìng)技的比賽,dota也不例外,但我并沒(méi)有想去打職業(yè)想法,當(dāng)時(shí)真的想休學(xué)一年搞算法比賽,因?yàn)樗惴ū荣惒攀俏业淖類?ài)。
依然堅(jiān)持
雖然第一次比賽失利,但我還是堅(jiān)持訓(xùn)練,還在不停學(xué)習(xí),刷題,看解題報(bào)告,論文等,心里一直不甘心,POJ上面有一些專題訓(xùn)練,我也會(huì)刷一下,比如樓教主的男人八題:
時(shí)至今日也沒(méi)能成為一個(gè)真“男人”,后面也參加百度之星比賽,網(wǎng)易的有道難題比賽,topcoder比賽,codeforce比賽,知道了很多大佬,了解很大佬傳奇故事,這些曾經(jīng)鼓勵(lì)一代代OIer/ACMer前進(jìn)的傳奇故事, 比如ACRush(婁天成),WJMZBMR(陳立杰),tourist(Korotkevich), Petr(Mitrechev)...
當(dāng)時(shí)topcoder平臺(tái)排名:
最后的挽歌
由于大四要出去實(shí)習(xí),要搞畢業(yè)設(shè)計(jì),要準(zhǔn)備找工作,所以刷題減少了,但有空仍然會(huì)刷一下,top coder上的比賽,仍然會(huì)參加,只不過(guò)當(dāng)初ACM賽場(chǎng)的夢(mèng)想可能實(shí)現(xiàn)不了,當(dāng)時(shí)算著,如果讀研究生,貌似還可以參加,還可以搏一搏,但現(xiàn)實(shí)總是殘酷的,家里需要我出去掙錢,最終還是沒(méi)有去讀研。
雖然沒(méi)有能在大學(xué)里面實(shí)現(xiàn)自己的愿望,但編程能力和解決問(wèn)題的能力還是被訓(xùn)練得挺強(qiáng)的,其實(shí)在學(xué)校時(shí)候,我還參加過(guò)學(xué)校舉辦了星火杯軟件比賽,拿軟件組的第一名(作品是類似qq聊天軟件,支持語(yǔ)音,群聊等),用的是MFC框架,是當(dāng)時(shí)C++ window桌面比較流行框架,不過(guò)現(xiàn)在技術(shù)早已更新?lián)Q代。
在班里是比較出名的,但ACM比賽至今是我的一個(gè)遺憾,我曾工作后一直沒(méi)有放棄過(guò),有時(shí)間就會(huì)參加比賽,訓(xùn)練自己。比如在華為時(shí)候,內(nèi)部算法平臺(tái),我也經(jīng)常去刷題,在騰訊的時(shí)候,只要有比賽,都會(huì)報(bào)名參加:
后面讀到過(guò)很多退役帖子,很多人最終都認(rèn)清現(xiàn)實(shí),不得不放棄夢(mèng)想,也讀過(guò)樓教主回憶錄,由于各種機(jī)緣巧合,連樓教主這種ACM頂級(jí)大牛都沒(méi)有拿到過(guò)世界冠軍。
人生總會(huì)有遺憾,最重要是我們?cè)?jīng)奮不顧身去努力過(guò),即使沒(méi)有達(dá)到自己的期望,將來(lái)也會(huì)成為美好的回憶。
差不多我的大學(xué)四年,就是在比賽,游戲,編程中度過(guò)。
正文(回答標(biāo)題的問(wèn)題)
作為過(guò)來(lái)人,工作多年,在華為-->外企-->騰訊等多家公司工作過(guò),了解各種類型公司校招,社招面試,跳槽,晉級(jí)路線,知道什么東西在工作中非常有用,什么東西可以暫時(shí)應(yīng)付,后面再補(bǔ)也行。
優(yōu)先看一下大廠的校招要求:
上面明確標(biāo)明必須具備的技能(CS核心知識(shí)點(diǎn)):
計(jì)算機(jī)基礎(chǔ)(CPU,緩存,內(nèi)存,磁盤),計(jì)網(wǎng)(網(wǎng)絡(luò)協(xié)議),操作系統(tǒng)(進(jìn)程,線程,多線程,并行,鎖, 調(diào)度),編程語(yǔ)言(C/C++,go,python), 網(wǎng)絡(luò)編程(socket,epoll),算法與數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)模式,數(shù)據(jù)庫(kù)(mysql,事務(wù),CRUD,分布式一致性,分庫(kù)分表,負(fù)載均衡),安全(鑒權(quán),加密等);
這些基本上都是程序員的基本功,數(shù)據(jù)結(jié)構(gòu)和算法也是其中之一,如果你不是走特長(zhǎng)生路線(類似高中參加競(jìng)賽保送清華北大那種):
什么叫特長(zhǎng)生:ACM/OJ比賽獲獎(jiǎng),或重要開源貢獻(xiàn),或?qū)δ骋豁?xiàng)技術(shù)研究很深(比如OS,編譯器,編程語(yǔ)言,分布式架構(gòu)等);
ACM/OJ算法比賽獲獎(jiǎng)確實(shí)可以優(yōu)先獲取進(jìn)大廠機(jī)會(huì)(有優(yōu)勢(shì)),基本上是以數(shù)據(jù)結(jié)構(gòu)和算法為重,如果再加上學(xué)校buff,進(jìn)大廠還是挺穩(wěn)的。
但是大多數(shù)人,可能都不是走特長(zhǎng)生路線,都是普通人,普通人只能走正常校招路線,需要按上面要求來(lái),那么你就需要把計(jì)算機(jī)基礎(chǔ)掌握好, 數(shù)據(jù)結(jié)構(gòu)和算法也是需要學(xué)習(xí)的,只是沒(méi)有比賽那么要求高,就是把基本數(shù)據(jù)結(jié)構(gòu)和算法掌握就行:
詳細(xì)參考:深入理解數(shù)據(jù)結(jié)構(gòu)和算法
其他計(jì)算機(jī)基礎(chǔ)(CPU,緩存,內(nèi)存,磁盤),計(jì)網(wǎng)(網(wǎng)絡(luò)協(xié)議),操作系統(tǒng)(進(jìn)程,線程,多線程,并行,鎖, 調(diào)度),編程語(yǔ)言(C/C++,go,Java,python), 網(wǎng)絡(luò)編程(socket,epoll),設(shè)計(jì)模式,數(shù)據(jù)庫(kù)(mysql,事務(wù),CRUD,分布式一致性,分庫(kù)分表,負(fù)載均衡),安全(鑒權(quán),加密等);
TCP/IP協(xié)議精華指南
一句話,如果你決心打算法比賽,就以算法和數(shù)據(jù)結(jié)構(gòu)為重,多做題,多寫代碼,這樣你的解決問(wèn)題能力會(huì)提升很多,編碼能力要比其他同學(xué)成長(zhǎng)要快, 但算法比賽要想獲獎(jiǎng)也是有一定難度的,是孤投一擲,有一定風(fēng)險(xiǎn)存在,高風(fēng)險(xiǎn)高回報(bào),人生處處是選擇啊,這個(gè)看自己的選擇了,如果喜歡比賽(有人喜歡這種智力比賽)就試一下,反正最后編碼能力提高,找工作也不會(huì)太差,一般都是從大一,大二開始,如果已經(jīng)是大三,則不建議了,這個(gè)刷題也是需要很多時(shí)間的,算法比賽中需要掌握很多知識(shí)點(diǎn):
但工作中至少一半是用不上的。就看你選擇了。
我大學(xué)也有一部分人選擇搞算法比賽,但只是少數(shù)人獲獎(jiǎng),然后高薪進(jìn)大廠;
有一部分人老老實(shí)實(shí)學(xué)習(xí)基本課程,高分保研,好學(xué)校的研究生進(jìn)大公司更容易;
有一部分人喜歡技術(shù),崇尚技術(shù)可以改變世界,深挖技術(shù)路線,參考各種技術(shù)論壇,搞Linux,開源項(xiàng)目,最后堅(jiān)持下來(lái)的,都是高薪進(jìn)了大廠;
有一部分就比較普通,是面向工作學(xué)習(xí),八股文搞起來(lái),把計(jì)算機(jī)基礎(chǔ)打牢,每一樣都還好,不是特別突出,也有部分進(jìn)了大廠。
其他。。。沒(méi)有選擇
最后
其實(shí)看得這里,你心中答案應(yīng)該明朗了,條條大路通羅馬,只要堅(jiān)持一條路走到黑,都可以找到好的工作,就看你個(gè)人選擇,記住,最好早點(diǎn)明確自己的路線,這樣才能夠有充足的時(shí)間去迎接挑戰(zhàn)。
- END -
看完一鍵三連在看,轉(zhuǎn)發(fā),點(diǎn)贊
是對(duì)文章最大的贊賞,極客重生感謝你
推薦閱讀
高考結(jié)束了
如何成為技術(shù)大神
深入理解數(shù)據(jù)結(jié)構(gòu)和算法
如何成為一名大廠的優(yōu)秀員工?
總結(jié)
- 上一篇: 深入浅出 Linux 惊群:现象、原因和
- 下一篇: TCP的FIN_WAIT1状态理解|深入