用一年时间如何能掌握 C++ ？
这个问题有点历史了，不过我想换个角度，从 C++ 应用方向来回答下这个问题。当初学习C++也是用知乎和 Google 搜索学习方法，现在把自己的学习经验分享出来给后来的同学。 图源 hippopx  CC0 首先，只是掌握 C++ 还不够，所有编程语言都只是个工具而已，本质上我们要用语言工具去实现产品逻辑，软件开发就是要做一个东西出来。 所以先想清楚，你想用C++做哪些事或者从事哪方面工作？ 方向不同，需要学习掌握的内容也大不相同。我大概罗列一下，C++的应用方向，包括但不限于： 从上面可以看出，一样都是学 C++，应用方向不同，技能要求和需要掌握的技术栈也不一样。其中需求比较大，也是大部分人选择的方向是「C++服务器后台开发」方向，也是我自身工作相关内容。 在招聘网站找了一个「腾讯的 C++ 研发工程师招聘要求」，可以看到除了对 C++ 语言的要求外，对面试者的其他要求也不少，我们可以从招聘需求反推需要掌握的技能。 「如何用一年时间掌握C++」这个问题有点大，能力有限，我来回答如何用一年时间掌握C++服务器后台开发？ 总结下 C++ 服务器后台开发的一般学习路线，可以归类为以下 4 个阶段： C++后台开发，顾名思义也要先学 C++ 。题主有C语言基础的话，C++的学习还是相对会容易一些，但你要说「精通」，即使是用C++这么多年，也不敢在简历上写这两个字。 敢说精通C++的人要么是真的特别厉害，要么是半桶水学会了一点拿出来忽悠面试官，第二种人早晚会被遭受面试官‘毒打’，要是限定一年时间，达到熟练使用C++的水平没有问题，前提是按正确的学习路线，不要走了弯路。 开始之前，还是先来看下，C++学习到底要学哪些东西： 怎么学C++？看书学！最高效的学习方式，看经典图书。 我当初在学习C++的时候，第一件事就是 Google 搜索前辈们推荐的 C++ 经典书单，前人的经验能让你少走弯路，这里我也分享下自己学习C++，从入门到进阶之路看过的图书：基础 3 本，进阶 3 本，现代C++ 1本。 自学C++相比Java和Python还是要难一些，因为C++更接近操作系统底层，需要自己管理内存等等。  关于C++优质视频学习资源这块，这块我整理了一系列优质的C++公开课和教程视频资源： 一定要看的书，总共 7 本书（带封面，方便你找），一年应该看得完。 所谓的现代C++就是C++1X 甚至 C++20 引入的新特性，让C++这门「古老」的编程语言更加现代化。学完上面推荐的书籍，你已经是算的上是掌握了传统 C++ 用法，如何快速上手现代 C++ 特性，入门我推荐开源电子书： 看过Effective C++ 都知道那是多么经典的一本书，这本书的作者和Effect C++是同一位： 原书在豆瓣评分9.0，这本书有中文版，学习现代C++必备的高质量图书。   这本书已在Github开源 changkun/modern-cpp-tutorial 以上，多了也不推荐，看完这 7 本书差不多算是掌握C++，要达到熟练掌握，还需要项目练习和代码量积累，至于找哪些适合的练手项目，这个我后面会说。 其实 C++ 语言学习在 C++ 后台开发中，只占了非常非常小一的部分，要知道语言只是一个工具，你要做开发，工具使用是最低的要求，还需要学习以下内容才能符合岗位要求。 后端开发工作中经常用到 Java、C++、Python、Golang ，这些语言称为高级编程语言，之所以称为高级语言，是它们接近我们日常交流的自然语言，离计算机底层远。但所有的高级语言最终都会转化成汇编->计算机指令->控制流操控计算机硬件。 所以学习计算机构成和工作原理、操作系统这些基础知识，能够加深我们对高级语言的理解。 计算机科学技术 CS（Computer Science），大学计算机专业课，计算机基础是软件开发的基本功，当然也是C++开发的基本功，下面是一份中中科大的计算机技术本科主要课程结构安排。  数据结构大家最熟悉，大家面试刷的算法题本质上就是对各种数据结构的运用。 计算机基础的学习，理论知识会比较枯燥，建议结合视频公开课，我整理了一些优秀的计算机基础公开课资源： 讲完了后端开发技术体系的「计算机基础部分」，关于C++后端开发的其他技术点，以前我花了半个月时间整理过，就是下面这篇1 万 5 千字后端开发完全学习指南，对各个知识点的学习已经讲得非常详细，想了解C++后端开发技术栈的同学可以看看： 在完成上述学习内容的同时，可以同步找一些开源项目源码来学习，任何一门编程语言学习都需要多动手，一直看书不动手敲代码的效果也不好，可以试着着用C++造几个轮子玩玩，不仅可以积累代码量，同时也是一件很有成就感的事，编程是个手艺活，无他，唯手熟尔。 还是那句话，对于C++初学者推荐看书+视频的方式学习。 关于如何寻找适合练手的开源项目，我之前帮大家找过一些，适合练手和观摩学习的开源项目： 项目地址和详细介绍，看我下面这个回答，这里就不再搬运一遍了，给个传送门： 你所看到的大神都是在写了无数代码之后，从量变引起的质变，学习C++编程没有捷径可走，总结起来两句话：多写代码，多看书。 当然了，一年时间掌握全部后端开发技术是不可能，但可以做到掌握C++和了解后端开发技术栈。这时候找个像上面招聘要求的那种，C++后端开发相关工作问题不大。 如果你连一年时间都没有，比如学生党只有一个寒假时间想C++入门，我觉得也没问题。某种程度上是对大目标的拆解，分成切实可行的小目标，反而没有那么大的执行压力，解决了大部分人的拖延症。 如果你时间还充足一些，比如很多人想利用研究生两年学习C++，这样时间更多可以安排的内容也更多，学的会扎实一些，其实两年时间认真学习，找一份相关工作问题不大。 最后，在这个短平快的时代，很多人总想给学习界定时间，想速成。但是啊，学无止境，C++ 学习也是一条漫长的道路，不追求一年速成，也不可能一年精通，只要每天都有进步，共勉。 下面这些是我知乎的高赞回答合集，建议大家点赞&收藏，一是鼓励我创作分享，二是方便以后查找！ 2. VS Code 如何编写运行 C/C++ 代码？实战开发经验分享，收获 1000+点赞 2100+ 收藏 3. 你们初刷leetcode时会怀疑自己的智商吗？手把手教会你算法刷题的正确方式，效率翻倍！ 3.  算法与数据结构中，AVL树，红黑树，B树，B+树，Trie树都分别应用在哪些现实场景中？4000+ 收藏！ 2. C++开发有哪些练基础的开源项目推荐？从入门到进阶，安排明明白白，点赞1400+ 收藏3700+ 赶紧点赞和收藏吧~  我是 @程序员柠檬 专注分享计算机编程学习~ 如果回答对你有帮助，码字不易，点赞收藏分享给更多需要的同学~ 更多干货回答和文章，可以查看我的专栏，面向工资编程： 2021.03.05更新：C++常见面试题也整理出来了，需要自取。