【总结】C++工程师学习路线|推荐视频|推荐书籍

前言

由于博主秋招拿到的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++掌握牢固才能应付自如。

你可能感兴趣的:(C++,c++,开发语言,数据结构)