最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

我是如何提高自己的「編程能力」的?珍藏了四年的經(jīng)驗(yàn)!分享給你

2020-12-24 16:16 作者:C語言編程__Plus  | 我要投稿

我自己作為一個(gè)非科班的程序員,并且在工作中觀察了“這兩類”工程師的表現(xiàn),我認(rèn)為科班和非科班最大的區(qū)別在于:科班的同學(xué)知道去學(xué)什么,問題出現(xiàn)了他知道自己是哪里有知識(shí)漏洞;而非科班的,可能?壓根不知道自己不知道什么?。

(解決方式:建立系統(tǒng)的知識(shí)體系、尋求老板、tech lead 的指點(diǎn),快速補(bǔ)充基礎(chǔ)并反復(fù)學(xué)習(xí)。)


因此這篇文章我想粗淺的聊聊成為一個(gè)工程師需要掌握的大致學(xué)習(xí)路線,更多的偏入門一些,不涉及具體的工作方向。正如柏拉圖所說:

人只有通過和別人討論,才能知道我們的經(jīng)驗(yàn)是不是真實(shí)的。

如果把學(xué)習(xí)比作練功的話,我把我的學(xué)習(xí)內(nèi)容分為:

修煉“外功”:偏應(yīng)用

修煉“內(nèi)功”:偏基礎(chǔ)

兩者配合,才能仗劍走天涯!


一、外功

1. Linux 操作系統(tǒng)

對(duì)于想做開發(fā)的同學(xué),如果還是個(gè)小白,問我第一件事情該做什么,我會(huì)強(qiáng)烈推薦先學(xué)習(xí) Linux 操作系統(tǒng),因?yàn)榛ヂ?lián)網(wǎng)公司基本上大部分業(yè)務(wù)框架部署都是在 Linux 操作系統(tǒng)上進(jìn)行的。

我認(rèn)為學(xué)習(xí) Linux 操作系統(tǒng)的重點(diǎn)就在于學(xué)習(xí)各種強(qiáng)大?命令?如何組合運(yùn)用。

一是因?yàn)楣ぷ髦形覀兘?jīng)常需要用到,比如對(duì)各種日志文件進(jìn)行分析,寫腳本驅(qū)動(dòng)機(jī)器幫助我們工作。

二是面試時(shí)經(jīng)常會(huì)給出一個(gè)需求場(chǎng)景讓你編寫相關(guān)的組合命令,比如統(tǒng)計(jì)一段日志中各種 IP 地址出現(xiàn)的次數(shù)。

給大家推薦一本 Linux 界的“圣經(jīng)”。


《鳥哥的 Linux 私房菜》蟬聯(lián)最受歡迎華語 Linux 書籍第一的位置,無人能撼動(dòng)。

對(duì)于想走開發(fā)路線,或者互聯(lián)網(wǎng)技術(shù)路線的同學(xué),學(xué)習(xí) Linux 絕對(duì)是必須的。

這是一本既能幫助你入門,又能隨時(shí)備查的工具書。更特別的是鳥哥的寫作風(fēng)格,非??谡Z化,讀起來感覺像是有人在跟你實(shí)時(shí)互動(dòng)聊天。

建議想要學(xué)習(xí)的同學(xué)可以收藏一本電子版隨時(shí)備查。第一次閱讀的同學(xué)估計(jì)會(huì)被它的厚度嚇到,但其實(shí)沒有必要去一字一字的全部讀完,快速的看完前面十章,你就會(huì)對(duì) Linux 有一個(gè)初步的認(rèn)識(shí)。以后需要用到哪些命令和知識(shí)隨時(shí)再查就可以了。


2. 學(xué)習(xí)一門語言和框架

對(duì) Linux 操作系統(tǒng)有了一定的了解之后,大家就可選擇一門編程語言及其通用框架進(jìn)行學(xué)習(xí)開發(fā)。

語言的學(xué)習(xí)和框架可以借助的資料就很多了,每個(gè)人的習(xí)慣都不一樣。喜歡跟著視頻學(xué)習(xí)的可以去慕課網(wǎng)、極客時(shí)間,上面有很多性價(jià)比很高的課程。另外推薦大家可以加入一些交流群,嗯,比如我的讀者交流群,另外一些框架或者語言的官網(wǎng)里面都會(huì)有自己社區(qū)和交流群的聯(lián)系方式,里面會(huì)有很多精華帖子和大牛進(jìn)行分享。

說回我自己,當(dāng)時(shí)入門語言是 C++,研究生課程要用,沒基礎(chǔ)也只能硬著頭皮上了。

