来源连接:https://blog.csdn.net/TeFuirnever/article/details/103388058?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendHotData-4&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendHotData-4

知乎同步地址:https://zhuanlan.zhihu.com/p/96165809

声明:

1)该文章整理自网上的大牛和专家无私奉献的资料,具体引用的资料请看参考文献。
2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。
3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。
4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦。

文章目录

  • 知乎同步地址:[https://zhuanlan.zhihu.com/p/96165809](https://zhuanlan.zhihu.com/p/96165809)
  • 声明:
  • 资源(^-^)V
  • 〇、写在前面
  • 一、编程能力
    • (1)熟练使用 linux
    • (2)流畅使用 python
    • (3)熟练使用 C++
    • (4)良好的算法与数据结构基础
    • (5)良好的编程习惯
  • 二、C++的其他重要书籍
  • 三、g++, CMake和Makefile
  • 四、shell,vim 和 git
  • 五、操作系统
  • 六、计算机网络
  • 七、数据库
  • 八、Linux提高
  • 九、后台开发
  • 十、总结
  • 参考文章

资源(^-^)V

可以直接去我的WX号,回复【福利】,获取更多资源!

推荐一个可以搜索一些pdf版的电子书的网站——鸠摩搜书,https://www.jiumodiary.com/

比如搜索【深度学习】,

下文中提到的一些书都可以去其中搜索,或者也可以直接百度:

不过百度的坑比较多,但是也是可以尝试的,再或者脚本之家,https://www.jb51.net/books/

如果实在找不到,也可以直接去CSDN的下载区下载,https://download.csdn.net/,淘宝找一个商家下载即可,一般也就一两块。

〇、写在前面

  • 关于深度学习和算法工程师的成长路线在这个博客中,【记录】一个深度学习算法工程师的成长之路(思考和方法以及计划);
  • 关于后台学习和开发工程师的学习路线在这个博客中,【资源】C/C++开发工程师的学习路线(已经无路可退,唯有逆风飞翔),即本文。


事实上19届秋招算法岗就有些【供过于求】了,头条甚至发了 算法劝退贴,而这很大程度上就是由于前几年算法就业形势太好了,导致一大批人转算法,这导致的大泡沫其实还没有消化掉,所以其实不是现在算法突然不好找工作了,而是之前太容易了。其实你说公司真的不缺算法工程师嘛?当然不是,公司也是有算法工程师的缺口的,那为什么出现这种情况?除了要劝退一部分盲目入行的同学;听到、遇到的好几个HR都说,收到几百份简历,但是没什么匹配的。所以说做算法的人多是真的,可是需要做算法的人也是真的,而主要的矛盾点在于 供需不匹配

所以在这个大背景下,加上最近看到好多关于C/C++的学习路线,以及若干大佬的面经,此外也有很多同学询问算法或者数据结构相关的资源,就有了这么一个博客。因为我也在学习,没有办法给出具体的方案,不过下面提到的这些相关的都是必备的,也就是必须要学习的。这个文章应该会是一个【资源】性质的文章,关于 准备学什么需要学什么,希望和各位共勉。

一、编程能力

在这个博客中谈到过,【记录】一个深度学习算法工程师的成长之路(思考和方法以及计划),这里面还是直接拿出来用了。

这真是个老生常谈的问题,为什么这么说呢,自然是因为这个【编程能力】我听过不下几百遍,听的脑瓜子都疼,可是没法子,这就是 必备技能,必备到什么程度?

这么说吧,假如你想写作文,如果你不会写字,组词,造句,我想你应该完全没法完成这个创作过程。很形象吧,但是也确实如此,仔细想一想,招你进去是要干活的,公司不会招聘一个只会 MATLAB 或者 python 都用不熟的人来做项目开发吧,做纯算法研究都不行。

  • MATLAB 大家都懂的,做实验室研究确实很棒,高效方便的矩阵和数组运算,画图方面也相当不错,但是工业应用还没听过谁说是用 MATLAB 实现的呢。
  • python 你可能想问为什么,可以这么说,如果连 python 这样比较简单的语言还用不熟,那真是无话可说。
  • C++ 你更不必说了,因为这是一个开发工程师的主要工具,你的刀都没了还准备打架吗?嗯?

那么 具体地说,编程能力需要哪些基本要求呢?

(1)熟练使用 linux


新手肯定都是用 Windows 起手的了,像我之前就是这样,但是在学习过程中发现在 Windows 上搞不定了,一般也会先忍几次,然后掉头就去学 linux 了,一定是这样的过程。尤其是很多工业上的项目实现都是在 linux 下完成的,深度学习的很多算法也是在 Windows 上真的搞不定,所以 linux 真的是一个必备的工具。。。

但是在条件上可能很多人都觉得不是太合适,比如实验室条件,电脑条件等等,那也没有办法,只能搞起,下面是好久之前询问大佬给的意见,可供参考。

如果是剩下的完全是在使用的过程中现用现学,手边常备一本书 《鸟哥的linux私房菜》,神书,你可以百度或者Google一下自然就知道这个书的强大了。在或者现在的网络比较强大了,资源也是很多,实验楼 也是一个不错的选择,帮你搭配好的环境,直接使用就OK了。如果还是想自己搞一下,虚拟机也是一个不错的选择,不会影响你电脑本来的环境配置,但是还满足了要求。

个人建议

  • 《鸟哥的linux私房菜》
  • 实验楼

linux 内核的推荐放在后面了。

(2)流畅使用 python


网络如此发达的今天,如果你说你找不到资源我是不相信的,但是如果你说你眼花缭乱了,我是毫不质疑的。因为我当时就就是这样的,基础部分看廖雪峰的 python教程 就可以了,我个人有看一些,但是真正入门的是一本书——《Python编程:从入门到实践》,极其的基础,但是对小白来说非常友好。

有的同学会问是学 python2 还是 python3?这么说吧,python 核心团队计划2020年停止支持 python2,也就是说 python2 马上就要说再见了,肯定还是学 python3,遇到之前的 python2 的代码再查找区别即可。python 学起来其实很简单,看别人代码的过程就是学习的过程。对于不熟悉的用法多搜下官方文档,如 python,numpy,pandas,matplot,scikit-learn 等等。

python 的开发环境值得说一下,因为有太多选择,这里比较建议使用 pycharm 和 jupyter notebook 吧,具体可以参考这个博客——Windows10 下 Anaconda和 PyCharm 的详细的安装教程(图文并茂)。

个人计划

  • 《Python编程:从入门到实践》
  • 廖雪峰的 python教程

(3)熟练使用 C++


至于 C++,比较普遍的都是 《C++ primer》 或 《C++ primer plus》 这样的大块头书,我也写过这类的博客,不过还没有写完,因为写起来太累了。。。《C++ Primer》学习笔记/习题答案 总目录,这种特别厚的书有一个什么样的问题呢?

直接看图说话:

怕吗?知道什么叫做恐惧吗?就这?没错,真的厚,,,我服了,但是你还是得看,比如我现在就暂时停下了《C++ primer》的博客更新,去啃《C++ primer plus》了,原谅我的不厚道,对不住了兄弟们,我实在是觉得《C++ primer》的逻辑有点异于常人。。。《C++ primer plus》更适合我一点,最近正在写《C++ primer plus》的课后题:https://github.com/TeFuirnever/Cpp-Primer-Plus,有一起的小伙伴可以关注一下。

入门之后就需要看一下《Effective C++》这本书了,可以说是必须要看的书之一,不过有大佬跟我说看过《C++ Primer》之后就不用了看《Effective C++》这本书,因为基本都包含在内了。。。你可以试一试。

看完上面的书之后(大块头书优点在于全面,同时也往往导致了重点不突出),可以看一下 《王道程序员求职宝典》,这类书就是比较实用,推荐可以后期提高或者准备面试之前看。

如果想看视频课程的话,推荐中国慕课上浙江大学的 《程序设计入门——C语言 浙江大学》,《C语言程序设计进阶》,第一个课是非常基础的C,第二个课是进阶加上一些数据结构,目前还在更新中,不过看视频课程一般比较慢,但是如果没什么基础或者特别想把基础学好的话,强烈推荐。

个人计划

  • 《C++ primer》
  • 《C++ primer plus》
  • 《Effective C++:改善程序与设计的55个具体做法》
  • 《more effective C++》
  • 《程序设计入门——C语言 浙江大学》
  • 《C语言程序设计进阶》
  • 《王道程序员求职宝典》

(4)良好的算法与数据结构基础


开发能力如果想过关,算法效率必须要高,因为在实际生产中还是有要求的。因为工业界用的算法是滞后于学术界好几年的,所以不要对公司所做的算法有太多的幻想,现实用的算法也没有那么高端,大部分时间都不是用在建模,而是在开发,这也就是说你要好好准备算法与数据结构,这样你就立于不败之地了,无论是啥,都能游刃有余,懂不?

道听途说的,某师哥说过进入公司培训期间就是刷LeetCode!?!

个人计划

  • LeetCode
  • 牛客网
  • 《剑指offer》(准备校招刷一遍,校招过程再刷一遍,哪里不会刷哪里)
  • 《算法图解》(python写的,算法的入门书籍,写的真的牛逼,通俗易懂,之前写过 笔记,其实就是偷偷抄了抄书,写了写个人看法)
  • 《大话数据结构》(c语言写的,数据结构的入门书籍,写的真的牛逼,和《算法图解》一样,都是神书,作者自嗨写成了教案,你说牛逼不)
  • 《算法导论中文第三版》(这是本神书。。。据说你要是能看完就是大佬了,如果能看懂部分就是大牛,如果能全部看懂那你一定是在吹牛逼,骗谁呢兄弟???)
  • 网易云课堂-浙江大学《数据结构课程》(推荐,0基础学生的必备良药,基础视频,每节课的配套题目必须独立完成)
  • 《程序员代码面试指南》(左程云,好书,配套左神的视频使用效果更佳)

(5)良好的编程习惯


这里说的习惯有:多使用类,多利用函数封装,写好项目的目录结构,良好的变量或者函数命名,善用程序的注释功能。这可以帮助你更好的和同事或者同行沟通,而且看着也舒服,就算好久不看程序了,依然可以做到很好的回溯记忆。

这个真的是一个很重要的但是被好多人忽略的习惯,希望咱们能跳过这个坑,让自己更具有影响力。

二、C++的其他重要书籍

《STL源码剖析》是一本 STL 方面的神书,介于 STL 的地位,虽然是一个很老的书了,很多内容都过时了,比如空间配置器,但是面试官还是会问。。。可以跟面试官讲讲 ptmalloc 的实现,故而整本书都是重点,有没有回到高中或者上学的时候那种感觉,老师说划重点了,整本书都是(微笑)。

《深度探索C++对象模型》基础书籍,虽然基本只会问虚函数的实现,看一篇博客也能应付面试,但是还是建议多看几遍。比如某大佬(当然不是我)表明自己STL和对象模型我都看了3遍以上,因为太容易忘了,所以还没开始的我和你赶紧的吧。

个人计划

  • 《STL源码剖析》
  • 《深度探索C++对象模型》

三、g++, CMake和Makefile


关于部署在移动端嵌入式平台,需要使用 c / c++ / java 语言,g++,CMake 和 Makefile 正是 Linux 下编译 C系代码 的工具,也是必备的基础。实际上一些开源项目也需要预编译,更多的等到了工作岗位自然懂。

个人计划

  • g++
  • CMake
  • Makefile

四、shell,vim 和 git


Linux 下一个熟练的工程师,会比 Windows 下工作效率高很多,提高写代码效率可以从终端多任务管理,熟练使用 shell 命令,熟练使用 vim 等开发环境,熟练使用 git 命令等地方入手。

  • shell 命令是 Linux 的操作基础,也是学习使用 Linux 的开始,而慢慢熟悉高级的 shell 命令在将来的工作中会带来很大的效率提升。
  • vimLinux 下最常用的编辑器,从小白到高手都可以使用,而它的列编辑,查找替换,自动补全等功能都是效率的保证,或许从 visual studio 等环境切换过来的同学刚开始会有些许不适应,但是时间久了就会越来越明白 vim 的好。
  • git 是程序员必备的素养,慢慢学会维护几个自己的代码库,等到将来出问题的时候就明白了。

个人计划

  • shell
  • vim
  • git

五、操作系统


《深入理解计算机系统》(CSAPP),一本神书,极度推荐*****,号称比同等质量的金子更加之前的书,这个评价一点也不为过,是一个必读的书籍。

《现代操作系统》,建议在读完上一本书后再读,讲述操作系统的概念,可以配套网易云盘北大或者清华的操作系统课程视频,这样效率会高很多,不然自己摸路实在是。。。不想说了,就这样吧。

《UNIX环境高级编程》(APUE),同样是一本强烈推荐的书籍*****,尤其是如果想进鹅厂(腾讯),建议此书列为必读,如果能够理解这本书的内容,网络编程不会是你拿到offer的拦路石。

关于想去哪一个公司,可以留言区发表一下看法,我们探讨探讨,共同努力,话不多说,我想去字节。。。不过现在还只是在做梦中。。。

还有一个一个牛客推荐的——MIT6.828的这门课,要求自己设计出一个简易的操作系统,是一个极好的实践项目(7个lab),如果有机会就建议搞一下,因为这可以作为作为项目的东西。

个人计划

  • 《深入理解计算机系统》
  • 《现代操作系统》
  • 《UNIX环境高级编程》
  • 《MIT6.828》

六、计算机网络


不知道你们本科学没学过计算机网络,如果学过的话应该会好一些,虽然学的比较水,但是聊胜于无。本人在本科学过的《计算机网络 自顶向下方法》,这本书虽然厚,虽然是翻译版本,但是真的不错。

《图解TCP/IP》,这本书非常的简单明了又很薄,只要花上三天时间就能大概读完。多读读这本书还是挺有好处的,基础数据,又有图,可以说是很友好了。

《TCP/IP详解》卷一,一本进阶书籍,属于必读的书籍之一,其中的12-16章是重点,TCP、IP、UDP等等。

其它部分看书太麻烦了,直接从博客里看了。

个人计划

  • 《计算机网络 自顶向下方法》
  • 《图解TCP/IP》
  • 《TCP/IP详解》卷一
  • 博客。。。

七、数据库


很多面试官都会问一下,你是不是学过数据库,如果没有的话,大概就不会问了,不是什么特别影响的事。

《数据库概论》基础书籍,快速读过一遍就可以了,重在了解概念与基础,相当于是个入门级别的。

《Mysql必知必会》基础书籍,快速了解mysql的好书,强烈推荐,Mysql(关系型数据库管理系统)是一个很重要的数据库知识,是 SQL 语言是用于访问数据库的最常用标准化语言。

《高性能mysql》,这个书只要读前面索引和性能的部分即可,除非你有很多时间去准备,这样就随便了,我是不行了。。。

如果问了数据库的话,也不会太多,校招时间有限,所以建议基础先打好,后续再学习更深入的部分。

个人计划

  • 《数据库概论》
  • 《Mysql必知必会》
  • 《高性能mysql》
  • 牛客网

八、Linux提高


Linux 环境编程 apueunp 两本是必须的,但是因为太厚了,看起来还是有点痛苦的,还好是不需要全看的,而且内容重叠很多。大佬推荐:unp 卷1前面8章是重点,卷2前面4部分都挺重要的;apue 全部,先是要有个概念,自己写代码的时候就知道哪块重要了。

《深入理解linux内核》,这本书是挺有名,不过很多人都是完全啃不动,一个大佬推荐《linux内核设计与实现》,外加一大堆博客,除此之外,《深入理解计算机系统》讲的东西比较简单,可以作为一个补充。

《Linux多线程服务器端编程》,陈硕的书,讲 muduo 网络库的,如果你能看好多遍的,收获肯定是非常多的。另外前面部分是后台开发的一些经验之谈,对面试也很有用。还有好多项目都是基于 muduo 实现的,基本上是必读书籍了。

《Redis设计与实现》也是一本看完之后感觉特别好的书,很值得学习,可以很快就看完。有很多重要的数据结构可以在面试的时候讲出来,比如跳表、redishash 表等等。

《深入理解Nginx》也是极其经典的一本书,因为 nginx 太经典了,很多面试官也都提到过,所以可以看一下。

一个大佬还推荐了,短小精悍的源码——leveldb,对照博客就可以把 leveldb 源码看完,并不需要多长时间,在此基础上还可以了解一下 rocksdb

《Linux内核完全剖析——基于0.12内核》,这个书好像之前CSDN上有人下载过,具体的忘了。

个人计划

  • 《apue》
  • 《unp》
  • 《深入理解linux内核》
  • 《Linux多线程服务器端编程》
  • 《Redis设计与实现》
  • 《深入理解Nginx》
  • 《leveldb》
  • 《rocksdb》
  • 《Linux内核完全剖析——基于0.12内核》

九、后台开发

《后台开发:核心技术与应用实践》是腾讯的员工写的,虽然这本书评价比较差,几乎都是抄的博客,但是内容上总结的很好,可以认为就是给咱们校招的同学写的(原来抄博客就能写书,那我岂不是也能写书了),都是后台开发需要的基础知识的总结,这本书中内容所代表的知识,基本都是腾讯的C++后台开发工程师所必备的基础,可以作为一个复习提纲。

十、总结

这就是一个拉锯战,谁能站到最后,谁就通吃,就是这么简单又残酷的道理,建议多看看面经,就知道自己有多菜了。。。共勉。

留言区有话就留言,可以一起加油,一起努力,已经无路可退,唯有逆风飞翔。

如果有幸帮到你,请帮我点个【赞】,给个【关注】!如果能顺带【评论】给个鼓励,我将不胜感激。

如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~

想看更多文(段)章(子),欢迎关注微信公众号「程序员管小亮」~

参考文章

  • 【记录】一个深度学习算法工程师的成长之路(思考和方法以及计划)
  • 我的C++后台/基础架构岗位学习路线(offer大多是ssp
  • 送你一个励志故事——涵盖20多所互联网公司的校招C++面经

一个C/C++开发工程师的学习路线相关推荐

  1. 【资源】一个C/C++开发工程师的学习路线(已经无路可退,唯有逆风飞翔)【内附资源页】

    知乎同步地址:https://zhuanlan.zhihu.com/p/96165809 声明: 1)该文章整理自网上的大牛和专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非 ...

  2. 成为一个大数据开发工程师的学习步骤--文字版

    本博客搬运自我知乎所出视频成为一个大数据开发工程师的学习步骤? - 知乎大数据的学习是有条件限制的,首先你需要是一名普通的工程师,如果你是Java工程师的话更好,但如果你是小-https://www. ...

  3. 成为一个大数据开发工程师的学习步骤?

    大数据的学习是有条件限制的,首先你需要是一名普通的工程师,如果你是Java工程师的话更好,但如果你是小白的话,那就只能成为一名工程师的后再来学习大数据. 一.认识大数据 大数据本质其实也是数据,不过也 ...

  4. 一个ABAP中级开发工程师应该学习什么

    文章目录 1 Alv 2 Smatforms 3 Dailog 4 Interface 5 Enhancement 1 Alv Alv is often used in the sap. We dem ...

  5. 想成为一个Web前端开发工程师,需要掌握的详细知识总结

    前端工程师已经成为目前互联网企业极具竞争力的人才,企业不断提升薪资水平为了招聘到优秀的Web前端开发工程师.因此,越来越多的人想要学习Web前端.那么呢?Web前端的学习路线是什么? 想成为一个Web ...

  6. C/C++开发进阶的学习路线

    这一阶段的目标才是达到C/C++软件工程师开发行业的基本要求,这个阶段是走向C/C++开发的进阶之路,更是一个让自己找份薪水比较体面的工作的筹码. C/C++开发进阶的学习路线 1.C++进阶之STL ...

  7. 服务器后端开发技术完整学习路线,23张思维导图,自学也能进大厂!

    本文已收录于Github:https://github.com/imcoderlemon/CodeClass 内含原创干货文章,千本计算机电子书,3本LeetCode题解,各类编程资源 大家好,我是柠 ...

  8. 想成为一个Web前端开发工程师,需要掌握哪些知识?

    前端工程师已经成为目前互联网企业极具竞争力的人才,为了招聘到优秀的Web前端开发工程师,企业不断的提升薪资水平.因此,有越来越多的人加入到了学习Web前端行列.那么,想成为一名web前端开发工程师需要 ...

  9. mysql数据库工程师 课程_数据库开发工程师需要学习哪些课程?

    展开全部 数据库开发工程师需要学习的课程有: 1.计32313133353236313431303231363533e58685e5aeb931333365646263算机导论 内容提要:为新学生提供 ...

最新文章

  1. J. Cheminform. | GraphSol:预测接触图助力蛋白质溶解度预测
  2. C#速成之一(Quick C#)
  3. cassandra java driver
  4. operator did not match Pytorch‘s Interpolation until opset 11
  5. 如何跟程序员谈一场没有Bug的恋爱
  6. 【Redis】新浪微博与微信Redis架构实战 - 笔记
  7. html 字体图标转换工具,字体图标的制作方式
  8. 吴恩达神经网络和深度学习-学习笔记-23-快速搭建你的第一个系统原型,然后迭代
  9. Android 多媒体开发学习之加载大图片
  10. 反射的应用之动态代理,顺便复习静态代理
  11. cisco路由器IOS灾难恢复
  12. JavaScript制作游戏摇杆方向盘
  13. 第53天-代码审计-TP5 框架及无框架变量覆盖反序列化(待续)
  14. Software Testing - Browser Driver在Selenium中的作用是什么
  15. Apereo CAS 5.0.X 配置数据库认证方式
  16. 什么是复制和交换成语?
  17. 蘑菇街按关键字搜索mogujie商品 API 返回值说明
  18. IDEA的下载及安装
  19. linux txt file busy,linux使用cp报错 Text file busy
  20. XML Schema(W3C)数据类型

热门文章

  1. Java11新特性一览
  2. 本周学习积累:关于服务器相关软件的使用
  3. 中信建投计算机研究武超则,中信建投证券--计算机行业:华为投资鲲鹏产业生态,加速国产化进程(4页)-原创力文档...
  4. 一代BPU,两款处理器,余凯发布地平线AI芯片:左手智能驾驶,右手摄像头
  5. 非财务人员如何看懂企业财务报表
  6. 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八3、FPS——武器系统1)
  7. 微信跳一跳开外挂 | Mac+IOS+python
  8. 算符优先分析法的简单实现
  9. linux cgroup 原理,[mydocker]---Linux Cgroup
  10. 形式参数与实际参数(C语言)