自学C语言和C++,有什么好书推荐吗? | 您所在的位置:网站首页 › linux编程基础黑马答案 › 自学C语言和C++,有什么好书推荐吗? |
这个我很有发言权! 我就是自学的C++,秋招找工作时拿了不少互联网一线大厂的offer,最后校招去了字节跳动做后端研发工程师! 说到这里,分享一下我自己以前准备校招过程中做的一些学习笔记,比如C++、计算机基础等的笔记分享给你,也正是因为这些笔记的存在才顺利拿到的字节跳动SP的offer! 后来特意写了一版针对C/C++小白的学习路线,也分享在知乎上了,不少小伙伴打算在寒假跟着好好学! 为了防止大家说我吹NB,先上个我自己的学习路线的大纲图! 这篇C++学习路线主要是面向求职,认真走完前三阶段绝对能帮助你找到一个不错的工作了。 走完全部五个阶段,你可以说自己是一名合格的C++研发工程师了。 下面是我总结的C++高频知识点,建议面试前好好看看 今天再把我以前分享的学习路线分享一波:Linux C/C++ 方向自学路线,万字长文为小白新手打造 | 已拿字节后端研发offer 本文全部内容均为个人原创,摘自阿秀个人学习网站:阿秀的校招学习笔记网站。系统记录自己学习计算机这一路的所思所得,记录自己从一个普通双非学校的学生逐渐上岸成为字节跳动抖音部门全栈研发工程师的点点滴滴,包括但不限于编程语言的学习、计算机基础的学习、算法刷题、校招面试、大厂工作体验等。先高呼一声C++天下第一 我大概是在研二的时候开始学习C++的,后来在研三的时候校招顺利进入字节跳动抖音部门做后端研发,以前就分享过自己的学习路线,但很多人都觉得上手难度比较大,对新手不友好! 刚好我有个还在读大学的表弟,今年大三了,他是非科班转到计算机来的,基本功比较差。 所以我专门花了一个多月写了这篇学习路线,全文超过10000字。 这篇学习路线可以说非常详细了,专门为小白新手打造的,文章润色了好久,配套的资料全部找齐了。 1、先唠两句本篇学习路线主要有五个阶段组成,每个阶段我都推荐的有对应的书籍和视频,对于其中的内容也进行了标注,分为必看和选看两种。 有些内容是必看的,这个一定要看,不可以省略跳过; 有些内容是选看的,有时间就看吧,没有时间可以后期记得再补上! 学习完 C++ Primer 能做什么项目练手或者看什么好的开源项目源码? 2、学习路线这篇文章主要是面向一些小白和非科班选手,如果你有一定基础了,我建议你按照我以前的学习路线去学就行;如果是转行,可以按照现在的这篇学习路线来学。 这篇C++学习路线主要是面向求职,认真走完前三阶段绝对能帮助你找到一个不错的工作了。 走完全部五个阶段,你可以说自己是一名合格的C++研发工程师了。 对于本文中推荐的书籍,当当、JD上均有售相应的纸质版,对应的免费电子版PDF可以在下面这两个仓库找到: 地址1:https://github.com/forthespada/CS-Books 地址2:https://gitee.com/ForthEspada/CS-Books 除此之外,本文也会推荐一些视频获取方式或者视频地址都在对应的推荐视频下面了,大家可以留心一下即可。 下面是本文主要大纲: 我一直建议一些小白选手在入门最开始不要直接去啃书,特别是不要在最开始的时候就去啃一些计算机专业的大黑皮书! 这些书籍好吗? 好,但暂时不适合现在还是个小白的你。 如果你在小白阶段就直接去啃这些内容,妥妥的劝退。 1、郝斌老师的C语言教程(选看)地址:https://www.bilibili.com/video/BV1os411h77o 如果你有别的语言基础,比如Java、Python等,那么郝斌老师的C语言教程就直接跳过吧。 如果你没有别的语言基础,还是看一下郝斌老师的教程吧。 如果你没有最基本的C语言基础,可能连指针是什么内容都不清楚。 那么你在学习C++的时候,比如智能指针那一块会很萌,觉得有些内容看起来云里雾里,前言不搭后语,摸不着头脑。 2、黑马培训班的C++教程(必看)地址:https://www.bilibili.com/video/BV1Tb411j7uM 这个必看!我看的是2017版的黑马C++,现在还有小伙伴在我2019年下的留言回复我。。 最好也跟着视频中一起敲,可能你最开始敲的时候速度很慢,对其中的某些内容也不甚其解,没关系,跟着敲就是了。我以前就是自己跟着敲的,下面是我做的笔记。 关于看一些编程类视频的方法,我以前也分享过自己是如何看视频的,感兴趣的可以看看。 文章地址:看视频的一点小建议 此外,算法很重要,建议面试前好好刷刷相关算法题! 经常在私信里看到有小伙伴问我学习完C/C++或Java、数据机构与算法等后可以去哪里练手和做项目? 其实网上有很多类似的开源题库可以供你联系,今天就 良心推荐一个计算机学习网站,可能是我用过最好的计算机学习网站,可以刷算法、C/C++、Java、硬件、前端等,还有大厂面经、面试真题等。 力扣这种比较知名的网站,我就不说了,今天来安利另一个网站:牛客网,可能计算机专业的学生最应该上的一个网站。 它是我校招找工作阶段最大的助力网站,可以说,没有牛客网就没有我后面那么多的面试邀约以及offer。 牛客网作为国内内容超级丰富的 IT 题库,题库+面试+学习+求职+讨论+考研题库+招聘内推,堪称"互联网求职神器"。 可能是我用过最好的计算机学习网站,可以刷算法、C/C++、Java、硬件、前端等,还有大厂面经、面试真题等。 下面是一些我用过的其中一些比较好的在线题库: 互联网面试面经合集C++/Java练习题库算法-面试必刷101计算机基础必备基础知识练习现在是免费注册的,据我所知后面注册可能要收费了,如果你有类似的需要我建议你现在注册一个,正所谓:不白嫖就是亏!!!嘎嘎嘎! 除此之外,也有各个公司的面试题和面经分享,找工作前认真刷一刷,一定会有很大收获!拿到心仪的 offer!这个不多说,直接看图,各种类型应有尽有。 下面是一些我用过的其中一些比较好的在线题库&面经汇总,分享一波: 互联网面试面经合集C++/Java练习题库算法-面试必刷101计算机基础必备基础知识练习不过现在是免费注册的,不知道后面注册会不会收费,如果你有类似的需要我建议你现在注册一个,一定用得上!不白嫖就是亏!!! 第二阶段、上升这是整个C++学习路线中最重要的一个阶段,依然是从书籍和视频两个方面入手。 如果说第一阶段是带你入门,那么第二阶段就是帮你打好基础,让你在后期的学习中如履平地、不至于根基不稳。 除去基本的语言学习一些计算机基础类知识也不要忘记学习,很多学弟学妹说不知道怎么学计算机网络,我把自己经验分享给你们,帮你们少走弯路! 1、《C++ Primer 第五版》或者《C++ Primer Plus 第六版》这是两本完全不一样的书。 前者,也就是《C++ Primer 第五版》适合一些有基础的选手,封面如下; 选择这本书的人最好是有一些C语言基础的,也就是可以跳过第一阶段的郝斌老师的C语言教程,只看黑马教程的那些人。 当然了你如果有其余语言的基础就更好了。 在看这本书的时候记得不要跳过课后练习题,没必要每道题都要仔仔细细的做,但是每小节后的前2-3题绝对需要自己做一下。 这本书的前8章是基础部分,需要好好看;第9 - 12章为容器、算法这些知识;第13章-19章为进阶一点的拷贝、重载等等知识点。 对于13-19章之间的内容,你可能第一次理解不了,没关系,后期遇到问题再来接着翻对应的知识点就行。 因为我就是这么过来的,比如拷贝构造函数和智能指针部分,我记得我至少来来回回看了三四遍才彻底理解清楚。。。 第二本书,也就是《C++ Primer Plus 第六版》适合小白选手,也就是没有任何语言基础的选手,封面如下: 这本书是完全的小白向书籍,甚至可以说讲的太详细了。 选择这本书的人建议你必须看完第一阶段的《郝斌老师的C语言教程》和《黑马培训班视频》,然后再去买这本书,千万不要去买《C++ Primer 第五版》那本书了。 记得要根据自身的情况来选择不同的书籍。 2、粗看三个侯捷老师的视频看书是一件比较乏味的事,特别是那些大黑书,看起来比较枯燥,因此课题穿插一些视频。 在第二阶段,我建议先粗看一下第三阶段三个必看视频,也就是侯捷老师的STL泛型编程、C++11新特性、内存管理与分析这三门课程。 侯捷老师的全部课程分享地址:我知道看到这里,可能有同学怀疑我在乱说,甚至直接喷我教坏学弟学妹们,刚开始学习就直接看这么高深的东西。。。 为什么要提前看第三阶段的几个视频?第一、我是推荐你在第二阶段视频,但不代表你可以在第二阶段直接上来就看书,看这几个视频的前提是至少学完、看完C++的基础知识后,比如《C++ Primer 第五版》的前八章,至少要看完前八章再来粗看视频。 第二、正如上面说的,看书是一件很容易让人感到乏味的事情,换一种接受知识的形式再回头看书的话,效率一般都会大为改善。猪肉大葱的饺子吃习惯了还想吃吃韭菜鸡蛋的呢。。 第三、侯捷老师的这几个视频是每个学习C++的人都应该仔细看几遍下来的,只看一遍是绝对记不住的。 所以可以在第二阶段先大致看看这几个必看的视频,在第三阶段再来仔细看看这几个视频。 我以前跟大家分享过自己在看视频时候的一些方法,就是下面这篇文章: 但侯捷老师的这几个视频不适用这些方法,侯捷老师的这几门课程,你只需要认真看下去即可,如果你有跟着敲的决心也可以,不打算跟着敲也没事,认真看就行。 你在看这三个视频的时候可能会觉得懵,觉得云里雾里摸不着头脑,不要慌,这是正常的。 觉得不懵,反而不正常。。。 视频中的某些知识点看不懂、听不明白,没关系,接着看下去就行。 不需要理解的很透彻,只需要对其中出现的名词有个大概印象即可。 相遇即是有缘,我最近发现github上有几本不错的算法刷题资料,支持Java、C++、Go三种语言,其中对于面试中考察较多的链表、树、动态规划、数组等知识点讲解的都很全! 如果你算法能力比较弱,比如互联网大厂面试中手撕算法比较差的话,那要好好看看了。 Github高星!支持Java、C++、Go三种语言版本的Leetcode刷题笔记~ 第三阶段、精进1、必看的2本书和选看的2本书具体来说必看的两本书,或者说,必看的两本书和一章节是STL源码剖析、Effective C++、深度探索C++对象模型第三章 而选看的两本书:More Effective C++、深度探索C++第三章以外的部分 为什么要看这两本书和一章? 往近了说,面试会问,这是一个很真实的答案,没办法,人家面试官问啊。 是的,面试会问,稍微正规点的C++面试绝对会问STL库的,而且还可能会根据你的回答来看要不要继续深挖下去。 比如Vector扩容机制、unordered_map和map底层数据结构是什么、哈希冲突如何解决? 往远了说, 《STL源码剖析》这本书带你走进C++下最知名的库的底层,一探其中奥秘,通过这本书和侯捷老师的STL源码视频,你会对STL有一个完全不一样的认识。 那些容器、库函数,会在你写代码和刷题的时候提供事半功倍的效果,值得看。 《Effective C++》正是写给那些自以为“精通”了C++的人看的,相信我,C++绝对是一门高深莫测的语言,这本书只是带你管孔窥豹一点它的奥秘,值得看。 《深度探索C++对象》,这是本好书,但内容太冗杂了,最重要的就就是其中第三章虚函数部分。 以前我就分享过,区分C++应聘者的水平高低最好的一个方法就是问他虚函数和STL部分知识点。 这两个部分的知识点,应聘者能答得不错的话,可以说明这个应聘者是学过一些C++的,C++语言的基本功没什么大问题的。 所以第三章虚函数部分,值得看。 选看的两本书不是好书吗?不值得看吗? 不是,它们一样是很好的C++书籍,但是优先级可以往后放一放,找到工作再说。 先把最主要的必看的两本书籍看完再说,这选看的两本书可以后期再看。 2、必看的三个视频和一个选看的视频侯捷老师是台湾的C++大师,学习C++的应该没有不知道侯捷老师的。 以前还很有幸看过侯捷老师视频直播哈哈。 扯远了,必看的视频分别是侯捷老师的STL泛型编程、C++11新特性、内存管理与分析 选看的视频则是侯捷老师的程序的生前死后。 侯捷老师的全部课程:必看的三个视频重要性依次递减,最重要的就是STL泛型编程,最次的就是内容管理与分析。 其中STL泛型编程是帮助你理解《STL源码剖析》这本书;C++11新特性则是帮助你理解《C++ Primer 第五版》中的C++11新特性。 毕竟光看书,纯靠自己理解一些知识点很容易走错路或者钻牛角尖,有人带着会好很多。 第四阶段、实战其实认真学完前三阶段已经差不多了,再去找个项目好好做做,思考钻研一下。 基本C++语言这块,你是没啥问题了,再了解一些数据结构与算法、操作系统、计算机网络、数据库的知识就可以出去可以出去找工作了。 如果你有志在C++这条路上走下去,那你可以接着往下看下去了。 一个好的C++开发工程师对网络编程一定是十分熟悉和了解的,毕竟学习C++不像学习Java那样,能在学习过程中通过搭建自己的网站或者做一些小Demo来获取自我满足感。 正常来说,你在学习C++的过程中,很长一段时间段内陪伴你的都是一个黑乎乎的命令框,网络编程阶段是为数不多你能够获得一些满足感的阶段。 推荐你在该阶段通过自主开发一个服务器来加深自己对网络编程的理解的认识。 我想很多人都会内心OS:”什么?烂大街的服务器项目?秀哥你没搞错吧,怎么推荐我去学这个?“ 其实烂大街的东西,并不代表它不值得去做。 还有就是很多人在简历上写了Web服务器项目,但是实际上都是直接copy的github上的开源项目,可能看都没看懂就说是自己做的项目。 这样的人多了去了。。。 1、两本必看的书、一本选看的书学习C/C++ Linux相关的网络编程,必看的两本书分别是《TCP/IP 网络编程》和《Linux高性能服务端编程》。 前者是本很好的书,原因就是手把手教你写代码,这是真的手把手教你写代码。。唯一不好的点就是书中的很多知识讲的太浅了,很多功能和原理都只是一笔带过,远远不如《Linux高性能服务端编程》讲的深。 我记的这本书好像一共24章左右,每章都是一个例子,也许大家可能被一些广告语上的”手把手教你XXX“坑怕了。 不要担心,这本书真的是手把手教你写各种网络通信的例子。。。 我以前在看这本书的时候专门去 github 上找了别人做好的笔记,一边看别人的笔记一边看书,最后又在别人的笔记基础上删删改改形成了自己的笔记,把书中的例子也敲了个遍。 TCPIP网络编程笔记 我以前手敲的《TCPIP网络编程》的笔记链接:https://pan.baidu.com/s/18XAu8OTsJmX_sfZ1qpmCcw 提取码:fw8s看完《TCPIP网络编程》后,你应该去看有一下游双老师的《Linux高性能服务端编程》。 这本书讲的相当不错,是每一个从事服务端开发的人必备的一本书,《TCPIP网络编程》那本书告诉了你How,这本书则告诉你Why。 还有一本选看的书,是北师大陈硕老师的《Mudo:Linux 多线程服务端编程》。 这本书好,但是有点高深了,而且工业界用Mudo的也不是很多,如果不是从事服务端研发的同学可以不看这本书或者后期有需要了再来看这本书。 2、选看的一个视频陈硕老师以前也在博览网录制了一个跟《Mudo:Linux 多线程服务端编程》配套的视频。 陈硕老师的视频:就如同他的书一样,这个视频的观看门槛一样比较高,如果不是专门从事服务端开发的C++人员,可以不看这个视频的。 第五阶段、大成1、书籍第五阶段的东西其实更多时候是在工作中用到的,比如并发编程、模板元等,对应的书籍有《 C++沉思录 》、《 C++ 模版元编程 》以及《C++并发编程实战》。 在求职的时候基本不需要看这些书籍,这些都属于后期,等你真正拿到offer了,确定从事C++相关的工作了再去看这些书籍。 除此之外,我建议你回归C++这门语言的本源,那就是再从头看一遍《C++ Primer 第五版》或者把它当做一本字典,就放在你的工位上,遇到不确定的当场翻。 2、视频如果你能学到第五阶段,已经很强了,至少比我强的多了。。。 那我就会把我珍藏的几个优秀视频推荐给你吧,基本都是体系原理、分布式相关的视频,在下面这篇文章中: 结语好的 C++开发者从来不怕找不到工作,即使你日后从事 Java/Go的工作,由于语言的原理都是相通的,所以你的学习成本会比别人小的多。 我仔细想了想自己这些年的语言史:大学写了一年的C语言和VB,三年的C#;研究生写了一年的Python,两年的C++;工作了开始写JavaScript、Go以及Vue、React这些框架。 你要问我最喜欢哪门语言? 毫无疑问,绝对是是C++! 不为什么,就是喜欢它的严谨! C++天下第一!!! 种一棵树的最好时间是十年前,其次就是现在,真心希望学弟学妹们以及一些想要转计算机的小伙伴们加油! 如果觉得有帮助的话,不要白嫖我啊,点个赞就足够~ 推荐阅读1、学习完 C++ Primer 能做什么项目练手或者看什么好的开源项目源码? 2、如果你是一个C+面试官,你会问哪些问题 |
CopyRight 2018-2019 实验室设备网 版权所有 |