- 操作系統:IO、存儲器、多線程/多進程、同步機制、處理器調度及死鎖、設備管理、通道等;
- 計算機組成原理:馮諾依曼計算機組成、計算機層次結構、計算機性能指標等;
- 選定一門主攻的語言方向,比如、C++、Java等,并真正攻克它;
- 多實踐多上機,機房要常去
- 抓住一切可以實習的機會,是否有實習經歷往往是大廠給不給offer的分水嶺
另外,再多說幾點吧:
一、職業規劃
職業道路該怎么走?
因為我目前是做的,所以我主要在這里介紹的職業發展道路
這門語言可以發展的方向很多,如果想走開發這一條路的話,至少有六種選擇:
傳統領域:
- 開發運維:、shell
- WEB開發:
- 數據化測試:、C++
- 項目經理:、C、Java
新興領域:
- 物聯網:、C
- 人工智能:、C、C++
- 大數據分析:、SQL、R
了解完了一門語言可能的職業發展方向之后,你就可以根據你的個人喜好以及當下情況,選擇不同的方向鉆研。
因為你的人生是你自己的,我只能給你提供道路,沒辦法幫你選擇。所以第一步,我只能幫你到這里了。
可能你對有些分析也是看都看不懂,我的建議是找了解的人有經驗的人帶你,如果說你交好的朋友中有這部分人是最好的,如果沒有耶不用擔心,去找對應的交流群就好,我當初就是進入了好幾個交流群,不停的問問題,包括學習,包括方向,各種問題都問。
二、學習規劃
通過上面的分析,你可以看到,不管你走哪條道路,你都不能只會一門編程語言,也就是說「成為優秀的程序員」不能只會用,你必須得會一些其他輔助性的語言。
所以,關于學習規劃,我會分為下面三個部分來講:
- 1、編程通用知識
- 2、的學習步驟
- 3、其他編程語言的學習
1.編程通用知識:
每一個知識點后面計算機網絡原理精講視頻教程,我都放了一門推薦課程,如果自覺掌握扎實,可以跳過。
算法:算法導論-麻省理工編譯原理:編譯原理-哈工大數據結構:數據結構-浙江大學操作系統:計算機操作系統精講-哈爾濱工業大學網絡原理:計算機網絡原理 -哈爾濱工業大學
很多人都會問,學這些有什么用?我編程又用不到。
這里我舉個例子,都說學習就像蓋房子,而基礎學習就是打地基,沒有地基能不能蓋房子?
當然可以!但是你的房子想建高是不可能了,你的房子想建牢靠也是不可能的了。
所以,為了你之后的學習更順暢,一定要耐著性子哪怕逼自己也要把這一塊給啃下來。
這直接決定了你之后的發展高度。
2.的學習步驟
這一塊分未學什么以及怎么學兩部分。
學什么?
1.語言基礎
說白了,就是學習這門語言的基本語法。
需要注意一點的是學習語言基礎的時候,一定要多動手計算機網絡原理精講視頻教程,不要覺得自己理解了就跳過去了。不然等你真的要實操的時候,你會發現有很多細節是你之前忽略了的,而這些細節阻礙了你的整個編程。
下面是推薦的一些書籍以及課程:
書籍:《流暢的》 《笨辦法學》 《 》
視頻:入門教程視頻(1-70集)
學到最后,你能掌握下面這些知識就夠了:
我也將我所得到的資料以及我的學習邏輯思維整理了一下文檔,分享給大家,有需要的朋友可以進群自取,注意這是適合小白從0到1的學習,如果說你有了一定基礎需要進階可以忽略掉。
2.進階學習(1)爬蟲
推薦課程:
(2)數據分析
推薦課程:
(3)教程
推薦課程:
(4)全棧教程
推薦課程
零基礎的資料都已經給大家分享出來了,進階自然也少不了。
3.其他編程語言的學習
作為一個程序員,不可能靠一種語言走遍天下。所以你還要拓展至少一種其他語言。
至于精通之后的編程語言該如何選擇,首先就得看你自己的工作需要。
怎么學?
每個人的學習方法都不一樣,有的人喜歡邊做項目邊學習,有的人則喜歡學一段時間做一個項目,有的人喜歡看書學,有的人喜歡看視頻學,這些都不是問題,重要的是找到適合你自己的。但下面這幾點,最好還是不要去做了,因為我帶了這么多人,敢這樣做的都是事倍功半,結果慘不忍睹。
1.一味的對著別人的代碼去敲。
剛開始不會做只有跟著別人敲,這不是問題,問題是跟著別人敲了之后你要自己理解自己記憶把它變成自己的東西。照著別人代碼敲一遍兩遍哪怕三遍,除了讓你看得仔細點,練了打字外并沒有其它任何幫助。
因為模仿復現不是關鍵,思考才是關鍵。你要能做到思考學習別人思路后,脫離書本和博客,完全自己實現功能。只有這樣,你的學習才是有效的。
2.想著一口氣吃成個胖子
這一塊的情況稍微少見,但也不是沒有,有的人急于求成,學習只學個大概只求個會用,沒有做到知其然還知其所以然。
一個典型的例子,我兩年前帶的應屆生,北京一所高校來的。當時他做的那部分出了點問題,我就推薦了一本書給他,讓他看完后把這個問題解決,因為不是很急,我說一個星期搞定就行了。結果兩天后,他就跑過來跟我說書看完了,問題也解決了。我問他怎么做的,他說他看了個大概后直接照著書上做了。
技術這玩意兒,不是看了個大概能照著做就會了,一口氣吃不成個胖子,必須得扎扎實實地把事情做好。所以不要試圖一次性解決所有問題,這里給個建議:可以將每天的學習過程拆分成小塊,分階段學習,這樣的效率會更高些。
說完了第一點如何學習基礎知識,接下來說說第二點如何鞏固基礎知識。方法千千萬,最有效的我認為還是刷題,有方法的刷題。
我的刷題小技巧
下面這個刷題方法很普通但也很實用,推薦給你:
第一遍: 可以先思考,之后看參考答案刷,結合其他人的題解刷。思考、總結并掌握本題的類型,思考方式,最優題解。
第二遍: 先思考,回憶最優解法,并與之前自己寫過的解答作比對,總結問題和方法。
第三遍: 提升刷題速度,拿出一個題,就能夠知道其考察重點,解題方法,在短時間內寫出解答。在這里,給大家推薦兩本書還有一些學習網站,能夠讓大家學得更輕松些。
三、實操技巧
這一點專門針對題主所說的「大部分時間都在寫著重復的業務代碼,感覺成長很低」這一問題。
如何找項目練手:
1.做一些實操性強的個人項目,自己練練手
田納西大學助理教授奧斯汀·亨利結合自身經驗,給出了一份“程序員都應該嘗試的挑戰性項目”清單,包含下面六個項目,我之前做了一遍覺得還不錯,推薦給大家: - 文本編輯器 - 2D游戲-太空侵略者 - 編譯器-Tiny BASIC - 迷你操作系統 - 電子表格 - 電子游戲機模擬器
每一個項目都存在不同的挑戰,比如文本編輯器就要求在不使用GUI框架中內置的文本框組件的情況下,搭建支持光標移動、選擇、插入和刪除操作的文本框并將文本文檔存儲在內存中。
如果你能解決掉這些項目中的這些問題,然后把項目獨立完整的做出來并且運行成功,你的能力肯定能再上一個臺階。
2.接一些開發兼職
這是三種方法中實操性最強的一種了,沒有之一。
而且不用說,這也是最快最有效的方法了,畢竟編程這件事,光有理論是不夠的,動手實踐才是關鍵也是最終目的。
找實習,無外乎三個途徑:1)、實習平臺、公眾號
一些找工作、找實習平臺,可以直接去搜崗位,平臺有很多,比如實習僧、應屆生求職網、Boss直聘、刺猬實習、拉勾網、智聯招聘、前程無憂等
2)、企業官網/招聘專網
各個大公司都有自己的官網,當有實習生崗位開放時,在官網上就會有對應入口。
比如:阿里巴巴集團招聘
比如:騰訊集團
比如:百度招聘
3)靠內推
如果你有一些朋友、師兄、師姐已經就業到理想公司,可以與他們聯系,如果他們公司有實習崗位的話,可以讓他協助你走內部推薦流程。很多公司,內推同學是免簡歷篩選和筆試的,可以直接進面試。當然,也有些公司是無論是否內推,流程都一致。
結語本文提到的所有資料都在末尾領取
不論以后選擇什么方向發展,目前重要的是把方面的技術學好,畢竟其實對于程序員來說,要學習的知識內容、技術有太多太多,要想不被環境淘汰就只有不斷提升自己,從來都是我們去適應環境,而不是環境來適應我們!
當程序員容易,當一個優秀的程序員是需要不斷學習的,從初級程序員到高級程序員,從初級架構師到資深架構師,或者走向管理,從技術經理到技術總監,每個階段都需要掌握不同的能力。早早確定自己的職業方向,才能在工作和能力提升中甩開同齡人。