經(jīng)驗(yàn)分享丨你想知道的四個(gè)計(jì)算機(jī)專業(yè)分支都在這里了!
如果你想進(jìn)大廠,那果斷選擇考研;如果非要根據(jù)你的需求和實(shí)際情況,從這四個(gè)分支里面選擇一個(gè)分支,我強(qiáng)烈建議你,四個(gè)分支——計(jì)算機(jī)科學(xué)與技術(shù),軟件工程,網(wǎng)絡(luò)工程,數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)中,請(qǐng)果斷地選擇——計(jì)算機(jī)科學(xué)與技術(shù)。
我再次非常負(fù)責(zé)任地告訴你,當(dāng)你擁有了碩士學(xué)位,且選擇了“計(jì)算機(jī)科學(xué)與技術(shù)”這個(gè)分支,在大廠的眼里,你絕對(duì)是最根正苗紅的科班,是他們選擇相關(guān)人才最正統(tǒng)的專業(yè),沒(méi)有之一!

什么軟件工程、網(wǎng)絡(luò)工程、大數(shù)據(jù),說(shuō)白了只是正統(tǒng)計(jì)算機(jī)科學(xué)技術(shù)下面的一個(gè)分舵而已。這些專業(yè)之間的關(guān)系肯定也不是平行的。大數(shù)據(jù)是最新的,它們和軟件開(kāi)發(fā)、coding的關(guān)系不那么大,理論研究偏多。
如果非要選擇排名,第一選擇——計(jì)算機(jī)科學(xué)與技術(shù),第二選擇——軟件工程;第三選擇——大數(shù)據(jù)。第四選擇——網(wǎng)絡(luò)工程。
不過(guò),話說(shuō)回來(lái),倘若你將來(lái)要選擇的是大學(xué)畢業(yè)后直接進(jìn)入開(kāi)發(fā)崗位,其實(shí)專業(yè)名詞就反而沒(méi)有那么重要了。重要的是你的技術(shù)棧!那么軟件工程就是你的第一選擇!

在這里,我個(gè)人推薦一條比較務(wù)實(shí)的學(xué)習(xí)路徑——
你在學(xué)生時(shí)代真的要好好把握,如果能耐得住寂寞,就好好地把基礎(chǔ)打牢,學(xué)習(xí)透一門(mén)編程語(yǔ)言(JAVA or C語(yǔ)言/C++,不推薦把python/Go/PHP作為第一語(yǔ)言),然后好好地刷???/strong>或者力扣;再把網(wǎng)絡(luò)原理+?網(wǎng)絡(luò)編程?+?操作系統(tǒng)?+?設(shè)計(jì)模式?+?數(shù)據(jù)結(jié)構(gòu)和基本算法好好學(xué)習(xí)到位;再配置5到10個(gè)開(kāi)源項(xiàng)目,如果還能有時(shí)間,那就再去研究研究linux內(nèi)核。
一旦有了這些底子,BATJ + TMD?這些大廠真的可以隨便進(jìn)。

