中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
怒肝1.3w 字給學(xué)姐講明白計(jì)算機(jī)專業(yè)大學(xué)四年到底該學(xué)什么?

為了保證這篇文章后續(xù)能夠繼續(xù)完善,我已近將其同步到了我的 Github:https://github.com/Snailclimb/cs-guide (無價(jià)值不分享。歡迎擴(kuò)散,讓更多學(xué)姐看到。有幫助就點(diǎn)個(gè) star 鼓勵(lì)一下 ??)

網(wǎng)上已經(jīng)有挺多關(guān)于“計(jì)算機(jī)專業(yè)大學(xué)四年到底應(yīng)該學(xué)什么?”相關(guān)的文章了。不過,既然學(xué)姐問了我這個(gè)問題,我還是想再從我的角度來給她回答一下。安排!

另外,這篇文章中我不光會(huì)推薦你學(xué)習(xí)什么,還會(huì)推薦對(duì)應(yīng)的比較好的學(xué)習(xí)資料給你。

這篇文章前前后后花了兩個(gè)月時(shí)間寫完,光是完善和修改就花了一周。即使,我盡量控制不說廢話,但是這篇文章的字?jǐn)?shù)也還是超過了 1w 字 ,不過都是干貨!相信,不論是在校大學(xué)生還是已經(jīng)工作幾年的小伙伴都應(yīng)該能夠從中有所收獲。如果有幫助點(diǎn)個(gè)贊/再看鼓勵(lì)一下就好!

另外, 這篇文章也要感謝我哈工大的一位朋友小明,畢竟自己離開學(xué)校已有 1 年多,沒有他的鼎力幫助,就沒有這篇文章。

下面這張圖是周末的時(shí)候在窗臺(tái)邊寫這篇文章的時(shí)候拍的。

首先,在學(xué)習(xí)編程之前,我覺得什么編程語言、數(shù)據(jù)結(jié)構(gòu)、算法、操作系統(tǒng)這些都要統(tǒng)統(tǒng)一邊去。作為計(jì)算機(jī)專業(yè)的學(xué)生一定要首先養(yǎng)成下面幾個(gè)程序員必備的好習(xí)慣。

程序員必備的好習(xí)慣

  1. 使用 Google 搜索而不是百度。如果你實(shí)在訪問不了 Google 的話,替換成 Bing 也行。
  2. 經(jīng)常逛一些比較不錯(cuò)的博客論壇比如國內(nèi)的掘金、博客園、CSDN,學(xué)有余力的小伙伴還可以去 GitHub、碼云上找一些開源項(xiàng)目,用來訓(xùn)練自己的開發(fā)能力。
  3. 多關(guān)注一些你的領(lǐng)域的一些大牛在干嘛,多關(guān)注一些優(yōu)質(zhì)原創(chuàng)博主的博客。舉個(gè)例子:Java 領(lǐng)域的話,你可以多關(guān)注一下我的 Github:https://github.com/Snailclimb[1] ,上面有很多干貨。
  4. 編程不只是要看,更要?jiǎng)邮?,這是一個(gè)特別需要實(shí)踐的專業(yè)。各個(gè)高校在編程課上可能會(huì)介紹自己校內(nèi)的 oj(online judge),題庫式的網(wǎng)站,可以做一些編程題目,還可以在線評(píng)測(cè)。一般適合初學(xué)者的簡(jiǎn)單的 OJ 校內(nèi)都會(huì)提供,如果沒有的話,可以去校外找一些開放的簡(jiǎn)單的 OJ 來刷題。
  5. 不要因?yàn)閯傞_始學(xué)習(xí)編程的不容易,而打擊自己的學(xué)習(xí)興趣和欲望。加油!奧利給!

我把我知道的一些程序員必備的好習(xí)慣毫無保留地都整理在了這個(gè)倉庫:https://github.com/Snailclimb/programmer-advancement [2] ,強(qiáng)烈推薦大家看看,同時(shí)也期待你的完善補(bǔ)充!

然后,就是編程語言了!

編程語言

幾乎所有的大學(xué)剛?cè)雽W(xué)第一年就會(huì)開設(shè)一門編程語言課,一般是 C 語言偏多。

不論你的學(xué)校是否開設(shè)了 C 語言這門課,我建議大家最好還是學(xué)一下 C 語言。拿我從事的 Java 后端開發(fā)來說,很多 Java 從業(yè)者單純覺把 Java 學(xué)好就完全足夠了,并不需要再學(xué)習(xí)像 C、C++這種稍微更難一點(diǎn)的編程語言。我覺得對(duì)于剛能寫好 CRUD 的 Java 程序員來說確實(shí)是這樣的,但是對(duì)于想要成為比較頂尖的 Java 程序員來說肯定是不行的。很多開源項(xiàng)目都調(diào)用了 C 語言庫,所以, 作為 Java 程序員,不需要你 C 編碼能力多強(qiáng),至少能夠看懂 C 代碼。

剛開始學(xué)習(xí)一門編程語言的時(shí)候,大部分人都挺吃力的。有時(shí)候一個(gè)環(huán)境搭建就折騰大半天。我記得,我那時(shí)候剛開始學(xué),很多非常非常簡(jiǎn)單的控制臺(tái)程序都寫不出來。不過,隨著后面學(xué)習(xí)的慢慢深入,我慢慢發(fā)現(xiàn)自己的編程思維和能力在變得越來越好。

在這里我想鼓舞一下初入計(jì)算機(jī)編程的各位小伙伴:萬事開頭難,你見過的所有大佬都是從懵懵懂懂的階段摸爬滾打過來的。 當(dāng)你在 C 語言課上看著前面的老師在編譯器中飛快地輸入著代碼,自己卻連編譯器都配置不好的時(shí)候,心中難免會(huì)有失落,但這決非放棄的理由,只要堅(jiān)持住,解決了一個(gè)又一個(gè)的難題,你也會(huì)成為曾經(jīng)心中的大佬。

如果想要看視頻提前學(xué)習(xí)或者上課沒學(xué)好 C 語言的話,推薦去 B 站搜索 C 語言郝斌。這個(gè)老師的課程很不錯(cuò),非常適合拿來作為初學(xué)者學(xué)習(xí) C 語言的教程。并且,視頻中老師還會(huì)給你分享一些他自己的編程學(xué)習(xí)心得。

另外,如果你覺得譚浩強(qiáng) 老師的 《C 語言程序設(shè)計(jì)》 這本書比較難理解的話,可以看一下 《啊哈 C 語言!》,這本書非常通俗易懂,非常適合之前沒有學(xué)習(xí)過編程的新手。

還有開設(shè) C++課程的高校也比較多。初學(xué)者學(xué)習(xí) C++的教材可以使用《C++ Primer》,熟練掌握基礎(chǔ)語法后,為了進(jìn)一步提高自己的編程開發(fā)能力,還可以讀一讀《C++ Primer Plus》和《Effective C++》。