但其實(shí)很多 C++ 的課程或者書籍都是先講 C 語言,比如《C++ Primer》前面幾章都是講的 C 語言,所以也還好。

現(xiàn)在看來,我認(rèn)為這三門語言都是需要學(xué)習(xí)的:

Java 是綜合能力很強(qiáng)的語言,很多互聯(lián)網(wǎng)公司大型的框架或者開源項(xiàng)目都是基于 Java 的,因?yàn)樗蟹浅M瓿傻囊惶纵喿?,能夠快速幫助企業(yè)解決業(yè)務(wù)問題;

C 語言偏底層,很多軟件都是用 C 來寫的或者和它有間接的關(guān)系,學(xué)習(xí) C 能夠幫你更好的理解計(jì)算機(jī);

C++ 雖然有些復(fù)雜,但它在某些應(yīng)用場(chǎng)景中有很強(qiáng)的不可替代性,很多公司還在用 C++ 開發(fā)核心架構(gòu),比如騰訊、百度、谷歌等。

做開發(fā)的同學(xué)經(jīng)常戲稱自己的工作就是“增刪查改”,那么增刪查改自然離不開對(duì)數(shù)據(jù)庫的使用,做項(xiàng)目的時(shí)候就要學(xué)習(xí)數(shù)據(jù)庫的使用。


3. 數(shù)據(jù)庫

雖然我是全棧程序員,但是工作中多數(shù)處理的還是后端問題,數(shù)據(jù)庫真的非常非常常用。

在我轉(zhuǎn)行成為“專業(yè)”的程序員之前,在金融公司里也常用數(shù)據(jù)庫,畢竟交易系統(tǒng)的下游肯定是數(shù)據(jù)庫,數(shù)據(jù)也是一切模型的前提。

初學(xué)者建議由淺入深,先學(xué)習(xí)怎么用。

推薦這本書《MySQL 必知必會(huì)》,是一本稍厚的小冊(cè)子,書中沒有講太多數(shù)據(jù)庫的底層原理,但是條理清晰、簡(jiǎn)明扼要的介紹了初學(xué)者應(yīng)該掌握的基礎(chǔ)知識(shí)。


一個(gè)晚上的時(shí)間坐下來靜靜的看,你會(huì)發(fā)現(xiàn)你對(duì) SQL 語句如何編寫會(huì)有一個(gè)很系統(tǒng)性認(rèn)識(shí)。

面試時(shí)候面試官常常問一個(gè)需求場(chǎng)景,讓你編寫相關(guān)的 SQL 語句。

比如我面試時(shí)遇到的一個(gè)問題:寫一個(gè) SQL: table(Sno, Sname, classId, grade)查出每個(gè)班成績(jī)前三名的同學(xué)?

但僅僅是掌握基本的 SQL 語句編寫是遠(yuǎn)遠(yuǎn)不夠的。

“增刪查改”里面也有大學(xué)問,同樣是增刪查改,有些人就能把數(shù)據(jù)庫性能玩轉(zhuǎn)到極致。

想玩到極致自然離不開我們對(duì)?底層原理?的把握,這也是面試時(shí)候面試官最喜歡考察的內(nèi)容,下面介紹兩本和數(shù)據(jù)庫底層原理相關(guān)的書籍。


《MySQL 技術(shù)內(nèi)幕:InnoDB 存儲(chǔ)引擎》由國內(nèi)資深 MySQL 專家親自執(zhí)筆。本書的內(nèi)容不是著眼于基本的語法教學(xué),而是通過對(duì)數(shù)據(jù)庫底層數(shù)據(jù)結(jié)構(gòu)、工作機(jī)制的分析,告訴我們?nèi)绾尉帉?SQL 語句才是高效的,告訴我們索引如何利用才能發(fā)揮最佳效果。

舉幾個(gè)面試常見的問題,聯(lián)合索引為什么要最左匹配?數(shù)據(jù)庫的隔離級(jí)別是怎么實(shí)現(xiàn)的?都可以在里面找到答案,數(shù)據(jù)庫絕對(duì)是開發(fā)適合面試考察的重點(diǎn)。這本書是通過大量的例子和插圖進(jìn)行知識(shí)講解,會(huì)給人留下很直觀印象。

還有一本書和 Redis 相關(guān)的。


Redis 是世界上最受歡迎的非關(guān)系型數(shù)據(jù)庫之一,常常用來當(dāng)作緩存和 MySQL 配套使用。

Redis 本身的語法并不復(fù)雜,同學(xué)們可以找到很多這方面的語法教學(xué)資料。

面試時(shí)候常常會(huì)被問到,Redis 為什么會(huì)這么快?如果只是回答因?yàn)樗腔趦?nèi)存的數(shù)據(jù)庫,那么面試就涼涼啦。真正的關(guān)鍵秘訣是在于 Redis 的設(shè)計(jì)與實(shí)現(xiàn),閱讀這本書你會(huì)發(fā)現(xiàn),Redis 是通過一系列底層設(shè)計(jì)來保證它快速存取的性能。


二、內(nèi)功

1. 算法和數(shù)據(jù)結(jié)構(gòu)

我認(rèn)為算法和數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)最重要的東西,沒有之一。

程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法。

工作中需要分析復(fù)雜度,很多性能上的問題都依賴算法和數(shù)據(jù)結(jié)構(gòu)來解決,并且?guī)Ыo你思維方式上的改變。有沒有學(xué)過算法,決定了你能否想到最優(yōu)的解決方案。

同時(shí)算法也是計(jì)算機(jī)的基礎(chǔ),任何一個(gè)你使用的軟件或者框架中都一定有算法和數(shù)據(jù)結(jié)構(gòu)。比如數(shù)據(jù)庫索引使用了 B+ 樹。

在此先推薦這本書:_Algorithms + Data Structures = Programs_


而功利一點(diǎn)來說,算法題的考察是進(jìn)大廠必備的。

國外的不管大中小公司、國內(nèi)呢像字節(jié)跳動(dòng),基本上每一輪面試官都會(huì)讓你“手撕“代碼,因?yàn)檫@是對(duì)我們寫代碼能力最直接的考察。

對(duì)國內(nèi)的面試,我建議從《劍指 offer》這本書開始學(xué)習(xí),然后陸續(xù)到??途W(wǎng)或者 Leetcode 開始你的刷題之旅。


這本書的作者通過 50 多道算法題作為案例,像我們講解了面試官考察的思路和一些基本數(shù)據(jù)結(jié)構(gòu)算法的運(yùn)用,讀這本書我們會(huì)感覺是一個(gè)資深面試官在對(duì)我循循善誘,指出我們常見的錯(cuò)誤和學(xué)習(xí)的方向。

刷完這本書之后,就可以在 Leetcode 上繼續(xù)找各類型的題目進(jìn)行學(xué)習(xí),我個(gè)人感覺一般對(duì)于面試來說,如果能把兩百道中等題目刷的比較熟練是足以找到一份不錯(cuò)的工作了。


2. 設(shè)計(jì)模式

設(shè)計(jì)模式可以說是寫出高質(zhì)量代碼的關(guān)鍵。

我在入職前快速學(xué)習(xí)了設(shè)計(jì)模式,入職后看代碼就順暢很多,很多設(shè)計(jì)如果你不知道這種模式就不能理解為什么要這樣做。

我覺得學(xué)習(xí)設(shè)計(jì)模式的是一個(gè)培養(yǎng)自己“審美”能力的過程,和畫作、音樂不同,計(jì)算機(jī)的世界審美標(biāo)準(zhǔn)比較統(tǒng)一,那么我們首先需要知道游戲規(guī)則,然后才能打怪升級(jí)。

推薦書籍《設(shè)計(jì)模式》:


看一遍是不夠的,也不需要一遍追求完全看懂。

在這一年里,我反復(fù)讀這本書,遇到不同的問題時(shí)去看,隨著代碼量的積累,對(duì)設(shè)計(jì)模式的理解也會(huì)不同。

同時(shí)因?yàn)?code review 時(shí)會(huì)有同事給出意見,這樣更能促進(jìn)我的進(jìn)步。

所以對(duì)于還沒有工作的同學(xué),我不建議花大量時(shí)間在這上面,因?yàn)闆]有人給你反饋,可能效果有限,而且這項(xiàng)內(nèi)功是需要我們終身修煉的,不必急于一時(shí)。


3. 操作系統(tǒng)

說到這里,我們已經(jīng)學(xué)習(xí)了 Linux 操作系統(tǒng),學(xué)習(xí)了一門語言和通用框架并且做了一個(gè)小項(xiàng)目,學(xué)習(xí)了一種常見的關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫,算法和數(shù)據(jù)結(jié)構(gòu)也過關(guān)了,拿 offer 應(yīng)該沒問題了。

那么后端開發(fā)還需要我們學(xué)習(xí)計(jì)算機(jī)哪些知識(shí)呢?

推薦大名鼎鼎的 CSAPP:_Computer Systems: A Programmer's Perspective_


這本書我在很久之前的視頻里就推薦過了,它把計(jì)算機(jī)底層原理講解的非常透徹,重要性不言而喻。

當(dāng)然了,書很厚,很難啃~

那理解了計(jì)算機(jī)系統(tǒng)有什么用呢?

很難說具體有什么運(yùn)用,但其實(shí)卻是無處不在,比如工作中的性能優(yōu)化。

如果把開發(fā)當(dāng)作修煉一門功夫這些方面的內(nèi)容就像是內(nèi)功,只有內(nèi)功修煉扎實(shí)了,最后開發(fā)才能更加穩(wěn)固,做出來的項(xiàng)目才是可靠的。于我們個(gè)人而言,才能走得更遠(yuǎn)。


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

面試還喜歡考察什么內(nèi)容呢?

比如面試常常會(huì)問一道經(jīng)典面試題:?從輸入一個(gè) URL 到出現(xiàn)頁面的過程發(fā)生了什么??如果你學(xué)過計(jì)算機(jī)網(wǎng)絡(luò)就會(huì)對(duì)這個(gè)問題起碼有一個(gè)大概的認(rèn)識(shí)。

那么這個(gè)問題有什么用呢?比如當(dāng)你的訪問 web 頁面出現(xiàn)了“白頁“(web 頁面一片空白)這種故障,你會(huì)怎么排查?如果你只是著眼于自己的代碼和服務(wù)端,不清楚整個(gè)請(qǐng)求鏈路發(fā)生了什么,遇到一些稍微復(fù)雜的故障你就束手無策了。

無論是不是計(jì)算機(jī)科班學(xué)生,我都強(qiáng)烈建議把計(jì)算機(jī)網(wǎng)絡(luò)學(xué)好。

當(dāng)然,如果更加“功利“一點(diǎn),我覺得直接去搜相關(guān)的”面經(jīng)“來看,看看什么問題是最常問的,把相關(guān)板塊的知識(shí)弄懂熟透,形成自己的回答條理,看看自己能不能清晰的回答。

TCP 三次握手說一下?

為什么要三次握手呢??jī)纱?、四次不行嗎?/p>

HTTP 協(xié)議哪一層?

說一下 URL 到出現(xiàn)頁面的整個(gè)過程?

推薦書籍:《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下》


5. 計(jì)算機(jī)發(fā)展史

最后一點(diǎn)呢,是我自己感興趣的,順便推薦給大家。

計(jì)算機(jī)是一門非常非常有意思的學(xué)科,很好玩的學(xué)科,從最早的圖靈機(jī)、到如今的臺(tái)式機(jī)、筆記本電腦,以及我最近玩的樹莓派,都是非常非常有意思的。

學(xué)習(xí)這些東西是為了激發(fā)我的學(xué)習(xí)熱情,保持自己的好奇心的一種方式。


三、踏入江湖

如果你能做一個(gè)相對(duì)不錯(cuò)的項(xiàng)目,對(duì)各類面經(jīng)知識(shí)能回答的七八分,算法題做了 200 道,我建議可以開始面試了,那么就真正踏入了江湖。

踏入江湖之后,我們?nèi)孕璨粩喾磸?fù)修煉自己的“外功”和“內(nèi)功”,不斷提高自己的功力,哪怕是同一本書,在工作的不同階段讀,一定會(huì)有不同的體會(huì)。

當(dāng)然了,以上這些還只是職場(chǎng)硬實(shí)力,而能在江湖混的風(fēng)生水起,一定也離不開過人的軟實(shí)力。

但是軟實(shí)力一定是建立在硬實(shí)力之上的,沒有雪中送炭的作用,只可以錦上添花。

當(dāng)然了,如果硬實(shí)力強(qiáng)到一定程度,是不需要軟實(shí)力的,但不適合 99% 的人。

路上陽光正好,愿每一位踏入江湖的少年都能瀟瀟灑灑,仗劍走天涯!

另外本人是一名CC++的程序員,如果你想更好的提升你的編程能力,好好學(xué)習(xí)C/C++編程知識(shí)的話!那么你很幸運(yùn)~

UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~

分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!

編程學(xué)習(xí)書籍:


編程學(xué)習(xí)視頻:



我是如何提高自己的「編程能力」的?珍藏了四年的經(jīng)驗(yàn)!分享給你的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
旬阳县| 南漳县| 越西县| 中阳县| 巴南区| 克山县| 高要市| 容城县| 宜宾县| 琼结县| 长乐市| 鄂伦春自治旗| 大荔县| 西丰县| 西吉县| 台北县| 霍州市| 如东县| 习水县| 民勤县| 清丰县| 蒙城县| 宜兰市| 合山市| 延川县| 小金县| 四会市| 洞头县| 贺州市| 涪陵区| 泽州县| 清徐县| 六盘水市| 东山县| 葵青区| 凤城市| 岑巩县| 宜城市| 萍乡市| 团风县| 新源县|