網(wǎng)絡(luò)工程
其實(shí)網(wǎng)絡(luò)原理和網(wǎng)絡(luò)編程并不是一回事,網(wǎng)絡(luò)原理主要注重理論,網(wǎng)絡(luò)編程主要是指TCP/UDP/HTTP編程;學(xué)習(xí)網(wǎng)絡(luò)原理和網(wǎng)絡(luò)編程,你需要掌握以下這些知識(shí)點(diǎn):
http協(xié)議,數(shù)據(jù)格式,常見(jiàn)響應(yīng)碼和返回碼,HTTP1.0與2.0的區(qū)別,請(qǐng)求方法,存在哪些安全隱患,知道?https?是如何加密的、數(shù)字證書(shū)如何形成,什么是對(duì)稱加密、非對(duì)稱加密。http會(huì)話結(jié)束標(biāo)志;Get與Post的區(qū)別;https建立連接的詳細(xì)過(guò)程,哪里用了對(duì)稱加密,哪里用了非對(duì)稱加密,對(duì)加密算法(如RSA)等是否有了解?
TCP協(xié)議:三次握手、四次揮手、TCP/IP的數(shù)據(jù)鏈路層的交互;如何保證可靠傳輸、流量控制、擁塞控制。定時(shí)器,數(shù)據(jù)報(bào)文格式;socket編程的每個(gè)步驟的意義與參數(shù)代表。TCP的狀態(tài)轉(zhuǎn)換?TIME_WAIT狀態(tài)的作用?
UDP:主要考察應(yīng)用場(chǎng)景以及與TCP哪些不同?
select/poll/epoll的相關(guān)原理;select的各個(gè)參數(shù)作用?有哪些讀/寫(xiě)事件?有沒(méi)有更高效的IO模型?
send/recv有哪些出錯(cuò)情況?分別應(yīng)該怎么處理?阻塞和非阻塞套接字的區(qū)別,send/recv的在阻塞和非阻塞下表現(xiàn)有啥不同,和同步/異步概念的區(qū)分?
當(dāng)然,還有一些更高層次的問(wèn)題,也值得你去思考:
網(wǎng)絡(luò)框架對(duì)比和源碼分析ACE/ICE/ZeroMQ/Mudo/Libevent/nginx
自己去設(shè)計(jì)網(wǎng)絡(luò)請(qǐng)求框架,怎么做?
書(shū)籍推薦
關(guān)于推薦書(shū)籍,大家一般都會(huì)推薦《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下》、《圖解http》這兩本。但我個(gè)人感覺(jué)當(dāng)中的術(shù)語(yǔ)太多,難理解,門(mén)檻偏高,不太適合初學(xué)者。
我覺(jué)得初學(xué)者可以先看這兩本,對(duì)于興趣的培養(yǎng)也很重要。一本是尹圣雨的《TCP/IP網(wǎng)絡(luò)編程》(韓國(guó)人寫(xiě)的),里面都是通過(guò)舉例子來(lái)帶你理解,寫(xiě)得非常好;另一本我的印象十分深刻,游雙的《linux高性能服務(wù)器》,我當(dāng)年,就是看了這本書(shū),才正式從嵌入式端轉(zhuǎn)為服務(wù)器開(kāi)發(fā)的。
那你可能又想問(wèn),具體要怎么學(xué)習(xí)怎么看書(shū)?紙上學(xué)來(lái)終覺(jué)淺,絕知此事要躬行!沒(méi)有捷徑,我當(dāng)時(shí)是耐住了性子,挨個(gè)兒把書(shū)里的demo代碼一個(gè)個(gè)敲完了!自己邊看邊動(dòng)手的收獲是非常大的,強(qiáng)烈推薦這種方法!
至于操作系統(tǒng),我個(gè)人就要強(qiáng)烈推薦一本寶藏書(shū)籍——《操作系統(tǒng)哲學(xué)》。
我個(gè)人建議不要去學(xué)那些網(wǎng)上推薦得特別多的,比如《現(xiàn)代操作系統(tǒng)》、《操作系統(tǒng)——精髓與設(shè)計(jì)原理》、《深入理解計(jì)算機(jī)操作系統(tǒng)》……這些書(shū)我看一眼目錄,就感覺(jué)只有一個(gè)詞,那就是枯燥無(wú)味……(喜歡這些書(shū)的人別噴我,純粹分享個(gè)人感受)而當(dāng)我發(fā)現(xiàn)了《操作系統(tǒng)哲學(xué)原理》這本書(shū)以后,我真是太佩服作者了,他能夠把如此索然無(wú)味的操作系統(tǒng)知識(shí),寫(xiě)得那么有趣,真是太奈思了!