實(shí)際上,大一初學(xué)編程的小伙伴在剛開始學(xué)編程語言的時(shí)候都會(huì)很吃力,以上推薦教材的正確使用方法有兩個(gè)要點(diǎn):

  1. 結(jié)合課上老師所講和書上所講,在實(shí)際應(yīng)用中去感悟“為什么”
  2. 把教材當(dāng)成工具書、參考書,而非“教程”,結(jié)合參考書和網(wǎng)上搜索資源,來解決在實(shí)際編程中遇到的問題

計(jì)算機(jī)基礎(chǔ)課

計(jì)算機(jī)基礎(chǔ)的話,就是我們平時(shí)常提到的老四件:1.數(shù)據(jù)結(jié)構(gòu)、2.算法、3.計(jì)算機(jī)網(wǎng)絡(luò)、4.操作系統(tǒng)

要我說的話,這四門課是程序員最最最需要好好學(xué)的東西!另外,雖然四者都很重要,但是數(shù)據(jù)結(jié)構(gòu)和算法相比于計(jì)算機(jī)網(wǎng)絡(luò)和操作系統(tǒng)要更加重要一些!

這四大件也就是我們常說的程序員內(nèi)功修煉最重要的一部分內(nèi)容!

“直接用框架不就好了么?為啥還要學(xué)習(xí)這些東西呢?” 這句話是很多初學(xué)編程的小伙伴最疑惑的問題。

簡(jiǎn)單給大家聊聊為什么這四大件這么重要吧!

  1. 地基穩(wěn)固才能走的長(zhǎng)遠(yuǎn) :這大件可以說是程序員未來發(fā)展的地基,你掌握的程度決定了你的地基打的有多深。工作不久之后,你就會(huì)發(fā)現(xiàn)你想要成為一位優(yōu)秀的程序員,而不是 API 調(diào)用者/低級(jí) Bug 制造者,這些東西都是必備的!
  2. 技術(shù)更新?lián)Q代快 :我們前幾年可能還在用 Spring 基于傳統(tǒng)的 XML 開發(fā),現(xiàn)在幾乎大家都會(huì)用 Spring Boot 這個(gè)開發(fā)利器來提升開發(fā)速度,再比如幾年前我們使用消息隊(duì)列可能還在用 ActiveMQ,到今天幾乎都沒有人用它了,現(xiàn)在比較常用的就是 Rocket MQ、Kafka 。技術(shù)更新?lián)Q代這么快的今天,你是無法把每一個(gè)框架/工具都學(xué)習(xí)一邊的,底層技術(shù)就是你快速上手他們的瑞士軍刀。
  3. 懂得底層技術(shù)的人更有競(jìng)爭(zhēng)力 :現(xiàn)在的程序員這么多,你如何能和別人拉開差距?單純就靠使用框架的能力么?這些隨便從培訓(xùn)班抽一個(gè)人可能都會(huì)做的工作無法成為你的核心競(jìng)爭(zhēng)力。

數(shù)據(jù)結(jié)構(gòu)

關(guān)于數(shù)據(jù)結(jié)構(gòu),我想說的是,它是這四大件中最簡(jiǎn)單、最基礎(chǔ)的一個(gè)。離開了數(shù)據(jù)結(jié)構(gòu),幾乎任何的程序都會(huì)失效,所以在討論數(shù)據(jù)結(jié)構(gòu)的時(shí)候,常常要把算法也連帶著說一說。

要單純地掌握常見的數(shù)據(jù)結(jié)構(gòu),就如同拆解一個(gè)個(gè)精妙的儀器件一樣有趣和簡(jiǎn)單。正因?yàn)閿?shù)據(jù)結(jié)構(gòu)這個(gè)東西在程序中的作用,和儀器部件特別相像,不同的數(shù)據(jù)結(jié)構(gòu)有著不同的特性,因此要想學(xué)好數(shù)據(jù)結(jié)構(gòu),圖解是必備武器!

在數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)中,強(qiáng)烈建議跟著名校的網(wǎng)課學(xué)習(xí),這些課程都經(jīng)過多次打磨,配套練習(xí)豐富,非常適合初學(xué)者。比如中國大學(xué) MOOC 上的武漢大學(xué)開設(shè)的《數(shù)據(jù)結(jié)構(gòu)》課程。

輔以教材參考書,強(qiáng)推《大話數(shù)據(jù)結(jié)構(gòu)》,光看封面你就知道這本書的風(fēng)格了,圖解學(xué)數(shù)據(jù)結(jié)構(gòu)?選這本,沒錯(cuò)的!

當(dāng)用圖解理清了各種數(shù)據(jù)結(jié)構(gòu)的原理和特性之后,還要在代碼中多加練習(xí),熟能生巧。

編程是一個(gè)冒出一個(gè)問題,解決一個(gè)問題的有趣過程。

當(dāng)有一個(gè)變量在腦海中出現(xiàn)的時(shí)候,要先思考該變量的作用是什么,以什么數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)這個(gè)變量,還要考慮在代碼中如何實(shí)現(xiàn)。比如說棧,在 C 語言中可以用數(shù)組輔以棧頂指針來實(shí)現(xiàn);在 Java 中可以直接調(diào)用 Stack 類來實(shí)現(xiàn)。只要你編程,就要用到數(shù)據(jù)結(jié)構(gòu),編的程序越復(fù)雜,用到的數(shù)據(jù)結(jié)構(gòu)就可能越多,可以說它幾乎沒有什么難點(diǎn),重點(diǎn)是熟能生巧。

算法

算法課常常和數(shù)據(jù)結(jié)構(gòu)課放在一起,在有些高校中,會(huì)存在“數(shù)據(jù)結(jié)構(gòu)與算法”和“算法設(shè)計(jì)與分析”這樣的兩門課。

前者可能相對(duì)簡(jiǎn)單,介紹的是常用的數(shù)據(jù)結(jié)構(gòu)和基礎(chǔ)的算法;后者就相對(duì)較難,講的是算法相關(guān)的概念,以及稍微比較復(fù)雜的算法思維和算法分析。前者側(cè)重的是基礎(chǔ)邏輯算法的應(yīng)用,后者側(cè)重的是運(yùn)用算法思想到實(shí)際問題中。

舉個(gè)例子,我們常用的排序算法就屬于前者的課程內(nèi)容,一個(gè)排序問題可以有多種算法解決方案,不同方案有不同的優(yōu)劣,也就有不同的應(yīng)用場(chǎng)景,學(xué)習(xí)一題多解也可以加強(qiáng)編程熟練度。而貪心思想屬于后者的課程內(nèi)容,比如說經(jīng)典的活動(dòng)選擇問題:

設(shè) S={1,2,...,n}是 n 個(gè)活動(dòng)的集合,各個(gè)活動(dòng)的集合,各個(gè)活動(dòng)使用同一個(gè)資源,資源在同一時(shí)間只能為一個(gè)活動(dòng)使用?,F(xiàn)已知 n 個(gè)活動(dòng)的開始時(shí)間 si 和 fi,設(shè)所有活動(dòng)的最早開始時(shí)間和最晚結(jié)束時(shí)間都在資源可供利用的時(shí)間內(nèi),并規(guī)定若活動(dòng) i 和活動(dòng) j 滿足 fi≤sj(或 fj≤si),則稱他們是兼容的?,F(xiàn)求:最大活動(dòng)集合,該活動(dòng)集合內(nèi)的所有活動(dòng)都是兼容的。

該問題的解決思想使用了貪心思想,貪心策略為:每次都選 fi 最小,即結(jié)束時(shí)間最早的活動(dòng)(在滿足兼容的情況下)。以此貪心策略進(jìn)行選取活動(dòng)集合,可以滿足結(jié)果為最優(yōu)解(不唯一),該解法的最優(yōu)性可以用優(yōu)化子結(jié)構(gòu)來證明。以上這些,對(duì)于初學(xué)者來說可能聽起來云山霧繞,但這都是算法設(shè)計(jì)與分析課上的內(nèi)容。

分治思想、貪心思想、動(dòng)態(tài)規(guī)劃這三大算法在實(shí)際應(yīng)用起來非常靈活,常常讓人摸不到頭腦。我給大家的建議是:

  1. 多多聯(lián)系圖解的方式,先接觸算法的思想。不管多復(fù)雜的算法,結(jié)合了圖解,總能對(duì)其有一個(gè)清晰的認(rèn)識(shí)。
  2. 多多聯(lián)系實(shí)例,研究算法在問題中的應(yīng)用。對(duì)算法有一個(gè)清晰的認(rèn)識(shí)后,到了實(shí)際問題中還是不容易應(yīng)用算法想出解題思路,需要大家勤動(dòng)腦,勤動(dòng)手,多做題,感悟算法在問題中的應(yīng)用。
  3. 多多看博客、熱門筆記,聽聽前輩們的總結(jié),爭(zhēng)取做到舉一反三。前輩們的筆記都是非常不錯(cuò)的學(xué)習(xí)資源,如
  4. 網(wǎng)上一些熱門的開放的 OJ 也是大家訓(xùn)練算法的好資源哦~,比如leetcode[3]

另外,如果你刷 Leetcode 的話,你會(huì)發(fā)現(xiàn)很多算法題都是通過動(dòng)態(tài)規(guī)劃的方式來解決的,因此你務(wù)必要琢磨透動(dòng)態(tài)規(guī)劃算法的思想。

再附上一些算法領(lǐng)域的經(jīng)典學(xué)習(xí)參考書(對(duì)于初學(xué)者,推薦程度從左向右……):

下面這兩篇文章都非常不錯(cuò),一定要好好看一下:

  • 《硬核的算法學(xué)習(xí)書籍+資源推薦》[4]
  • 如何刷 Leetcode?[5]

計(jì)算機(jī)網(wǎng)絡(luò)

計(jì)算機(jī)網(wǎng)絡(luò)是一門系統(tǒng)性比較強(qiáng)的計(jì)算機(jī)專業(yè)課,各大名校的計(jì)算機(jī)網(wǎng)絡(luò)課程打磨的應(yīng)該都比較成熟。

要想學(xué)好計(jì)算機(jī)網(wǎng)絡(luò),首先要了解的就是 OSI 七層模型或 TCP/IP 五層模型,即應(yīng)用層(應(yīng)用層、表示層、會(huì)話層)、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層。

Data to Drag關(guān)于這門課,首先強(qiáng)烈推薦參考書是機(jī)械工業(yè)出版社的《計(jì)算機(jī)網(wǎng)絡(luò)——自頂向下方法》。該書目錄清晰,按照 TCP/IP 五層模型逐層講解,對(duì)每層涉及的技術(shù)都展開了詳細(xì)討論,基本上高校里開設(shè)的課程的教學(xué)大綱就是這本書的目錄了。

如果你覺得上面這本書看著比較枯燥的話,我強(qiáng)烈推薦+安利你看看下面這兩本非常有趣的網(wǎng)絡(luò)相關(guān)的書籍:

  • 《圖解 HTTP》[6] :講漫畫一樣的講 HTTP,很有意思,不會(huì)覺得枯燥,大概也涵蓋也 HTTP 常見的知識(shí)點(diǎn)。因?yàn)槠鶈栴},內(nèi)容可能不太全面。不過,如果不是專門做網(wǎng)絡(luò)方向研究的小伙伴想研究 HTTP 相關(guān)知識(shí)的話,讀這本書的話應(yīng)該來說就差不多了。
  • 《網(wǎng)絡(luò)是怎樣連接的》[7] :從在瀏覽器中輸入網(wǎng)址開始,一路追蹤了到顯示出網(wǎng)頁內(nèi)容為止的整個(gè)過程,以圖配文,講解了網(wǎng)絡(luò)的全貌,并重點(diǎn)介紹了實(shí)際的網(wǎng)絡(luò)設(shè)備和軟件是如何工作的。

如果說學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)要圍繞的 TCP/IP 五層模型逐層展開學(xué)習(xí)的話,那么針對(duì)每層的學(xué)習(xí),就要以協(xié)議為單位了。一言以蔽之,我們學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)需要的協(xié)議有:

  • 應(yīng)用層協(xié)議
    • HTTP 協(xié)議(超文本傳輸協(xié)議,網(wǎng)頁瀏覽常用的協(xié)議)
    • DHCP 協(xié)議(動(dòng)態(tài)主機(jī)配置)
    • DNS 系統(tǒng)原理(域名系統(tǒng))
    • FTP 協(xié)議(文件傳輸協(xié)議)
    • 電子郵件協(xié)議等(SMTP、POP3、IMAP)
    • P2P 架構(gòu)
  • 傳輸層協(xié)議
    • 報(bào)文段結(jié)構(gòu)
    • RDT(可靠數(shù)據(jù)傳輸協(xié)議)
    • 報(bào)文段結(jié)構(gòu)
    • 可靠數(shù)據(jù)傳輸
    • 流量控制
    • 擁塞控制
    • TCP 協(xié)議
    • UDP 協(xié)議
  • 網(wǎng)絡(luò)層協(xié)議
    • IP 協(xié)議(TCP/IP 協(xié)議的基礎(chǔ),分為 IPv4 和 IPv6)
    • ARP 協(xié)議(地址解析協(xié)議,用于解析 IP 地址和 MAC 地址之間的映射)
    • ICMP 協(xié)議(控制報(bào)文協(xié)議,用于發(fā)送控制消息)
    • NAT 協(xié)議(網(wǎng)絡(luò)地址轉(zhuǎn)換協(xié)議)
    • RIP 協(xié)議、OSPF 協(xié)議、BGP 協(xié)議(路由選擇協(xié)議)
  • 鏈路層
    • 差錯(cuò)檢測(cè)技術(shù)
    • 多路訪問協(xié)議(信道復(fù)用技術(shù))
    • CSMA/CD 協(xié)議
    • MAC 協(xié)議
    • 以太網(wǎng)技術(shù)
  • 物理層(對(duì)計(jì)算機(jī)專業(yè)的小伙伴來說,在課程要求中,物理層的內(nèi)容可能相對(duì)不那么重要)

