前言
由于博主秋招拿到的offer有限,经过对比,决定转到C++开发技术栈,此篇文章用于规划自己今后的成长路线并分享给大家。
学习路线
C++语言本身:我们可以将这个部分分为基础和进阶两个阶段,在看书之前可以先学习一遍视频教程大概了解C++的基本样貌
基础阶段
熟悉C++的基本语法,重点理解指针和内存管理
重点理解面向对象设计思想以及相关知识点
推荐书籍:《C++Primer中文版第五版》、《深入探索C++对象模型》、《Effective C++》
学习C++语法,首推C++ Primer 第5版,C++语法学习的最权威书籍,以C++11来讲解,非常全面地讲解了C++的语法以及C++11的各种新特性,看完帮助很大,如果有时间建议至少看两遍,时间有限的话,建议至少通读一遍,把握这本书的大体框架,然后结合个人情况选择性地去看一些重点章节。
深度探索C++对象模型这本书讲解了C++面向对象特性的底层实现机制,由于是翻译版本,读起来内容会相对晦涩一些,但是内容非常重要,尤其是虚函数底层的实现机制,建议多看几遍加深理解,这个基本是C++必问的知识点。看完这本书,对C++面向对象的理解帮助极大,建议必读。
Effective C++这本书主要讲解了编写C++程序的过程中需要注意的一些条款,有助于梳理在编写C++程序时的一些常见错误和注意事项,也是面试常考的。如果认真读过了C++Primer,这本书看起来会非常快,其中的很多内容都包含在C++ Primer中了。
进阶阶段
掌握STL和模板
推荐书籍:《STL源码剖析》【必读】
STL 源码剖析这本书讲解了C++底层实现,内容包括C++底层内存管理、各种容器的数据结构实现、常见算法的实现等,建议列为必读,可以帮助深入理解C++底层,同时也是对数据结构的复习和巩固。其中也有很多面试常考的知识点,如内存池的机制、traits技法、一些常用容器的底层数据结构等。
总之,C++由于它自身的特点,学习起来不会很轻松,需要一定的时间成本,但是如果你认真的学习了以上4本书,你会对C++有一个新的认识!相信我,等你学好C++,再学习其他高级语言会觉得轻松许多!
数据结构与算法
力扣:重点HOT100反复
剑指offer:最起码两遍
代码随想录刷透
计算机网络
推荐中科大郑铨老师的教学视频
推荐书籍:《计算机网络 第7版》【必读】、《TCP/IP详解卷Ⅰ》【必读】、《图解HTTP》
学习网络,可以先看计算机网络这本书,讲解通俗易懂,前面的物理层和链路层可以快速看,了解基本原理即可,重点学习网络层、传输层和应用层,其中传输层的TCP和UDP是面试最常考的,非常重要。网络的知识比较容易理解,但是知识点比较繁杂,一段时间不看就很容易忘记,建议学习之后将各个知识点整理成文档或者笔记,有助于找工作前复习。
学完计算机网络,可以基本建立计算机网络的知识体系,但是这本书深度不够,建议继续学习TCP/IP详解 卷1,作为对TCP/IP协议的深入,这本书讲解非常细致,看的过程中很容易陷入细节,对整本书系统学习的话比较花时间,如果时间有限的话,可以先选择性地学习一些章节,建议先将传输层的内容看完,有助于对TCP和UDP的深入理解,其他层的内容可以根据个人情况选择性的学习。
网络编程【实践】
推荐书籍:《Unix网络编程》、《TCP/IP网络编程》
学习完前面计算机网络必读的两本书的基础知识,就基本掌握了计算机网络的理论知识,建议将这两本书列为必读。另外,如果想要对网络编程进行实践,可以继续学习UNIX网络编程 卷1。
操作系统
推荐哈工大李治军老师的教学视频,学习操作系统的通用知识
推荐书籍:《现代操作系统》、《深入理解计算机系统 第3版》、《程序员的自我修养》
Linux
《鸟哥的Linux私房菜 第4版》(用于了解Linux基本命令)
《UNIX环境高级编程 第3版》(APUE)
《Linux/UNIX系统编程手册》(上下册)
内核
《Linux内核设计与实现》(LKD)
《深入理解Linux内核》
数据库
主要是MySQL和Redis
视频推荐看sgg的康师傅的MySQL、Redis的话视频自己找找,书里更全面
推荐书籍:《高性能MySQL》、《Redis设计与实现》
项目
项目这块我是准备入职后,跟着mentor慢慢学
C++开发方向
服务器后台开发
客户端开发
C++游戏开发
C++驱动开发、逆向工程、网络安全
嵌软开发
音视频方向
图像处理(医学、机器视觉,偏算法)
我个人应该是属于数据库开发工程师(C++方向),这个岗位推荐可能是由于博主简历中大数据相关技术栈决定的,具体岗位内容可能要进去了才知道,先把C++掌握牢固才能应付自如。