其实在网上有很多大佬分享的c++学习路线,本人主要也是为了记录一下自己的学习过程。其实c++找工作还好,校招对于语言要求不高,但是要把基础学好,如果要是想找互联网相关工作,那么就需要自己在网上找一些互联网相关的项目,比如我个人就是在网上找的“web服务器”项目,在面试过程中被多次问到。本文主要分为c++学习、计算机网络、操作系统、数据库几部分分享。如果对我写的内容感兴趣,欢迎关注微信公众号“爱折腾的码农”,二维码见下图。原文链接:https://mp.weixin.qq.com/s/hAyysmQYtTOh-jg9UlmAMA
c++学习和数据结构
首先需要看《C++Primer》(经典书籍),不需要看完(看一遍有些大体的印象,这本书相当于一个工具书),但是要对c++基础语法、容器等有一定的了解,然后可以去CSDN、掘金找一些好的博客或者微信公众号看一看,加强印象,本人推荐"陈同学在搬砖"这个公众号,内容分享挺不错的。之后看《STL源码剖析》了解容器底层的实现原理(这部分也可以看公众号前几篇文章,我把自己认为比较重要的东西摘抄出来了),《More Effective C++ 35个改善编程与设计的有效方法 中文版》、《Effective C++》一定要看,面试过程中可能会遇到,比如说RAII、编译器底层优化、智能指针、const常量等。《深度探索C++对象模型》最好看完,如果时间不够的话,可以着重看书里面的虚函数讲解部分,在面试的时候问到“动态多态”的时候可以答一些,之所以要看这些书的原因是:如果只被面经的话,在面试过程中根本没有优势,没有自己的亮点,所以需要自己去看一些底层实现原理(可以看书或者技术分享)。
接下来就是学习数据结构,可以看一下《大话数据结构》,了解基本数据结构,刷力扣(LeetCode)中的“探索”频道,如果遇到不懂的地方可以去b站看视频。我是因为本科学过这门课,所以看了《大话数据结构》以后就去力扣里面刷题,如果没有基础的话,建议视频+书(主要是《大话数据结构》,简单易懂;视频可以去MOOC搜索浙大的数据结构课程)一起看。
操作系统
首先看《深入理解计算机系统》,对计算机有个大体的概念,然后针对虚拟内存、分页分段段页式、进程的区别线程、锁机制、进程通信等常问知识点去看一些博客或者公众号,为了在面试回答中有些亮点,推荐看一下《Linux内核设计与实现 第3版》这本书,里面讲的内容非常有用,介绍了很多linux底层的设计原理,我在面试中的很多答案就是从这里面总结的,很有用。等写完c++这部分内容以后我也会把操作系统这部分内容分享出来。
计算机网络
首先可以看看谢希仁的《计算机网络》,在脑海中有一些概念,之后去看一看《TCP-IP详解卷1:协议》、《图解计算机网络》,对于tcp详解卷2的话,如果学有余力可以看一看。另外,如果要做web服务器项目,需要看《图解HTTP》、网络编程(《Linux多线程服务端编程:使用muduo C++网络库》、《UNIX环境高级编程》、《Linux高性能服务器编程》)相关书籍,其实这些书籍没必要一下子就记住,可以多看几遍,在脑海中加深印象。最后,可以常去CSDN、掘金这样的技术论坛看一些别人分享的内容,有很多bat大佬都做公众号,里面分享的内容非常好、非常详细。
数据库
这部分内容可以看《MYSQL45讲》、《redis设计与实现》、《高性能MySQL》,其实这个主要学习一些底层原理和常问知识点,比如B树和B+树的区别、隔离级别、事务、锁机制。。。,其实这部分我主要是看别人分享的技术资料,遇到看不懂的就去网上百度。
总结
首先基础知识一定要学好,每种语言都有不同的特性,要去看一些底层原理或者源码;然后就是多刷题(至少三四百道,剑指offer必刷三四遍),多去牛客看面经,这都是大家面试以后分享出来的,相当于真题,根据这些面经可以做一些笔记,方便自己复习,毕竟“好记性不如烂笔头”嘛。最后,对于面试过程可以录音,方便之后复盘,查找自己在面试中的问题。