操作系統(tǒng)

操作系統(tǒng)也是一門比較重要的學(xué)科。為何這樣說呢?

操作系統(tǒng)中的很多思想、很多經(jīng)典的算法,你都可以在我們?nèi)粘i_發(fā)使用的各種工具或者框架中找到它們的影子。

比如說我們開發(fā)的系統(tǒng)使用的緩存(比如 Redis)和操作系統(tǒng)的高速緩存就很像。CPU 中的高速緩存有很多種,不過大部分都是為了解決 CPU 處理速度和內(nèi)存處理速度不對(duì)等的問題。我們還可以把內(nèi)存可以看作外存的高速緩存,程序運(yùn)行的時(shí)候我們把外存的數(shù)據(jù)復(fù)制到內(nèi)存,由于內(nèi)存的處理速度遠(yuǎn)遠(yuǎn)高于外存,這樣提高了處理速度。同樣地,我們使用的 Redis 緩存就是為了解決程序處理速度和訪問常規(guī)關(guān)系型數(shù)據(jù)庫速度不對(duì)等的問題。

高速緩存一般會(huì)按照局部性原理(2-8 原則)根據(jù)相應(yīng)的淘汰算法保證緩存中的數(shù)據(jù)是經(jīng)常會(huì)被訪問的。我們平常使用的 Redis 緩存很多時(shí)候也會(huì)按照 2-8 原則去做,很多淘汰算法都和操作系統(tǒng)中的類似。

既說了 2-8 原則,那就不得不提命中率了,這是所有緩存概念都通用的。簡(jiǎn)單來說也就是你要訪問的數(shù)據(jù)有多少能直接在緩存中直接找到。命中率高的話,一般表明你的緩存設(shè)計(jì)比較合理,系統(tǒng)處理速度也相對(duì)較快。

總結(jié)來說,我覺得學(xué)好操作系統(tǒng)能夠提高自己思考的深度以及對(duì)技術(shù)的理解力。

操作系統(tǒng)內(nèi)容比較多,如果說你單純是為了應(yīng)付面試的話,你可以看我之前總結(jié)的一篇文章:https://snailclimb.gitee.io/javaguide/#/docs/operating-system/basis[8] 。

這篇文章的目錄如下,涵蓋了操作系統(tǒng)一些比較常見的問題。

如果你要系統(tǒng)地學(xué)習(xí)操作系統(tǒng)的話,最硬核最權(quán)威的書籍是**《操作系統(tǒng)導(dǎo)論》** 。你可以再配套一個(gè) 《深入理解計(jì)算機(jī)系統(tǒng)》 加深你對(duì)計(jì)算機(jī)系統(tǒng)本質(zhì)的認(rèn)識(shí),美滋滋!

如果你比較喜歡動(dòng)手,對(duì)于理論知識(shí)比較抵觸的話,我推薦你看看《30 天自制操作系統(tǒng)》,這本書會(huì)手把手教你編寫一個(gè)操作系統(tǒng)。

計(jì)算機(jī)專業(yè)課

本章設(shè)計(jì)的課程并不是說專業(yè)課,只是說相比于上面的四大件,專業(yè)性更強(qiáng),主要包括面向?qū)ο蟪绦蛟O(shè)計(jì)、形式語言與自動(dòng)機(jī)、機(jī)器學(xué)習(xí)、數(shù)據(jù)庫系統(tǒng)、編譯原理。

面向?qū)ο蟪绦蛟O(shè)計(jì)

面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)是程序員編程的核心思想,如果以后走軟件開發(fā)路線,OOP 是必須要精通的。OOP 給程序員提供了一種思維模式,將現(xiàn)實(shí)生活中的事務(wù)抽象成為“對(duì)象”,面向?qū)ο筮M(jìn)行程序設(shè)計(jì)。

舉個(gè)例子,OOP 中有三大要素——類、繼承、多態(tài)(也有封裝、繼抽象、繼承、多態(tài)四大要素)。如果把杯子抽象成為類的話,那么咖啡杯、茶杯、馬克杯等等都屬于對(duì)杯子的繼承,在該繼承中,被繼承者——杯子,被稱為父類,繼承者——咖啡杯、茶杯、馬克杯,被稱為子類。子類繼承父類,即父類有的子類一定有(除父類私有),而子類有的父類不一定有。而多態(tài)的概念是在繼承之中的,在繼承中,子類擁有父類的方法,都是杯子,那么就都能裝水。而不同的杯子可以定制自己的方法,即重載父類“裝水”的方法——裝咖啡、裝茶水等。

OOP 中還有六大原則:

  1. 單一責(zé)任原則(Single Responsibility Principle) :一個(gè)類盡量只負(fù)責(zé)一種事務(wù)的抽象,功能盡量單一,降低耦合。
  2. 開放-封閉原則(Open-Closed Principle) :在類的設(shè)計(jì)中,要盡量保證“對(duì)擴(kuò)展性的開放,對(duì)修改的封閉”。
  3. Liskov 替換原則(Liskov Substitution Principle) :Liskov 規(guī)則嚴(yán)格規(guī)定,“子類型必須能夠替換其基類型,派生類必須能夠通過其基類的接口使用,客戶端無需了解二者之間的差異。”
  4. 接口聚合原則(Interface Segregation Principle) :該原則要求,不能強(qiáng)迫客戶端依賴于它們不需要的接口,只提供必需的接口?!按蟆苯涌诒M量分割為若干個(gè)”小“接口,不同的接口向不同的客戶端提供服務(wù),客戶端只訪問自己需要的接口。
  5. 依賴轉(zhuǎn)置原則(Dependency Inversion Principle) :抽象的模塊不應(yīng)該依賴于具體的模塊,具體應(yīng)依賴于抽象。
  6. 最少知識(shí)原則(Least Knowledge Principle) :一個(gè)類對(duì)其他類的內(nèi)部實(shí)現(xiàn),知道的越少越好,如果一定要和不太相干的類通信,盡量使用第三者作為轉(zhuǎn)達(dá)。

可能有很多小伙伴在學(xué)完了 OOP,編了兩三年程序也沒完全弄清楚這六大原則。其實(shí)他們無處不在,這里我盡量舉例子來形象地說明這六大原則。

假設(shè)杯子分為咖啡杯和牛奶杯:

  • 單一責(zé)任原則要求,不應(yīng)該有一種杯子既能裝咖啡又能裝面包,如果可以的話,那么當(dāng)客戶需要一個(gè)裝面包的容器時(shí),被提供了一只杯子,這樣當(dāng)裝面包的容器發(fā)生變化時(shí),就波及到了杯子功能的實(shí)現(xiàn),耦合度較高不利于維護(hù)。
  • 開放封閉原則要求,杯子現(xiàn)在可能很簡(jiǎn)單,但最好支持將來的拓展,如加入量度、加入杯蓋等。但請(qǐng)不要再做修改,咖啡杯就是咖啡杯,如果需要改造出一個(gè)茶杯,請(qǐng)新繼承一個(gè)茶杯,而不要在已有的咖啡杯上修改。
  • Liskov 替換原則要求,顧客在買杯子的時(shí)候,只需要說”我要買杯子,裝咖啡用“,就可以提供咖啡杯給該顧客,滿足顧客的所有需求。
  • 接口聚合原則要求,不應(yīng)該有一種杯子既能裝咖啡又能裝牛奶,如果顧客需要裝咖啡的杯子,請(qǐng)不要提供給他”咖啡牛奶杯“,裝牛奶的功能是他不需要的。
  • 依賴轉(zhuǎn)置原則要求,咖啡杯的設(shè)計(jì)一定要依賴”杯子具有盛裝液體“的功能,而非杯子能裝液體依賴于咖啡杯的設(shè)計(jì)。這一原則和”面向過程程序設(shè)計(jì)“思想恰恰相反。
  • 最少知識(shí)原則,嗯...用杯子舉例就不太恰當(dāng)了,就拿企業(yè)里各個(gè)部門之間運(yùn)作舉例吧,兩個(gè)不相關(guān)部門之間不要直接通信,如果要通信的話,用第三個(gè)部門統(tǒng)籌安排,降低耦合度,提高效率。

關(guān)于 OOP 大的概況,我只能用三大特性和六大原則來概括,真要學(xué)習(xí)起來,OOP 中的每一個(gè)細(xì)節(jié)都值得深入討論。OOP 早在上世紀(jì)八十年代就開始流行,作為提高程序設(shè)計(jì)生產(chǎn)力的重要思想,一直沿用到現(xiàn)在。C++和 Java 是現(xiàn)在比較主流的 OOP 編程語言,也是高校中 OOP 課程的主力教學(xué)語言。如果接觸的第一門語言的是 C 語言的話,也不用太過抵觸,雖然 C 語言是面向過程程序設(shè)計(jì),接觸過這種稍稍比較原始的編程思想,再學(xué)習(xí) OOP 的話,會(huì)有更不一樣的感覺。

形式語言與自動(dòng)機(jī)

“計(jì)算機(jī)專業(yè)大學(xué)四年到底應(yīng)該學(xué)什么?”,我想很多人在這個(gè)問題下的回答不會(huì)包括這門課——形式語言與自動(dòng)機(jī)。

這門課包括兩個(gè)部分:

  1. 形式語言。
  2. 自動(dòng)機(jī)。

形式語言更像是計(jì)算機(jī)專業(yè)的數(shù)學(xué)課,它研究的是嚴(yán)格的語法規(guī)則下,語義的表示?;谛问秸Z言課程的后續(xù)課程其實(shí)也不算多,編譯原理、自然語言處理等專業(yè)課程可能會(huì)用到形式語言的知識(shí),但形式語言帶給學(xué)生的更偏向于一種思想,在給定條件下對(duì)問題的定義能力和抽象能力。

自動(dòng)機(jī)是算法的一種。自動(dòng)機(jī)可以理解為一臺(tái)在給定狀態(tài)下、給定輸入得到確定的輸出(集)的機(jī)器,核心是狀態(tài) × 輸入 →{狀態(tài)}的映射。他也是代表著一類思想。自動(dòng)機(jī)思想在算法中的應(yīng)用常常被看作是傳統(tǒng)算法,由于他的思路非常簡(jiǎn)單,運(yùn)行效率高,在一些特定的場(chǎng)景下有著高效地運(yùn)用。但自動(dòng)機(jī)的缺點(diǎn)在于其定義非常復(fù)雜,正因?yàn)榇?,適用面也比較窄。

總的來說,形式語言跟正則表達(dá)式還有點(diǎn)關(guān)系,自動(dòng)機(jī)的學(xué)習(xí)過程更像是解一道道的智力題,這門課應(yīng)該還算比較有趣的一門課。

如果你要學(xué)習(xí)這門課的話,可以去中國大學(xué) Mooc 看看哈工大的形式語言與自動(dòng)機(jī)理論這門課。

機(jī)器學(xué)習(xí)

機(jī)器學(xué)習(xí)這門課不一定每個(gè)高校都開設(shè),有的高??赡荛_設(shè)的是領(lǐng)域性更強(qiáng)的深度學(xué)習(xí),有的高校可能把機(jī)器學(xué)習(xí)當(dāng)作選修課開設(shè),但在現(xiàn)在的人工智能技術(shù)橫行的 IT 行業(yè)中,要掌握 AI 技術(shù),機(jī)器學(xué)習(xí)屬于一門很好的入門專業(yè)課(并不是通識(shí)課)。

機(jī)器學(xué)習(xí)中涉及了大量的概率論的知識(shí),需要扎實(shí)的概率論基礎(chǔ),還夾雜著一些不簡(jiǎn)單的線性代數(shù)知識(shí)。 機(jī)器學(xué)習(xí)的工作是在研究一種算法,在某些任務(wù)中,利用一些經(jīng)驗(yàn),研究該算法的性能。任務(wù)的種類大體可以分為分類問題和回歸問題。 分類問題,就是在給定已知條件的情況下,決定該情況屬于哪一類,比如經(jīng)典的航班預(yù)測(cè)問題,給定某一班航班的信息,預(yù)測(cè)該航班是否可能會(huì)晚點(diǎn)。而回歸問題是在給定已知條件的情況下,計(jì)算該情況的回歸值,在航班預(yù)測(cè)問題中,可能并不是預(yù)測(cè)是否晚點(diǎn)(二分類問題),而是預(yù)測(cè)該航班的到達(dá)時(shí)間(相比于基準(zhǔn)時(shí)間的晚點(diǎn)時(shí)間或早到時(shí)間),這就是回歸問題。

機(jī)器學(xué)習(xí)中比較簡(jiǎn)單的算法有決策樹、多項(xiàng)式擬合、邏輯回歸等,相對(duì)較難的算法有支持向量機(jī)(SVM)算法、EM 算法等,就不一一列舉了。機(jī)器學(xué)習(xí)在一些算法上可以看作是數(shù)值分析課程和概率論的延伸,因此在學(xué)習(xí)機(jī)器學(xué)習(xí)之前,一定要打好扎實(shí)的數(shù)值分析基礎(chǔ),學(xué)好概率論,順便別把大一學(xué)的線性代數(shù)都忘光了。

在學(xué)習(xí)的過程中,除了跟著老師在課堂上的逐步講解和推導(dǎo),課下還可以結(jié)合著 B 站上的 “白板機(jī)器學(xué)習(xí)” 來看,推導(dǎo)非常詳細(xì),小哥哥也非常耐心。

參考書的話,這里有兩本推薦的書,一本是“西瓜書”——周志華的《機(jī)器學(xué)習(xí)》。 西瓜書中的案例場(chǎng)景圍繞著“種西瓜”展開,比較能帶動(dòng)讀者興趣,但是該書涉及符號(hào)較多,讀者最好有一定的代數(shù)能力素養(yǎng),可以盡快適應(yīng)該書的符號(hào)表達(dá)和公式推導(dǎo)。該書比較適合慢慢研讀,內(nèi)容在機(jī)器學(xué)習(xí)領(lǐng)域不算深,一點(diǎn)點(diǎn)啃會(huì)有不小的收獲。另一本書是李航的《統(tǒng)計(jì)學(xué)習(xí)方法》, 該書不僅適合計(jì)算機(jī)專業(yè)的學(xué)生,也適合數(shù)理統(tǒng)計(jì)專業(yè)的學(xué)生,書中每章都圍繞著一個(gè)個(gè)經(jīng)典算法展開,推導(dǎo)過程詳細(xì),篇幅也不長(zhǎng),但內(nèi)容相對(duì)西瓜書來說比較枯燥,適合作為工具書來讀,需要學(xué)習(xí)某個(gè)算法的時(shí)候,去該書上找那一章節(jié),快速讀完,不懂的話可以多讀幾遍。

數(shù)據(jù)庫系統(tǒng)

數(shù)據(jù)庫系統(tǒng)這門課在程序員的職業(yè)規(guī)劃中也是非常重要的一門課,甚至有些信息管理的專業(yè)的也要開設(shè)這門課。說這門課重要,是因?yàn)閷?duì)于程序員的發(fā)展來說,一方面關(guān)系數(shù)據(jù)庫系統(tǒng)、SQL 語言以及數(shù)據(jù)庫的三段設(shè)計(jì)(概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì))都是開發(fā)數(shù)據(jù)庫應(yīng)用程序的必備技能,通常在數(shù)據(jù)庫應(yīng)用開發(fā)崗位的面試中,數(shù)據(jù)庫的設(shè)計(jì)是面試官青睞的考點(diǎn),如何能根據(jù)需求分析并設(shè)計(jì)出完善的數(shù)據(jù)庫系統(tǒng),是程序員的必備技能,設(shè)計(jì)好了完善的數(shù)據(jù)庫系統(tǒng)之后,再用 SQL 語言等工具對(duì)其進(jìn)行實(shí)現(xiàn),那么這些其實(shí)就是個(gè)人的編碼能力了。另一方面,數(shù)據(jù)庫中的查詢處理、查詢優(yōu)化、并發(fā)控制、事務(wù)管理、日志管理等內(nèi)容,都是數(shù)據(jù)庫中稍微進(jìn)階一點(diǎn)的技能,對(duì)于一些對(duì)崗位要求比較高的,這些技術(shù)同樣要求熟練掌握。 對(duì)一些查詢優(yōu)化的等數(shù)據(jù)庫底層實(shí)現(xiàn)的內(nèi)容,也是新型數(shù)據(jù)庫開發(fā)的前置基礎(chǔ)技能,對(duì)于一些研究型人才來說,也是非常重要的。

數(shù)據(jù)庫系統(tǒng)與其他計(jì)算機(jī)專業(yè)課一樣,知識(shí)體系非常清晰,而且他有一個(gè)非常突出的特點(diǎn),就是實(shí)際與理論相結(jié)合。SQL 語言,數(shù)據(jù)庫設(shè)計(jì)等,這些都屬于實(shí)踐應(yīng)用部分,而對(duì)于一些范式定義,兩段鎖協(xié)議并發(fā)控制等,這些就偏向于理論多一些。要想學(xué)好數(shù)據(jù)庫系統(tǒng),建議大家:

  1. 在課程的前期階段,熟練掌握 SQL 語言的應(yīng)用,同時(shí)不要忘了訓(xùn)練關(guān)系代數(shù)的應(yīng)用能力。 關(guān)系代數(shù)雖然在數(shù)據(jù)庫的實(shí)現(xiàn)上作用較小,但在學(xué)習(xí)階段,結(jié)合關(guān)系代數(shù)和 SQL 語言學(xué)習(xí),可以更加有體系地理清 SQL 語言各個(gè)子句之間的邏輯關(guān)系,有助于 SQL 語言的學(xué)習(xí)和記憶。關(guān)系代數(shù)的學(xué)習(xí)更像是建立一種思維,這種思維到了數(shù)據(jù)庫底層實(shí)現(xiàn)學(xué)習(xí)環(huán)節(jié)也是非常有用的。
  2. 在課程的中期階段,熟練掌握 ER 圖的應(yīng)用,并強(qiáng)化數(shù)據(jù)庫設(shè)計(jì)中的理論部分。 ER 圖的熟練應(yīng)用可以更加輕松地設(shè)計(jì)出關(guān)系數(shù)據(jù)庫模式,而理論部分同樣不能忽視,設(shè)計(jì)理論的運(yùn)用決定了數(shù)據(jù)庫的正確性和健壯性。
  3. 而在課程的后期階段,主要就是以理論居多,而且這些理論并不容易能找到配套的實(shí)驗(yàn)練習(xí)。這里再次強(qiáng)調(diào),凡是理論知識(shí)的學(xué)習(xí),盡量要結(jié)合圖解的方式。

教材的話,強(qiáng)烈推薦《數(shù)據(jù)庫系統(tǒng)概念》(機(jī)械工業(yè)出版社),這本書涵蓋了數(shù)據(jù)庫系統(tǒng)的全套概念,知識(shí)體系清晰,是學(xué)習(xí)數(shù)據(jù)庫系統(tǒng)非常經(jīng)典的教材!不是參考書!

參考書的話,可以看一看《深入淺出 MySQL:數(shù)據(jù)庫開發(fā)、優(yōu)化與管理維護(hù)》,該書非常適合 MySQL 開發(fā)的從業(yè)者,完全可以作為 MySQL 學(xué)習(xí)的參考書,相比《數(shù)據(jù)庫系統(tǒng)概念》來說,該書更加傾向于基于 MySQL 技術(shù)的全套開發(fā),一共分為基礎(chǔ)篇、開發(fā)篇、優(yōu)化篇、管理維護(hù)篇和架構(gòu)篇。

編譯原理

編譯原理相比于前面介紹的專業(yè)課,地位顯得不那么重要了。編譯原理的重要性主要體現(xiàn)在:

  • 底層語言、引擎或高級(jí)語言的開發(fā),如 MySQL,Java 等
  • 操作系統(tǒng)或嵌入式系統(tǒng)的開發(fā)
  • 詞法、語法、語義的思想,以及自動(dòng)機(jī)思想

編譯原理的重要前置課程就是形式語言與自動(dòng)機(jī),自動(dòng)機(jī)的思想在詞法分析當(dāng)中有著重要應(yīng)用,學(xué)習(xí)了這門課后,應(yīng)該就會(huì)發(fā)現(xiàn)許多場(chǎng)景下,自動(dòng)機(jī)算法的妙用了。

總的來說,這門課對(duì)于各位程序員的職業(yè)發(fā)展來說,相對(duì)不那么重要,但是從難度上來說,學(xué)習(xí)這門課可以對(duì)編程思想有一個(gè)較好的鞏固。學(xué)習(xí)資源的話,除了課堂上的幻燈片課件以外,還可以把《編譯原理》(機(jī)械工業(yè)出版社)這本書作為參考書,用以輔助自己學(xué)不懂的地方(大家口中的龍書,想要啃下來還是有一定難度的)。

通用課

通用課的部分我想分為兩大部分來介紹,主要就是數(shù)學(xué)和英語,一般在大一和大二兩學(xué)年就可以全部修完,大二大三逐漸接觸專業(yè)課。通用課作為許多高中生升入大學(xué)的第一門課,算是高中階段到本科階段的一個(gè)過渡,從職業(yè)生涯重要性上來說,遠(yuǎn)不及專業(yè)課重要,但是在本科階段的學(xué)習(xí)生活規(guī)劃中,有著非常重要的地位。由于通用課的課程多,學(xué)分重,占據(jù)了本科階段績(jī)點(diǎn)的主要部分,影響到學(xué)生在前兩年的專業(yè)排名,也影響到大三結(jié)束時(shí)的推免資格分配,也就是保研。而從升學(xué)角度來看,對(duì)于攻讀研究生和博士生的小伙伴來說,數(shù)學(xué)和英語這兩大基礎(chǔ)課,還是十分有用的。

數(shù)學(xué)

微積分(高等數(shù)學(xué))

微積分,即傳說中的高數(shù),成為了無數(shù)新大一心中的痛。但好在,大學(xué)的課程考核沒那么嚴(yán)格,期末想要拿高分,也不至于像高中那樣刷題刷的那么狠。微積分對(duì)于計(jì)算機(jī)專業(yè)學(xué)生的重要性,主要體現(xiàn)在計(jì)算機(jī)圖形學(xué)中的函數(shù)變換,機(jī)器學(xué)習(xí)中的梯度算法,信號(hào)處理等領(lǐng)域。

微積分的知識(shí)體系包括微分和積分兩部分,一般會(huì)先學(xué)微分,再學(xué)積分,也有的學(xué)校把高數(shù)分為兩個(gè)學(xué)期。微分就是高中的導(dǎo)數(shù)的升級(jí)版,對(duì)于大一萌新來說還算比較友好。積分恰好是微分的逆運(yùn)算,思想上對(duì)大一萌新來說比較新,一時(shí)半會(huì)可能接受不了。不過這門課所有的高校都有開設(shè),而且大部分的名校都有配套的網(wǎng)課,教材也都打磨的非常出色,結(jié)合網(wǎng)課和教材的“啃書”學(xué)習(xí)模式,這門課一定不會(huì)落下。

線性代數(shù)(高等代數(shù))

線性代數(shù)的思維模式就更加復(fù)雜了一些,它定義了一個(gè)全新的數(shù)學(xué)世界,所有的符號(hào)、定理都是全新的,唯一能嘗試的去理解的方式,大概就是用幾何的方式去理解線性代數(shù)了。由于線性代數(shù)和幾何學(xué)有著密不可分的關(guān)系,比如空間變換的理論支撐就是線性代數(shù),因此,網(wǎng)上有著各種“可視化學(xué)習(xí)線性代數(shù)”的學(xué)習(xí)資源,幫助理解線性代數(shù)的意義,有助于公式的記憶。

嗶哩嗶哩——【官方雙語/合集】線性代數(shù)的本質(zhì) - 系列合集

概率論與數(shù)理統(tǒng)計(jì)

對(duì)于計(jì)算機(jī)專業(yè)的小伙伴來說,這門課可能是概率論更有用一點(diǎn),而非數(shù)理統(tǒng)計(jì)??赡苣承W(xué)校只開設(shè)概率論課程,也可能數(shù)理統(tǒng)計(jì)也教,但僅僅是皮毛。概率論的學(xué)習(xí)路線和微積分相似,就是一個(gè)個(gè)公式輔以實(shí)例,不像線性代數(shù)那么抽象,比較貼近生活。在現(xiàn)在的就業(yè)形勢(shì)下,概率論與數(shù)理統(tǒng)計(jì)專業(yè)的學(xué)生,應(yīng)該是數(shù)學(xué)專業(yè)最好就業(yè)的了,他們通常到崗位上會(huì)做一些數(shù)據(jù)分析的工作,因此,這門課程確實(shí)是數(shù)據(jù)分析的重要前置課程,概率論在機(jī)器學(xué)習(xí)中的重要性也就不言而喻了。

離散數(shù)學(xué)(集合論、圖論、近世代數(shù)等)

離散數(shù)學(xué)是計(jì)算機(jī)專業(yè)的專屬數(shù)學(xué),但實(shí)際上對(duì)于本科畢業(yè)找工作的小伙伴來說,離散數(shù)學(xué)還并沒有發(fā)揮它的巨大作用。離散數(shù)學(xué)的作用主要在在圖研究等領(lǐng)域,理論性極強(qiáng),需要讀研深造的小伙伴盡可能地扎實(shí)掌握。

英語

英語算是大學(xué)里面比較靈活的一項(xiàng)技能了,有的人會(huì)說,“英語學(xué)的越好,對(duì)個(gè)人發(fā)展越有利”,此話說的沒錯(cuò),但是對(duì)于一些有著明確發(fā)展目標(biāo)的小伙伴,可能英語技能并不在他們的技能清單內(nèi)。接下來的這些話只針對(duì)計(jì)算機(jī)專業(yè)的小伙伴們哦。

英語課在大學(xué)本科一般只有前兩年開設(shè),小伙伴們可以記住,想用英語課來提升自己的英語水平的,可以打消這個(gè)念頭了。 英語水平的提高全靠自己平時(shí)的積累和練習(xí),以及有針對(duì)性的刷題。

英語的大學(xué)四六級(jí)一定要過。 這是必備技能,絕大部分就業(yè)崗位都要看四六級(jí)水平的,最起碼要通過的。四級(jí)比高中英語稍微難一些,一般的小伙伴可能會(huì)卡在六級(jí)上,六級(jí)需要針對(duì)性的訓(xùn)練一下,因?yàn)榇髮W(xué)期間能接觸英語的實(shí)在太少了,每學(xué)期一門英語課是不足以保持自己的英語水平的。對(duì)于一些來自于偏遠(yuǎn)地區(qū),高中英語基礎(chǔ)薄弱的,考四六級(jí)會(huì)更加吃力。建議考前集中訓(xùn)練一下歷年真題,輔以背一下高頻詞匯,四六級(jí)通過只需要 425 分,這個(gè)分?jǐn)?shù)線還是比較容易達(dá)到的。稍微好一點(diǎn)的小伙伴可能沖一下 500 分,要是能考到 600 分的話,那是非常不錯(cuò)的水平了,算是簡(jiǎn)歷上比較有亮點(diǎn)的一項(xiàng)。

英語的雅思托??荚囍幌抻谙胍鰢男』锇椋约皯?yīng)聘崗位對(duì)英語能力有特殊要求的。雅思托福考試裸考不容易通過,花錢去比較靠譜的校外補(bǔ)課班應(yīng)該是一個(gè)比較好的選擇。

對(duì)于計(jì)算機(jī)專業(yè)的小伙伴來說,英語能力還是比較重要的,雖然應(yīng)聘的時(shí)候不會(huì)因?yàn)闆]有雅思托福成績(jī)卡人,但是你起碼要能夠:

  • 熟練使用英文界面的軟件、系統(tǒng)等
  • 對(duì)于外網(wǎng)的一些博客、bug 解決方案等,閱讀無壓力
  • 熟練閱讀英文文獻(xiàn)
  • 具備一定的英文論文的撰寫能力

畢竟計(jì)算機(jī)語言就是字符語言,聽說讀寫中最起碼要滿足讀寫這兩項(xiàng)不過分吧。

Q&A

1.感覺學(xué)校教的都聯(lián)系不到實(shí)際,我本科畢業(yè)真的能找到工作嗎?

就筆者所就讀的高校來說,我是相信它的培養(yǎng)方案是有能力培養(yǎng)出具有就業(yè)能力的本科畢業(yè)生的。我相信很多名校的培養(yǎng)方案也都不會(huì)差。如果你就讀的學(xué)校不是那么出色,并且質(zhì)疑自己學(xué)校的培養(yǎng)能力的話,建議你多到名校的網(wǎng)課上取取經(jīng)。如果你是就讀于國內(nèi)名校的話,請(qǐng)相信的自己專業(yè)的培養(yǎng)方案,下限不會(huì)低。

另外,如果你的學(xué)校比較差的話,大學(xué)期間一定要盡全力讓自己的簡(jiǎn)歷更好看,你可以出去實(shí)習(xí)、加一些含金量比較高的比賽、跟著老師做一些項(xiàng)目。

2.學(xué)校里需要參加一些社團(tuán)、學(xué)生會(huì)之類的嗎?

筆者只參加過社團(tuán),并未參加過學(xué)生會(huì)。對(duì)于這個(gè)問題,我結(jié)合我所接觸的人來簡(jiǎn)單回答一下。針對(duì)不同的發(fā)展定位,可以選擇自己投入社團(tuán)、學(xué)生會(huì)的精力。比如,你是一個(gè)技術(shù)宅,那么我想你就算加入了社團(tuán)之類的團(tuán)體,也收獲不到自己想要的能力,其實(shí)就沒有參加的必要了。如果你是一個(gè)學(xué)生干部,或者擅長(zhǎng)和人打交道,也許畢業(yè)之后從事產(chǎn)品經(jīng)理之類的工作,那么在學(xué)生會(huì)的經(jīng)歷應(yīng)該是蠻鍛煉你的能力的。是否要選擇參加團(tuán)體活動(dòng),投入多少精力,完全取決你對(duì)自己的定位如何,請(qǐng)把你自己放到合適的環(huán)境下培養(yǎng),不必人云亦云。

3.在大學(xué)里一定要參加競(jìng)賽比賽嗎?

競(jìng)賽比賽對(duì)于學(xué)生的好處有,得獎(jiǎng)了的話可能會(huì)獲得保研加分、豐富個(gè)人簡(jiǎn)歷,在應(yīng)聘中拿到不錯(cuò)的印象分。保研加分具體涉及到的競(jìng)賽需要咨詢所在學(xué)院,并非所有競(jìng)賽獲獎(jiǎng)都能加分的。

那么競(jìng)賽比賽有沒有壞處呢?也會(huì)有一點(diǎn)吧,就是指那些能力并不算強(qiáng),但仍然把大量時(shí)間花在了打比賽這上面,這其實(shí)并不是壞處,這對(duì)個(gè)人能力仍有提高,壞處指的是因?yàn)榇蚋?jìng)賽耽誤了專業(yè)課的學(xué)習(xí)。這樣一來,基礎(chǔ)也沒扎實(shí),突出能力也沒訓(xùn)練出來,撿了芝麻丟了西瓜,就不好了。

總的來說,打競(jìng)賽利大于弊,不要低估的自己的能力而排斥參加競(jìng)賽,也不要高估自己的能力過分癡迷競(jìng)賽。

以上是我針對(duì)本科計(jì)算機(jī)專業(yè)各個(gè)課程的傾力解讀,如有不妥,請(qǐng)多加指正!

參考資料

[1]

https://github.com/Snailclimb: https://github.com/Snailclimb

[2]

https://github.com/Snailclimb/programmer-advancement : https://github.com/Snailclimb/programmer-advancement

[3]

leetcode: https://leetcode-cn.com/

[4]

《硬核的算法學(xué)習(xí)書籍+資源推薦》: docs/dataStructures-algorithms/算法學(xué)習(xí)資源推薦.md

[5]

如何刷 Leetcode?: https://www.zhihu.com/question/31092580/answer/1534887374

[6]

《圖解 HTTP》: https://book.douban.com/subject/25863515/

[7]

《網(wǎng)絡(luò)是怎樣連接的》: https://book.douban.com/subject/26941639/

[8]

https://snailclimb.gitee.io/javaguide/#/docs/operating-system/basis: https://snailclimb.gitee.io/javaguide/#/docs/operating-system/basis

后記

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
作為計(jì)算機(jī)專業(yè)的,最該學(xué)的三門課程
計(jì)算機(jī)推薦書籍和教程
總結(jié)一下我對(duì)上大計(jì)算機(jī)四年課程的理解和體會(huì)
學(xué)妹:大學(xué)四年以算法為重還是技術(shù)為重?
計(jì)算機(jī)專業(yè)的學(xué)生必須掌握的五門課程,推薦閱讀資源,好資源齊分享,魚C論壇
別再問我推薦什么書籍和網(wǎng)課,這次把私藏很久的資料都貢獻(xiàn)了(上),建議收藏!
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服