和題主一樣,我也在BAT當後臺研發碼農,主力語言就是C/C++用了很多年了(目前團隊在轉Go方向),對於C/C++後臺開發這塊的經驗,有一些可以與大家分享。
雖然是C/C++後臺研發開發,但按我的經驗,後臺開發中更多的是C++,至少接觸到的後臺開發都是如此,既然是C/C++後臺開發,那要點的技能樹其實從名字就能看出來,概況起來主要就是兩個方面:
1. C/C++語言
2. 後臺開發技術
C/C++ 程式語言的學習,在 C++ 後臺研發中只佔了很小一的部分比例,程式語言只是一個工具,開發人員會使用工具是最低的要求,以我從事後臺開發的經驗來看,當前符合大部分公司後臺崗位要求的技能樹,大致是下面這個樣子,我畫了一張圖,你看看:
圖中的技能點看起來挺多(確實挺多的),不要慌,我一個個來講下需要點哪些技能樹。
C++學習開始之前先來看下,C++需要學習的內容包含:
基礎:const 限定符號、宣告與定義、型別、遍歷標準庫和演算法:string、vector、bitset、map派生類中的建構函式與解構函式,解構函式、建構函式動態陣列、多維陣列、陣列、指標和引用過載 Overloading 和覆蓋Overriding表示式、迴圈、條件判斷語句堆和棧的區別,mallocl和 new 的區別面向物件的特性,封裝、繼承、多型虛擬函式、虛擬函式表、派生類虛表,物件記憶體佈局模板與泛型程式設計:模板定義、例項化、模板編譯、模板特化繼承:單繼承、多繼承、菱形繼承、虛繼承強制型別轉換:static_cast, const_cast, reinterpret_cast,dynamic_cast,異常處理、名稱空間現代C++:C++1X、C++20 新特性C++程式語言這塊的技能樹,是必須要點滿的,當然最高效的學習方式是閱讀經典書籍。經典書籍我推薦一波,總共 7 本書,基礎 3 本,進階 3 本,現代C++ 1本,帶封面,方便你找。
初在學習C++的時候,不是所有的坑都需要親自踩一遍,閱讀經典,前人的經驗能讓我們少走彎路。
C++基礎 3 本《C++ Primer 》豆瓣9.4《Effective C++》豆瓣9.5《More Effective C++》 豆瓣9.2C++進階 3 本《Inside the C++ Object Model》 這本書中文版《深度探索C++物件模型》翻譯質量也很高, 豆瓣9.1《STL原始碼剖析》 豆瓣 8.7《C++程式設計思想》現代C++ 1本什麼是現代C++?C++這門語言也一直在發展當中,C++1X 甚至 C++20 引入了很多帶來重大改變的新特性,讓C++更加現代化。如何快速上手現代 C++ 特性,如果我推薦開源電子書:
《現代C++教程:高速上手C++11/14/17/20》這本書已在Github開源,離線版下載
至此,C++語言這顆技能樹差不多點滿了,下面我們來說說「後臺開發」技術。
C++後臺研發圖中的技能樹比較多,下面我來一個個說明:
計算機基礎計算機科學技術 CS(Computer Science),大學計算機專業課,計算機基礎是軟體開發的基本功,當然也是C++開發的基本功,下面是一份中中科大的計算機技術本科主要課程結構安排。
計算機基礎這塊的學習包括計算機組成原理作業系統資料結構與演算法計算機網路LinuxLinux系統使用Linux 高階程式設計Unix網路程式設計資料庫後臺開發離不開資料儲存,而資料儲存就涉及到資料庫學習,主要是 2 大類資料庫:
關係型資料庫,採用了關係模型來組織資料的資料庫,代表是MySQL。非關係型資料庫,一般指的是 key-value 形式儲存資料的 NoSQL 資料庫,代表是Redis設計模式設計模式是經歷了很長一段時間的發展,代表著軟體開發的一種最佳實踐。提供了軟體開發過程中面臨的一般問題的最佳解決方案。
學習以下常見設計模式,並嘗試用C++來實現一遍。
單例模式建造者模式享元模式工廠模式代理模式責任鏈模式直譯器模式迭代器模式觀察者模式介面卡模式橋接模式過濾器模式裝飾器模式外觀模式...中介軟體中介軟體就是把分散式系統中一些通用功能,抽象出來提供服務的一類軟體統稱。由於中介軟體是介於作業系統和應用軟體之間,所以稱為中介軟體。
web server 中介軟體,Nginx、OpenResty、Tomcat...快取中介軟體,服務端快取包括 Redis、Memcached日誌系統中介軟體, Elasticsearch、Logstash 、 Kibana、Beats資料庫中介軟體,Sharding jdbcAPI閘道器,開源專案有 Tyk、kong、zuulRPC框架,Tars、Dubbo、gRPC、Thrift配置中心中介軟體,Apollo、zookeeper統一配置管理訊息佇列中介軟體,ActiveMQ、Kafka、RabbitMQ...分散式擴充套件性設計,設計可擴充套件的軟體架構微服務架構設計,服務註冊、服務發現、服務路由分散式檔案系統:FastDFS、HDFS分散式事務:2PC、3PC、TCC分散式一致性演算法:PAXOS、Raft、Zab分散式唯一 ID 生成:雪花演算法、UUID、美團 Leaf、淘寶 TDDL SEQUENCE方案一致性HASH演算法高併發、高效能、高可用(統稱後臺開發三高)多執行緒、多程序、協程模型非同步回撥、同步阻塞池化技術、叢集技術、快取技術、CDN內容分發負載均衡、限流熔斷、異地多活搜尋引擎倒排索引搜尋引擎原理技術Lucene、Apache Lucene全文搜尋引擎工具包Elasticsearch 簡稱ES 的原理與使用Solr 原理與使用測試技術單元測試全鏈路測試壓力測試灰度釋出,A/B 測試,藍綠部署監控運營日誌(Logging)對系統和各個服務的執行狀態進行監控,記錄程式的除錯資訊或錯誤資訊,量度(Metrics)比如累加量,對系統和各個服務的效能進行監控分散式追蹤(Tracing )追蹤服務請求是如何在各個分佈的元件中進行處理虛擬化常見的虛擬化技術:KVM、Xen、OpenVZ、DockerKubernetes 簡稱 K8s ,管理 container 容器OpenStack 管理 VM(Virtual Machine)虛擬機器安全技術web安全:CSRF、SQL注入、XSS加解密演算法:對稱加密、雜湊演算法、非對稱加密DDos防範授權認證演算法:OAuth2.0、單點登入SSO、OIDC、2FA網路隔離:內外網分離、跳板機大資料主要包含以下的技術點需要學習:資料儲存、離線分析、流式計算。
大資料儲存:Hadoop 框架,HBase、HDFS離線分析:Hive、MapReduce、Spark流式計算:Flink、Storm、Spark Streaming、Kafka Stream版本控制集中式版本控制系統SVN;分散式版本控制系統Git以上,差不多是整個C/C++後臺研發體系需要點的技能樹,先寫這麼些吧,有人看再來詳細補充。
微信搜「 後端技術學堂 」回覆「1024」獲取程式設計學習資源