月薪 20k 的程序員是什么樣的技術(shù)水平?
薪資 20k 的程序員是什么水平?

程序員的發(fā)展方向可以劃分為技術(shù)專家、架構(gòu)師、技術(shù)管理、管理。技術(shù)專家偏理論研討,對某個(gè)或某些相關(guān)的專業(yè)范疇深化理解能直接或經(jīng)過提供思緒間接處理這些范疇的各種問題。薪資20k的程序員相對來說是比較資深的程序員,具備的技能遠(yuǎn)超初級程序員。
薪資20k的程序員應(yīng)具備的技能及相應(yīng)的水平介紹:

1、算法:技術(shù)面試筆試都考算法提,所以Leetcode至少得刷兩三百道,《劍指offer》所有題目都練習(xí)一遍,做過ACM更好,現(xiàn)在很卷面試官也只能通過算法題來加大篩選。
2、數(shù)據(jù)結(jié)構(gòu):不要求你手寫紅黑樹,但AVL 哈希表堆這些簡單的數(shù)據(jù)結(jié)構(gòu)自己操作實(shí)現(xiàn)過;鏈表、線性表必須熟悉到不能再熟悉,語言的標(biāo)準(zhǔn)庫實(shí)現(xiàn)得了解。
3、計(jì)算機(jī)系統(tǒng)知識:內(nèi)存、堆棧、函數(shù)調(diào)用、數(shù)的表示等等,至少《CSAPP》得過一遍。操作系統(tǒng):操作系統(tǒng)由哪些構(gòu)成、進(jìn)程的狀態(tài)、切換、調(diào)度 進(jìn)程間通信方式(共享內(nèi)存、管道、消息)、進(jìn)程和線程的區(qū)別、線程的實(shí)現(xiàn)方式(一對一、多對一等) 互斥與同步(信號量、管程、鎖)、死鎖檢測與避免
4、計(jì)算機(jī)網(wǎng)絡(luò):計(jì)網(wǎng)知識比較繁雜,很多同學(xué)都反映網(wǎng)絡(luò)很難學(xué)一大堆的網(wǎng)絡(luò)協(xié)議,依次學(xué)完后,還是不知道網(wǎng)絡(luò)是怎么構(gòu)成。依次去學(xué)應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層,思考這些層之間是如何串聯(lián)起來的。

推薦學(xué)習(xí)《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法》 這本書從我們最常接觸的 HTTP、FTP、SMTP 等應(yīng)用層協(xié)議講起,可以清晰看到引入各個(gè)層的作用。學(xué)習(xí)每層協(xié)議的時(shí)候,最好自己抓包看下,wireshark抓包遇到三次快速重傳會怎么樣?這樣映像會更加深刻
5、數(shù)據(jù)庫:sql得會寫,推薦《SQL必知必會》,幾個(gè)范式有沒有正式運(yùn)用過? 如何進(jìn)行領(lǐng)域建模、數(shù)據(jù)庫設(shè)計(jì),才能夠使得每次查詢的開銷最?。繑?shù)據(jù)庫原理方面《數(shù)據(jù)庫系統(tǒng)概念》包含了從SQL到數(shù)據(jù)庫設(shè)計(jì)再到數(shù)據(jù)庫原理、分布式數(shù)據(jù)庫都有,可以挑著看,比如關(guān)系模型、數(shù)據(jù)庫設(shè)計(jì)(三大范式)、數(shù)據(jù)磁盤存儲和組織方式、索引、并發(fā)控制等。當(dāng)然了整個(gè)數(shù)據(jù)庫最重要的還是索引和并發(fā)控制(鎖、MVCC等),這部分也是面試常考的:
6、索引存儲結(jié)構(gòu):B樹、B+樹索引、Hash索引 索引的使用:主鍵索引、覆蓋索引、最左前綴原則、索引下推等 鎖:樂觀鎖、悲觀鎖、表鎖,行鎖,意向鎖,讀鎖,寫鎖等等MySQL?InnoDB MVCC 實(shí)現(xiàn)機(jī)制 存儲引擎:InnoDB、MyISAM等,各自的優(yōu)缺點(diǎn) 事務(wù):ACID理論 這部分推薦兩本書:
7、網(wǎng)絡(luò)編程:后臺開發(fā)基本是離不開網(wǎng)絡(luò)編程的,其實(shí)甚至整個(gè)后臺開發(fā)也可以看做是在做網(wǎng)絡(luò)編程。只不過別人的框架幫我們做了協(xié)議解析、網(wǎng)絡(luò)數(shù)據(jù)傳輸、解封包這些底層操作。如?SpringBoot 這種保姆級框架,基本上屬于將一個(gè)框架能干的事都干完了,以至于我們開發(fā)業(yè)務(wù)只需要定義接收和返回包的數(shù)據(jù)格式,然后做邏輯處理就完了。像序列化、解封包、IO 處理這種網(wǎng)絡(luò)編程必備的臟活業(yè)務(wù)開發(fā)根本不會接觸到。但網(wǎng)絡(luò)編程技能還是很重要的,特別是對于 Linux C++ 開發(fā)來說。

Linux 下網(wǎng)絡(luò)編程核心的包括系統(tǒng)編程和網(wǎng)絡(luò) IO 兩個(gè)部分:
8、進(jìn)程間通信方式:信號量、管道、共享內(nèi)存、socket 等多線程編程:互斥鎖、條件變量、讀寫鎖、線程池等 五大 IO 模型:同步、異步、阻塞、非阻塞、信號驅(qū)動 高性能 IO 兩種模式:Reactor 和 Proactor( 但是 Linux 下由于缺少異步 IO 支持,基本沒有 Proactor IO 復(fù)用機(jī)制:epoll、select、poll(破解 C10K 問題的利器)推薦幾本書:《Linux高性能服務(wù)器編程》、《Unix網(wǎng)絡(luò)編程》、《Unix環(huán)境高級編程》。
9、編程語言:雖然說語言不重要,但是總得擅長一門語言?C++的必看書籍Effective三部曲,《Effective C++》、《More Effective C++》、《Effective STL》、STL 源碼剖析、對象模型都得過一遍;Java學(xué)習(xí)的話JVM原理,GC ,JDK重要集合類庫得看下。
10、項(xiàng)目:如果只是用幾個(gè)框架建議不要寫到簡歷上不如去github上參與開源項(xiàng)目GSOC學(xué)習(xí)。任何一個(gè)花上半年時(shí)間去實(shí)現(xiàn)一個(gè)簡陋的原型(如實(shí)現(xiàn)一個(gè)簡單的內(nèi)核)都是非常好的簡歷加分項(xiàng)。

程序員薪資高低一般是與你的技能、經(jīng)驗(yàn)呈一個(gè)正比關(guān)系。每次找工作面試的時(shí)候考察的都是候選人的技能、經(jīng)驗(yàn)相關(guān)水平,然后給予一個(gè)相應(yīng)的級別然后后確定一個(gè)工資范圍,想要獲得高薪那么程序員的專業(yè)技能是核心,其次是溝通表達(dá)能力。
最后還有句話是這么說的:栽一棵樹最好的時(shí)間是十年前,其次是現(xiàn)在。對于學(xué)習(xí)編程或者在工作想升職的程序員,如果你想更好的提升你的編程能力幫助你提升水平!筆者這里或許可以幫到你~
微信公眾號:C語言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