在這本書(shū)中,你需要掌握以下:
進(jìn)程/線程使用場(chǎng)景、內(nèi)存分布、區(qū)別與聯(lián)系
操作系統(tǒng)的內(nèi)存對(duì)齊/字節(jié)對(duì)齊
處理器管理與存儲(chǔ)管理
進(jìn)程的通信方式/線程同步方式;linux常見(jiàn)的進(jìn)程間通信方法有哪些,自己用過(guò)哪些?可舉例。線程的同步方式有哪些?
僵尸進(jìn)程是怎么產(chǎn)生的?怎么回收,請(qǐng)講出回收僵進(jìn)程的至少兩種方法?如何查看進(jìn)程是僵尸進(jìn)程?程序退出后,Linux為什么不直接回收該僵尸進(jìn)程?
fork及wait問(wèn)題,什么作用?返回值代表什么意思?
linux應(yīng)用程序中如何處理信號(hào),有哪些常見(jiàn)信號(hào),分別代表什么意思,怎么利用信號(hào)做進(jìn)程間通訊?編寫(xiě)一個(gè)守護(hù)進(jìn)程的方法?
……
再來(lái)說(shuō)說(shuō)數(shù)據(jù)結(jié)構(gòu)和算法的推薦書(shū)籍,吐血推薦——程杰老師的《大話數(shù)據(jù)結(jié)構(gòu)》。
每個(gè)人的精力有限,很多內(nèi)容千萬(wàn)不要貪多。
如果只是一個(gè)開(kāi)發(fā)崗位,那就掌握最常用、最基礎(chǔ)的20個(gè)數(shù)據(jù)結(jié)構(gòu)與算法,學(xué)習(xí)它們的“來(lái)歷”、“特點(diǎn)”、“適合解決什么問(wèn)題”和“實(shí)際的應(yīng)用場(chǎng)景”。只需要下定決心,把這些常見(jiàn)的類型搞明白就行了,這也足以搞得定90%以上的公司面試及工作內(nèi)容了(PS:如果是算法崗位,就當(dāng)我沒(méi)說(shuō))。
數(shù)據(jù)結(jié)構(gòu):數(shù)組、鏈表、棧、隊(duì)列、散列表、二叉樹(shù)、堆、跳表、圖、Tire樹(shù)
算法:遞歸、排序、二分查找、搜索、哈希算法、貪心算法、分治算法、回溯算法、動(dòng)態(tài)規(guī)劃、字符串匹配算法
具體分為3個(gè)小步驟:
邊學(xué)邊練,每周花1~2?小時(shí)集中攻關(guān)一個(gè)數(shù)據(jù)結(jié)構(gòu)和算法,全部寫(xiě)出來(lái);
多思考、多拓展、還有理解適合解決什么樣的問(wèn)題;
自我激勵(lì),每次學(xué)習(xí)完做一篇學(xué)習(xí)筆記。
至于最后的設(shè)計(jì)模式方面,吐血推薦的書(shū)籍還是程杰老師——《大話設(shè)計(jì)模式》。

設(shè)計(jì)模式是在軟件工程實(shí)踐過(guò)程中,軟件開(kāi)發(fā)者們總結(jié)出的良好的編程方法,使用設(shè)計(jì)模式能夠增加系統(tǒng)的健壯性、易修改性和可擴(kuò)展性。那么,當(dāng)你進(jìn)行開(kāi)發(fā)的軟件的規(guī)模比較大的時(shí)候,良好的設(shè)計(jì)模式會(huì)給編程帶來(lái)便利,讓系統(tǒng)更加穩(wěn)定。
最后回歸正題,還是那句老話,愿大家能耐得住寂寞,最終如愿進(jìn)入你理想中的大廠。
如果你想在大學(xué)期間更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開(kāi)始!
微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地
C語(yǔ)言零基礎(chǔ)入門(mén)教程(83集全)
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門(mén)教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!大家也要把握住大學(xué)的時(shí)光,抓住成長(zhǎng)的每一次機(jī)會(huì)哦~
編程學(xué)習(xí)書(shū)籍分享:

粉絲編程交流:
