目前的互聯網行業已經完全不是它剛開始盛行的樣子了。在互聯網爆火🔥的初期,你可能會簡單用一下語言就能找到一個不錯的工作。那時候,即使是沒有學歷支撐直接從培訓班出來的基本也都找到了還算是不錯的工作。但是,現在已經完全不一樣了。
- 面試的難度可以說一年比一年難,學的人越來越多,和你競爭的也越來越多,特別是像面試阿里、騰訊、字節跳動這樣的大廠,你可能要和更多人去競爭。“面試造火箭,入職拎螺絲”想想也是正常,畢竟這麼多人去競爭那少數的 offer,如果不難點的話,區分度就沒那麼明顯了
- 學習計算機專業的越來越多,和你競爭的也越來越多,需求就那麼一些,人多了之後,平均工資水平以後應該不會和其他行業差別這麼大。但是,我個人感覺技術厲害的還是會很吃香。只是,普通的程序員的工資可能比不上前幾年了
所以如果想學習,需要趁早,做在同齡人中拔尖的那一部分。
下面是一些我覺得還不錯的一些建議,希望對大家有幫助。
養成學習和計劃的習慣
無論在學校還是以後的工作中, 都要養成終身學習的習慣。
學習這東西不僅僅是爲了應對考試,更要應對以後工作中對你的要求和實現自己夢想需求,在校期間可以考考駕照、會計等證。
不管多遠,你遲早要自己開車的,學校附近的駕校比外面便宜的多,而且這是你時間最充裕的時候
學學會計相關的知識,對你以後理財、投資都有幫助
堅持學英語,尤其是口語
養成團隊協作習慣
在平常學習的工程中,大家可以能是單獨完成學習任務,但在工作中,需要團隊協作。所以應該在工作前學會一些團隊協作的軟件和方法。
在大一學完第一門編程語言的時候,我那時是C
語言, 我想你也一定順利的通過考試和考覈了,在這其中是否發生了粘貼複製別人的代碼,而且發生了找不到自己最初那個版本的困擾。這時候你需要一個版本控制軟件來幫你記錄版本變更和團隊協作。
建議你在大二上學期開始初步使用 git
來管理你的代碼以及和你小組內的成員進行團隊協作,git
是你開始工作必須會遇到的第一個軟件,無論你是要做後端還是前端。如果你用不好它,那你可能會刪除你未來同事的代碼,這樣你會很尷尬的。不如提前學好它,畢竟刪除同學的代碼,也就刪了
git 學習教程
- 入門文章 https://www.liaoxuefeng.com/wiki/896043488029600
- 官方文檔 https://git-scm.com/docs
- 視頻 https://www.imooc.com/learn/1052
如果你看完文檔或者瞭解git你會發現 GitHub
這個是我的主頁: https://github.com/zyndev
不過 GitHub 有時會無法訪問,在學習的時候建議你使用國內的 gitee, 這個是中文版的,速度很快,支持私有的倉庫
這個是我的gitee主頁: https://gitee.com/zyndev
建議同學在大二開始使用,比如在Java
課程或者在數據結構
的習題中,將作業交到 gitee
上, 一方面教給學生單獨使用 git
,另一方面也可以讓學生初步學習下如何協作
在初次使用的時候應該學會使用分支
、合併
、推送
、強制推送
等功能
等到小組結組開發時應該學會如何處理衝突和協作
根據我當時課程推薦一些輔導
有些課程的具體時間可能會記混
時間 | 課程 | 輔導 |
---|---|---|
大一上 | 線性代數 | 看看書,多做題就好了,這個對以後對算法題和統計分析有幫助 |
大一上 | 離散數學 | 多看書,如果可能找一些算法題看下,圖書館應該有,矩陣是必須要掌握的 |
大一下 | C 語言 | 大部分人接觸的第一門語言,一定要認真學,在老師講課的同時可以看一下 慕課網C語言,如果時間富裕的話,建議開始用 git 來管理你的代碼,少打兩把遊戲可能就學會了,記得高數不要掛科哦 |
大一下 | C 語言課設 | 建議用 git 來管理你的代碼,並嘗試將其發佈到 github 或者 gitee |
大二上 | 數據結構 | 好多算法都依賴於數據結構,這時候可以隨堂看一下 《算法基礎》和《數學之美》這兩本書,要認識到數據結構的重要性和應用場景 |
大二上 | 數據結構課設 | 如果這時候順利的話,應該可以運用 git 來管理你的代碼了 |
大二上 | 數據庫設計 | 一般會用 SQLServer 給大家講數據庫的設計和SQL語句的使用,這個將來是你工作中遇到做多的知識,學的越紮實越好,另外大部分企業使用的是MySQL ,這個安裝更簡單,大部分SQL是通用的,建議有時間看一下 與MySQL的零距離接觸 和 菜鳥教程,一定要具備創建數據庫和增刪改查的能力 |
大二上 | 操作系統 | 學習一下操作系統的相關技術了,重點學習下 Linux 命令,推薦 《Linux 命令與shell腳本編程大全》,學習linux一定要學會 Vim 的簡單實用 |
大二上 | 建議 | 這時候建議你看一下 HTML 、CSS 學會一些頁面的編寫,這個相對簡單一點,持續學一下,至少可以做一下簡單的頁面 |
大二下 | 計算機網絡 | 這個一定要知道一個URL 從瀏覽器地址欄回車到顯示頁面中間經歷了什麼 |
大二下 | 組成原理 | 這本書好難背呀,一定要熟記和理解了 |
大二下 | Java | 不要這時候看《Java 編程思想》這本應該是工作之後看的,你這時候可以看一下《Head First Java》或者 《Java 核心技術卷 1》,一定要找本薄點的看,不然容易睡着的,也可以看看視頻https://www.imooc.com/learn/85,這個有三季,這個時候一定要學會java+jdbc 完成簡單的小功能,比如圖書系統,宿舍系統之類的,如果可以用上maven也是很好的 |
暑假或其他時間 | Java | 在學習了java之後,就需要學習一些框架了,從簡單的SSM開始,以下會給出相關資源 |
大三上 | xml 和 html5 | 這個也是工作中遇到很多的,最好徹底掌握,畢竟這個很早就開始學了 |
大三上 | oracle | 學了 SQLServer 和 MySQL,這門課就沒那麼難了,主要考察你的動手和思考能力 |
大三上 | 建議 | 這時候就要用 SSM 做一個完整的系統,建議4個人一組,並且使用git作爲版本控制,團隊之間有分工 |
大三下 | java企業開發 | 這時候會再學習一遍 SSM ,如果你有理解錯的地方,這時候一定要和老師交流,如果沒有理解錯,就在鞏固一遍,順便學一下Spring Boot |
暑假 | 建議 | 準備一下畢業設計方向,學學新知識 |
大四上 | 畢設 | 準備畢設,看看能不能把所學的用上,如果不打算考研了,可以準備看看面試要求了 |
如何獲取資源
- 慕課網 https://www.imooc.com/
- 百度網盤找資源 http://www.rufengso.net/s/name/Java
- 百度直接搜
- 找老師和學長要,尤其是已經畢業的學長,他們很多
- csdn、思否、博客園、簡書等博客網站搜
- 淘寶買一下,一般10元1個T的那種
推薦一些書籍和教程
教程 | 類型 | 適用時間 |
---|---|---|
《碼農翻身》 | 書籍 | 到了大二可以買本看看,挺有意思的一本書 |
《寬客人生》 | 書籍 | 從物理學家到數量金融大師的傳奇 [My Life as a Quant: Reflections on Physics and Fin] |
《算法基礎》 | 書籍 | 學數據結構時開始看,要一直看,有個《算法導論》那本太厚,容易勸退,先看這本比較好 |
《Java 核心技術卷 1/2》 | 書籍 | 學 Java 時開始看 |
《Head First Java》 | 書籍 | 學 Java 時開始看,和上者選其一,這本更有趣 |
《Linux 命令與shell腳本編程大全》 | 書籍 | 學習Linux時開始看,大學階段一直看 |
《vim 實用技巧》 | 書籍 | 初次接觸 Vim 時看看,沒事多看看就好 |
《深入理解Java虛擬機》 | 書籍 | 大四上學期看看,主要是多背背,面試容易問 |
git 教程 | 文檔 | https://www.liaoxuefeng.com/wiki/896043488029600 |
git 教程 | 官網文檔 | https://git-scm.com/docs |
git 教程 | 視頻 | https://www.imooc.com/learn/1052 |
Java入門第一季 | 視頻 | https://www.imooc.com/learn/85 |
Java入門第二季 | 視頻 | https://www.imooc.com/learn/124 |
Java入門第三季 | 視頻 | https://www.imooc.com/learn/110 |
與MySQL的零距離接觸 | 視頻 | https://www.imooc.com/learn/122 |
我自己在寫的 | 文檔 | https://github.com/zyndev/barbarous_growth |
一些好的文檔項目推薦
注意: 不要好高騖遠,要找自己會的那部分一點一點看,一點一點的學
名稱 | 描述 |
---|---|
free-books | 免費書籍 |
awesome | awesome 合集 |
javaok | 必看!java後端,亮劍誅仙。java發展路線技術要點。 |
JavaGuide | 【Java學習+面試指南】 一份涵蓋大部分Java程序員所需要掌握的核心知識。 |
advanced-java | 互聯網 Java 工程師進階知識完全掃盲:涵蓋高併發、分佈式、高可用、微服務、海量數據處理等領域知識,後端同學必看,前端同學也可學習 |
CS-Notes | 📚 技術面試必備基礎知識、Leetcode、計算機操作系統、計算機網絡、系統設計、Java、Python、C++ |
interviews | Everything you need to know to get the job. |
toBeTopJavaer | To Be Top Javaer - Java工程師成神之路 |
fullstack-tutorial | 🚀 fullstack tutorial 2019,後臺技術棧/架構師之路/全棧開發社區,春招/秋招/校招/面試 |
android-interview-questions | Your Cheat Sheet For Android Interview - Android Interview Questions |
AndroidNote | 安卓學習筆記 |
spring-analysis | Spring源碼閱讀 |
SpringCloudLearning | 《史上最簡單的Spring Cloud教程源碼》 |
mit-deep-learning-book-pdf | MIT Deep Learning Book in PDF format (complete and parts) by Ian Goodfellow, Yoshua Bengio and Aaron Courville |
miaosha | ⭐⭐⭐⭐秒殺系統設計與實現.互聯網工程師進階與分析🙋🐓 |
spring-boot-demo | spring boot demo 是一個用來深度學習並實戰 spring boot 的項目,目前總共包含 63 個集成demo,已經完成 52 個。 該項目已成功集成 actuator(監控)、admin(可視化監控)、logback(日誌)、aopLog(通過AOP記錄web請求日誌)、統一異常處理(json級別和頁面級別)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、JdbcTemplate(通用JDBC操作數據庫)、JPA(強大的ORM框架)、mybatis(強大的ORM框架)、通用Mapper(快速操作Mybatis)、PageHelper(通用的Mybatis分頁插件)、mybatis-plus(快速操作Mybatis)、BeetlSQL(強大的ORM框架)、upload(本地文件上傳和七牛雲文件上傳)、redis(緩存)、ehcache(緩存)、email(發送各種類型郵件)、task(基礎定時任務)、quartz(動態管理定時任務)、xxl-job(分佈式定時任務)、swagger(API接口管理測試)、security(基於RBAC的動態權限認證)、SpringSession(Session共享)、Zookeeper(結合AOP實現分佈式鎖)、RabbitMQ(消息隊列)、Kafka(消息隊列)、websocket(服務端推送監控服務器運行信息)、socket.io(聊天室)、ureport2(中國式報表)、打包成war文件、集成 ElasticSearch(基本操作和高級查詢)、Async(異步任務)、集成Dubbo(採用官方的starter)、MongoDB(文檔數據庫)、neo4j(圖數據庫)、docker(容器化)、JPA多數據源、Mybatis多數據源、代碼生成器、GrayLog(日誌收集)、JustAuth(第三方登錄)、LDAP(增刪改查)、動態添加/切換數據源、單機限流(AOP + Guava RateLimiter)、分佈式限流(AOP + Redis + Lua)、ElasticSearch 7.x(使用官方 Rest High Level Client)。 |
正確提問
我們平時任何時候都離不開提問特別是初學的時候,但是真正知道如何正確的提問的人很少。問別人問題前不要來一句“在嗎”,你說你問了在嗎我是回覆好還是不回覆好呢 ?
更多關於如何提問的內容,詳見 github 上開源版『提問的智慧』 https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md,抽時間看一下,我想看完之後應該會有很多收穫。
健康生活
我一直覺得這一方面是最重要的,我想很多人和我一樣會無意識間忽略它,等到真的身體不舒服了,你纔開始意識到健康生活的重要性。
- 除非萬不得已,不要熬夜了。熬夜的危害就不用多說了,禿頭加內分泌失調,你懂得!
- 看電腦45分鐘之後,起來走5分鐘,看看遠方放鬆一下。不要覺得這5分鐘浪費時間,相反,這5分鐘可能爲你帶來更大的效率提升。
高效搜索
建議搜索順序 google > bing > 百度 > 其他
善於總結
學習完任何一門知識後,你可能當時看視頻感覺老師講的挺容易懂的。但是,過幾天後你發現你忘的一乾二淨,別人問你一個類似的問題,你一點思路都沒有。所以,我推薦你學完一門知識後不光要及時複習,還要做好總結,讓知識形成一個體系。另外,你可以假想自己要給別人講這個知識點,你能不能把這個知識點講清楚呢?如果不能,說明你對這個知識點還沒有徹底瞭解。這也就是人們經常說的費曼學習技巧。
總結的方式:
- 有道雲筆記、OneNote…這類專門用來記錄筆記的軟件上;
- 在github或者gitee 上寫文檔,這也能鍛鍊你git使用,建議找 4~10 個人一起寫,這樣大家能相互學習
- 思維導圖xmind;
- 通過寫博客輸出
多用 Github
沒事多去Github轉轉,如果有能力可以參與到一些開源項目中。多看看別人開源的優秀項目,看看別人的代碼和設計思路,看的多了,你的編程思想也會慢慢得到提升。除了這些優秀的開源項目之外,Github上面還有很多不錯的開源文檔、開源資料什麼的,我覺得對我們平時學習都挺有幫助。Github用得好還能裝一下,畢竟人家還是一個全英文網站,咳咳咳。
實踐
多去實踐,將學到的東西運用到實際項目中去。很多人都找我抱怨過沒有實際項目讓自己去做,怎麼能有項目經驗呢?如果實在沒有實際項目讓你去做,我覺得你可以通過下面幾種方式:
- 在網上找一個符合自己能力與找工作需求的實戰項目視頻或者博客跟着老師一起做。做的過程中,你要有自己的思考,不要淺嘗輒止,對於很多知識點,別人的講解可能只是滿足項目就夠了,你自己想多點知識的話,對於重要的知識點就要自己學會去往深出學。
- Github或者碼雲上面有很多實戰類別項目,你可以選擇一個來研究,爲了讓自己對這個項目更加理解,在理解原有代碼的基礎上,你可以對原有項目進行改進或者增加功能。
- 自己動手去做一個自己想完成的東西,遇到不會的東西就臨時去學,現學現賣。
注意代碼規範
從學習編程的第一天起就要養成不錯的編碼習慣,包、類、方法的命名這些是最基本的。
推薦閱讀:
- 阿里巴巴Java開發手冊(詳盡版)https://github.com/alibaba/p3c/blob/master/阿里巴巴Java開發手冊(詳盡版).pdf
- Google Java編程風格指南:http://www.hawstein.com/posts/google-java-style.html
- Effective Java第三版中文版: https://legacy.gitbook.com/book/jiapengcai/effective-java
後記
時間有限,內容不一定全
其他資料,可以 [email protected]