C++后台开发学习路线

2023-05-16

C++后台开发学习路线

  • 学习建议
  • C++基础
  • 数据结构与算法
    • 数据结构
    • 算法
    • 刷题
  • 操作系统
    • 操作通用知识
    • Linux
    • 内核
  • 计算机网络
  • 数据库
  • 设计模式

作者:玩铁的搬砖工
链接:https://www.nowcoder.com/discuss/164781?type=2
来源:牛客网

学习建议

对于技术岗,软件基础知识可以说是个人的硬实力,是你能通过面试的一个大前提。而说到软件基础的学习,对于很多还没有基础的同学可能会有点懵逼,软件基础知识这么杂,技术书籍这么多,该从何看起呢?先不用慌,当初的我也和你们有一样的困惑,之后一步步挖坑填坑,才构建了比较完整的知识体系。自己回头想想,如果当初还是小白的时候,就能确定一个比较合理的学习路线,对知识由浅入深的进行学习,学习的过程肯定会顺利一些,效率自然也会更高。因此,我会根据自己的学习经历,结合软件基础的几大板块知识,制定一个合适的学习路线,希望能让正在学习的同学们少走一些冤枉路!

首先,对于软件基础知识的学习,建议尽可能地去看一些经典的书籍,看第一遍的时候可以不用太过细致,快速地看,重在了解这本书的知识框架,在把握了整体的逻辑框架之后,第二遍就可以详细学习各章节的细节,这个时候也能根据自己的情况,选择性地去看一些相对重要的章节,效率会更高。对于一些经典的技术书籍,只看一两遍很难完全理解其中的精髓,之后可能还要多次地回顾,也可能在实际应用中再来回顾书中的理论知识,也能更深入地进行理解。例如深入理解计算机系统这本书,内容非常经典,很多地方当你再看一遍又会有不一样的理解和体会。

每看完每本书,都要学会去做笔记,对自己所学的知识进行总结消化,笔记中的内容才是自己的东西,而且在我们学习的过程中难免会对一些知识点的理解有所偏差和不足,笔记能够很好地帮助我们发现这些问题,然后加以纠正并很好地记录下来。

软件基础主要分为这几大板块:C++基础、数据结构与算法、操作系统、计算机网络、数据库、设计模式和一些常用工具。

C++基础

  • C++ Primer 第5版
  • STL源码剖析(侯捷 著)
  • 深度探索C++对象模型(侯捷 译)
  • Effective C++(侯捷 译)

软件学习中,语言肯定是最基础的,由于C++较低层,语法非常灵活(比较适合写算法),就导致语法规则比较繁杂,而且涵盖了C语言的内容,学习C++语法相对python、java等其他高级语言时间成本更高一些。

学习C++语法,首推C++ Primer 第5版,C++语法学习的最权威书籍,以C++11来讲解,非常全面地讲解了C++的语法以及C++11的各种新特性,看完帮助很大,如果有时间建议至少看两遍,时间有限的话,建议至少通读一遍,把握这本书的大体框架,然后结合个人情况选择性地去看一些重点章节。

STL 源码剖析这本书讲解了C++底层实现,内容包括C++底层内存管理、各种容器的数据结构实现、常见算法的实现等,建议列为必读,可以帮助深入理解C++底层,同时也是对数据结构的复习和巩固。其中也有很多面试常考的知识点,如内存池的机制、traits技法、一些常用容器的底层数据结构等。

深度探索C++对象模型这本书讲解了C++面向对象特性的底层实现机制,由于是翻译版本,读起来内容会相对晦涩一些,但是内容非常重要,尤其是虚函数底层的实现机制,建议多看几遍加深理解,这个基本是C++必问的知识点。看完这本书,对C++面向对象的理解帮助极大,建议必读。

Effective C++这本书主要讲解了编写C++程序的过程中需要注意的一些条款,有助于梳理在编写C++程序时的一些常见错误和注意事项,也是面试常考的。如果认真读过了C++ Primer,这本书看起来会非常快,其中的很多内容都包含在C++ Primer中了。

总之,C++由于它自身的特点,学习起来不会很轻松,需要一定的时间成本,但是如果你认真的学习了以上4本书,你会对C++有一个新的认识!相信我,等你学好C++,再学习其他高级语言会觉得轻松许多!

数据结构与算法

数据结构

  1. 大话数据结构
  2. 浙大数据结构网上课程(B站链接)

算法

  1. 算法 第4版(是以java来讲解)

刷题

  1. LeetCode中文网站
  2. 剑指offer 第2版(建议至少刷两遍)
  3. 程序员代码面试指南(左程云 著)

数据结构可以说是软件设计的精髓,建议将基础打扎实。大话数据结构这本书对于新手,很适合作为入门,用于建立数据结构的知识体系,另外浙大数据结构网上课程也非常不错,B站上直接可以搜到,讲解简明易懂,弥补了大话数据结构中一些讲解不清楚的地方。在学习了数据结构的基础后,可以开始学习算法,建议学习算法这本书,可以帮助你梳理一些常用算法的原理和应用。

专门针对面试的算法学习非常推荐牛客网左神的算法课,我之前找工作有学习左神的课,感觉帮助很大,在此也支持一下左神。课程内容包括初级、中级和高级班,初级班帮助小白入门,系统地讲解了基本的数据结构和算法,并配合对应的编程题进行讲解,非常系统且有针对性,涵盖了很多高频面试题;中级班和高级班作为进阶,会讲一些比较难但是很好的算法,同时也会讲到很多好的例题,能够帮助开阔眼界,如果在面试中聊到会让面试官眼前一亮。具体买什么课可以根据自己情况,对于学生党可能觉得有些小贵,建议可以几个同学一起购买,毕竟对于知识的投资可以带来很大的回报。

在学习视频课的同时建议配合左神写的程序员代码面试指南这本书,学习效果会更好,其中讲解的编程题都非常经典,不仅仅限于国内的IT公司,而是面向全球,包含了国外知名IT公司的一些面试高频题,可以帮助开阔视野。

在学习数据结构与算法的同时,建议同步学习C++语法知识,两者基础都学习完之后,就可以刷题了,而在刷题的过程中,可以同步学习STL 源码剖析,有助于你更游刃有余的去使用STL,提高代码效率。刷题的话,建议先刷LeetCode,英语不好的可以到LeetCode中文网站,LeetCode中有一个数据结构的探索专栏,根据难度,分为初级、中级和高级,基本覆盖了各个知识板块的面试高频题,可以帮助新手循序渐进地刷题,培养写代码的感觉。另外的话,剑指offer这本书中也涵盖了很多面试高频题,可以到牛客网的剑指offer专栏中刷题,由于题目难度划分层次不太明确,新手刷起来效率会偏低,建议在刷完LeetCode探索专栏中的初级、中级之后,再去刷剑指offer的题目,其中的题目在面试中出现的非常高频,建议最好刷两遍,熟练掌握每道题的思路和优化方法。

在刷题的过程中,要非常注意方法,一般将刷题方法分为龟系和兔系。龟系刷法的精髓就是每个题目要注意质量,不要满足于一种解法,各种解法都尝试写一写,并对比它们的时间空间复杂度。但龟系不是说在一道题上耗死。越是龟系越要注意时间上要掌握好分寸,能解出来最好,解不出来也不要倔强。我觉得比较好的一个平衡点差不多是一个小时。如果一个小时还是解决不了,可以看看提示,如果还是解决不了,可以看看讨论区的答案或者网上搜索答案。兔系刷法精髓就是要暴力,天马流星拳,大力出奇迹。作为兔系选手,讲求的就是要疯,一上来就看答案,照着答案写。这个做法看起来不靠谱,其实它有内在的合理性:大部分算法都不是我们发明的,如动态规划,二叉树,线段树,并查集,贪心算法等等,到后来所谓的不看答案自己做出来,其实都是在用固定套路。另外编程题的知识点很多很杂,LeetCode中将题目分为各种标签,建议对标签按照广度优先的顺序去刷题,刷题尽量覆盖每个标签。我个人更倾向于龟系,这种方法能够更好地理解每道题的方法套路,也能训练自己的思维,毕竟刷题不是题海战术,刷题质量更重要,每刷完一道题,最好将其中的思路方法记录下来,然后定期做总结,对一些常用方法进行总结分类,慢慢的会发现刷来刷去就是那些套路,你会对它们了然如胸。

操作系统

操作通用知识

  • 深入理解计算机系统 第3版(CSAPP)
  • 操作系统 精髓与设计原理 第8版
  • 程序员的自我修养

Linux

  • 鸟哥的Linux私房菜 第4版(用于了解Linux基本命令)
  • UNIX环境高级编程 第3版(APUE)
  • Linux/UNIX系统编程手册(上下册)

内核

  • Linux内核设计与实现(LKD)
  • 深入理解Linux内核

在语言基础和数据结构之外,操作系统可以说是面试考查最多的内容了,在面试中很可能会问的比较深,毕竟操作系统是很深奥的!

学习操作系统知识,可以先看深入理解计算机系统,操作系统方面的神书,内容非常经典,而且比较通俗易懂,适合入门,软件的话建议先学习第二部分和第三部分,再根据个人情况学习第一部分。然后再学习操作系统 精髓与设计原理,这本书比现代操作系统更通俗易懂,可以结合CSAPP一起看,两本书的知识点相互有所弥补。看完前面两本书,如果想对编译链接的原理进行深入学习,可以参考程序员的自我修养,这本书非常详细的讲解了程序编译过程中的具体细节。

另外,针对Linux进行学习,可以先看鸟哥的Linux私房菜,快速看,主要是了解Linux基本命令。进一步学习系统编程,可以学习APUE,其中讲解了Linux/UNIX常用系统编程接口的使用方法和对应的应用实例,由于这本书有些理论知识讲解地比较简略,而Linux/UNIX系统编程手册讲解更为详细,建议两本书结合着看。

在学习完前面所说的操作系统书籍之后,如果还想对Linux内核原理进行学习,可以看Linux内核设计与实现和深入理解Linux内核,由于后者更加偏重理论细节的讲解,看起来比较晦涩难懂,容易陷入细节。而 LKD这本书以实践为主,没有赘述很多细节,主要是结合各个模块,以宏观的视角来讲解,能帮助你快速建立比较完整的的知识框架。建议先学习后者,再学习前者,这样可以更好地去理解各个知识板块的逻辑关系和细节实现。

如果有同学对操作系统底层知识感兴趣,可以看我一个朋友的博客 底层知识学习记录,总结的非常不错,看完会非常有帮助!

计算机网络

  • 计算机网络 第7版(谢希仁 著)
  • TCP/IP详解 原书第2版(卷1)
  • UNIX网络编程 第3版(卷1)

学习网络,可以先看计算机网络这本书,讲解通俗易懂,前面的物理层和链路层可以快速看,了解基本原理即可,重点学习网络层、传输层和应用层,其中传输层的TCP和UDP是面试最常考的,非常重要。网络的知识比较容易理解,但是知识点比较繁杂,一段时间不看就很容易忘记,建议学习之后将各个知识点整理成文档或者笔记,有助于找工作前复习。

学完计算机网络,可以基本建立计算机网络的知识体系,但是这本书深度不够,建议继续学习TCP/IP详解 卷1,作为对TCP/IP协议的深入,这本书讲解非常细致,看的过程中很容易陷入细节,对整本书系统学习的话比较花时间,如果时间有限的话,可以先选择性地学习一些章节,建议先将传输层的内容看完,有助于对TCP和UDP的深入理解,其他层的内容可以根据个人情况选择性的学习。

学习完前面两本书的基础知识,就基本掌握了计算机网络的理论知识,建议将这两本书列为必读。另外,如果想要对网络编程进行实践,可以继续学习UNIX网络编程 卷1。

数据库

  • 数据库系统概念 第6版
  • mysql必知必会
  • redis设计与实现

数据库的知识面试问的不多,但是数据库对于以后工作是肯定会用到的,如果有时间建议将基础打好,可以先看数据库系统概念,了解数据库的基础知识,然后阅读mysql必知必会这本书,可以帮助你快速学习 mysql 的基本语法。

设计模式

  • 大话设计模式

对于设计模式,如果没有大型软件的项目经验,这方面的能力很难体现出来,所以可以作为知识点的扩展学习,对其进行了解即可,面试常考的有单例模式、工厂模式等常见的设计模式。

以上知识的学习路线和相关书籍,是我结合自己的学习经历总结的,不一定适合所有同学,但我相信大的方向还是具备通用性的,在学习过程中可以作为参考,也可以根据自己情况灵活调整自己的学习路线,找到自己认为最有效率的学习计划。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++后台开发学习路线 的相关文章

  • CAN总线中Bus Off后快慢恢复时间的测试方法介绍

    距离上次更博以过去数月 xff0c 今日难得忙里偷闲 xff0c 有如此时间来对测试中常见的Bus Off问题进行介绍 xff0c 帮助大家加深对CAN总线的理解 1 什么是 Bus Off xff1f Bus Off xff0c 顾名思义
  • CAPL编写TestCase常用函数及使用方法介绍

    哈喽 xff0c 好久好久好久不见 xff0c 已经记不清是断更的多少天了 xff01 从今天开始为大家带来一些有关自动化测试脚本编写相关知识分享 xff0c 主要是基于VECTOR的相关工具链进行脚本开发 xff1b 废话不多说 xff0
  • 玩平衡小车系列—TB6612FNG与直流电机控制教程

    xff08 基于平衡车之家做的标准版小车 xff09 1 直流电机原理 下面是分析直流电机的物理模型图 其中 xff0c 固定部分有磁铁 xff0c 这里称作主磁极 xff1b 固定部分还有电刷 转动部分有环形铁心和绕在环形铁心上的绕组 其
  • http请求带Authorization

    Authorization 用户凭证 基本概念 授权authorization是指 xff0c 根据用户提供的身份凭证 xff0c 生成权限实体 xff0c 并为之授予相应的权限 方法 在接口自动化测试中 我们会遇到Authorizatio
  • Vue-Waterfall-Easy插件详细使用教程

    前言 自己在做信息管理系统后台所遇到的一些问题 xff0c 困扰了我好几天 xff0c 于是将这个用法记录下来 xff0c 希望能够大家在学习vue的道路上一路长虹 我想要展示一些照片 xff0c 展示大学课余生活以及一起参加活动的一些片段
  • 机器人操作系统ROS(9)Gazebo物理仿真(摄像头仿真)

    前期 需要完成机器人操作系统ROS xff08 8 xff09 arbotix控制器控制小车运动 物理仿真实验 机器人底盘仿真 我是自己创建了一个工作空间model gazebo xff0c 创建方法 xff1a 参考 xff1b 如果按照
  • 机器人操作系统ROS(18) 在ROS中使用OpenCV进行简单的图像处理---代码实现篇

    本文转自 ROS学习笔记 xff08 2 xff09 xff1a 在ROS中使用OpenCV进行简单的图像处理 代码实现篇 Vector0805的博客 xff0c 如有侵权 xff0c 请联系删除 实例 xff1a 从ROS中读取图象 xf
  • ROS-Academy-for-Beginners之ORB-SLAM2 双目视觉初探

    现在我们跑通了ROS Academy for Beginners 按照 https www guyuehome com 33866 的方法修改对应的文件 xff0c 重新编译 终端1 xff1a span class token built
  • Ubuntu16.04 (ROS)下通过CAN分析仪(USBCAN/CANalyst-II)调试无人车助力转向电机(1)

    调试流程 1 测试USBCAN CANalyst II工作是否正常 2 使用PC端的上位机测试转向电机是否正常及指令测试 3 测试USBCAN CANalyst II提供的Linux x64的例程 4 移植Linux x64的例程到ROS功
  • 神秘的程序员

    神秘的程序员漫画集
  • PX4从放弃到精通(十八):参数

    无人机硬件 提供全程指导 文章目录 无人机硬件 提供全程指导 https item taobao com item htm spm a1z10 1 c w137644 23632941727 26 118775c2oUPAnL amp id
  • PX4从放弃到精通(十一):混控及PWM输出

    x1f449 x1f449 x1f449 无人机硬件 xff0c 提供全程指导 x1f448 x1f448 x1f448 文章目录 61 61 x1f449 x1f449 x1f449 无人机硬件 xff0c 提供全程指导 https it
  • Mbot ros编译环境安装

    x1f449 x1f449 x1f449 无人机硬件 xff0c 提供全程指导 x1f448 x1f448 x1f448 文章目录 61 61 x1f449 x1f449 x1f449 无人机硬件 xff0c 提供全程指导 https it
  • Ubuntu系统迁移

    文章目录 前言一 备份系统二 制作系统盘三 安装系统 前言 本博客记录如何将一个电脑 板卡 xff08 或虚拟机 xff09 的ubuntu系统原封不动的迁移到另一个电脑 板卡 xff08 或虚拟机 xff09 上 Ubuntu20 04系
  • ubuntu20.04搭建QGC4.2编译环境

    文章目录 前言 一 安装qt 二 编译QGC 安装依赖 安装GStreamer 三 编译安卓版QGC 安装jdk11 配置Qt creator 配置手机 配置遥控器 常见报错 前言 Ubuntu20 04 QGC 4 2 ubuntu18
  • PX4实战之旅(三):通过OFFBOARD模式控制无人机自主飞行

    文章目录 前言 一 添加自定义模块 二 测试 前言 固件 PX4 1 13 1 一 添加自定义模块 在PX4 Autopilot src modules目录下新建control node文件夹 在control node文件夹下新建下面四个
  • QGC二次开发基础

    文章目录 前言 一 添加文件到QGC工程 二 添加界面 三 QML和C 交互 四 信号与槽 五 测试 前言 QGC 4 2 4 一 添加文件到QGC工程 在qgroundcontrol src目录下创建SimpleTest文件夹 在文件夹中
  • windos10安装QGC4.2编译环境

    文章目录 前言一 安装VS二 安装QT三 编译四 常见报错及解决办法 前言 参考链接 https dev qgroundcontrol com master en getting started 一 安装VS 下载地址 xff1a http
  • PX4入门指南

    x1f449 x1f449 x1f449 无人机硬件 xff0c 提供全程指导 x1f448 x1f448 x1f448 文章目录 61 61 x1f449 x1f449 x1f449 无人机硬件 xff0c 提供全程指导 https it
  • PX4基本配置

    目录 下载固件 下载原生稳定版固件 安装PX4 Master Beta或自定义固件 FMUv2 Bootloader 更新 机架设置 飞行控制器 传感器方向 计算朝向 设置朝向 罗盘校准 执行校准 陀螺仪校准 执行校准 加速度计 执行校准

随机推荐