C/C++后端开发学习路线总结(附带实习学习经历分享)

news/2024/5/3 23:23:07/文章来源:https://blog.csdn.net/m0_58687318/article/details/126667506

大家好哇,九月份了;不知道大家的工作或者实习都安排的怎么样了?反正狮作为一个过来人只能在各种论坛上面看到都是哀鸿遍野;暗自惊心感慨现在年轻人不好混啊~

然后呢,狮最近后台收到不少C/C++后端怎么学的邀请回答;那这里就再发一次关于C/C++后端开发学习路线总结及实习经历分享


除了知乎呢,还有某DN,某破站上也有太多的读者询问我这样的问题:新手怎么学?要学到什么样子才能找工作?有什么学习资料推荐?


其实学习路线一类的文章网络上也有不少,但我看了很多,大部分都是罗列了许多的课程和知识点,却缺少一个类似时间轴的东西,告诉大家按照什么样的节奏来推进,所以呢,我希望补上这一个重要的信息。


这份学习路线,包含了从新手到工作分阶段所需要学习的内容、详细的知识点、可以参考的书单、电子书资源等等。给大家看C/C++后端开发的,最后一段附带我一个小老弟的实习与学习经历,发车~
路线图
开局一张图,内容全靠编,没错,咱们先来看一张全局图,先从总体上有个宏观的认识。

这张图有点大,由于微信对图片压缩的厉害,如果想要高清版的,可以私信狮:C++自动获取。

基础部分到处都能学,这里就不做过多赘述了;如若是想转行或者转岗C/C++后端的,狮之后也会写一个更加详细基础的分享;这里就先将学习路线分为十个板块来进行。

一、精进基石

1.数据结构与算法

  • 随处可见的红黑树
  • 磁盘存储链式的B树与B+树
  • 海量数据去重的Hash与BloomFilter,bitmap

2.设计模式

  • 创建型设计模式
  • 结构型设计模式

3.c++新特性

  • stl容器,智能指针,正则表达式
  • 新特性的线程,协程,原子操作,lamda表达式

4.Linux工程管理

  • Makefile/cmake/configure
  • 分布式版本控制git
  • Linux系统运行时参数命令

二、高性能网络设计

1.网络编程

  • 网络IO与select,poll,epoll
  • reactor的原理与实现
  • http/https服务器的实现
  • websocket协议与服务器实现

2.网络原理

  • 服务器百万并发实现
  • redis,memcached,nginx网络组件
  • Posix API与网络协议栈
  • UDP的可靠传输协议QUIC

3.协程框架NtyCo的实现

  • 协程设计原理与汇编实现
  • 协程调度器实现与性能测试

4.用户态协议栈NtyTcp的实现

  • 用户态协议栈设计实现
  • tcp/ip定时器与滑动窗口
  • 手把手设计实现epoll

5.高性能异步io机制io_uring

  • 与epoll媲美的io_uring
  • io_uring的使用场景

三、基础组件设计

1.池式组件

  • 手写线程池与性能分析
  • 内存池的实现与场景分析
  • 异步请求池的实现
  • mysql连接池的实现

2.高性能组件

  • 原子操作CAS与锁实现
  • 无锁消息队列实现RingBuffer
  • 定时器方案红黑树,时间轮,最小堆
  • 手写死锁检测组件
  • 手写内存泄漏检测组件
  • 手把手实现分布式锁

3.开源组件

  • Libevent/Libev框架实战的那些坑
  • 异步日志方案log4cpp
  • 应用层协议设计ProtoBuf/Thrift

四、中间件开发

1.redis

  • redis相关命令详解及其原理
  • redis协议与异步方式
  • 存储原理与数据模型
  • 主从同步与对象模型

2.MySQL

  • SQL语句,索引,视图,存储过程,触发器
  • MySQL索引原理以及SQL优化
  • MySQL事务原理分析
  • MySQL缓存策略

3.Kafka

  • Kafka使用场景与设计原理
  • Kafka存储机制

4.gRPC

  • gRPC的内部组件关联
  • 基于http2的gRPC通信协议

5.nginx

  • nginx反向代理与系统参数配置conf原理
  • nginx过滤器模块实现
  • nginx Handler模块实现

五、开源框架

1.skynet

  • skynet设计原理
  • sky net网络层封装以及lua/c接口编程
  • sky net重要组件以及手撕游戏项目

2.分布式API网关

  • 高性能web网关Openresty
  • Kong动态负载均衡与服务发现

3.DPDK

  • DPDK环境与testpmd/I3fwd/skeletion
  • DPDK的用户态协议栈
  • 千万级流量并发的dns处理
  • 高性能数据处理框架vpp
  • DPDK的虚拟交换机框架OVS

4.高性能计算CUDA

  • gpu并行计算cuda的开发流程
  • 音视频编解码中的并行计算

六、云原生

1.Docker

  • Docker风光下的内核功能
  • Docker容器管理与镜像操作
  • Docker网络管理
  • Docker云与容器编排

2.Kubernetes

  • K8S环境搭建
  • Pod与Service的用法
  • K8S集群管理
  • K8S二次开发与K8S API

七、性能分析

1.性能与测试工具

  • 测试框架gtest以及内存泄漏检测
  • 性能工具与性能分析
  • 火焰图的生成原理与构建方式

2.观测技术bpf与ebpf

  • 内核bpf的实现原理
  • bpf对内核功能的观测

3.内核源码机制

  • 进程调度机制
  • 内核内存管理运行机制
  • 网卡nic与网络协议栈的关系
  • 文件系统组件

八、分布式架构

1.RocksDB

  • 不一样的kv存储RocksDB的使用场景
  • RocksDB的特殊操作

2.云原生分布式数据库TiDB

  • TiDB存储引擎的原理
  • TiDB集群方案与Replication的原理

3.分布式服务

  • 内核级支持的分布式存储Ceph
  • 注册服务中心Etcd

九、项目实战

1.图床共享云存储

  • fastdfs架构分析和配置
  • fastdfs存储原理
  • 分布式fastdfs存储集群部署
  • 高负载nginx/fastcgi
  • 文件传输和接口设计
  • 产品上云公网发布/测试用例

2.微服务即时通讯

  • IM即时通讯项目框架分析和部署
  • IM消息服务器/文件传输服务器
  • 消息服务器/路由服务器
  • 数据库代理服务器设计
  • 文件服务器和docker部署
  • 产品上云公网发布/公网测试上线

十,配套参考书籍资料

1. MySQL:《高性能MySQL 第3版》

2.Nginx: 《深入理解Nginx:模块开发与架构分析(第2版)》(陶辉)

3.Redis:Redis设计与实现 (黄健宏)

4.Linux内核:《深入理解Linux内核架构》 (郭旭 译)

5.数据结构与算法:《算法导论》(第3版)

6. 性能分析:《性能之巅 洞悉系统、企业与云计算》 8

7.MongoDB:《MongoDB权威指南》

8.Ceph:《Ceph分布式存储学习指南》(Ceph中国社区)

9.Docker:《Docker容器与容器云(第2版)》。

10.TCP/IP:《Tcp/1p详解卷一卷二卷三》 8

11.Linux系统编程:《Unix环境高级编程》

12.计算机:《深入理解计算机系统》

13. DPDK:《深入浅出DPDK》 8

14.k8s:《Kubernates权威指南》龚正等编著

15.bpf:《BPF之巅 洞悉Linux系统和应用性能》


总结

以上就是做C/C++后端开发,从新手入门到工作所需要学习的内容整理了,可能并不全面,但掌握以上这些内容足以胜任大部分的岗位要求了。

除了学习路线,我还整理了这个过程中学习的大量学习资料,配合上面的学习路线使用:


适宜工程师人群

1.从事业务开发多年,对底层原理理解不够深入的在职工程师

2.从事嵌入式方向开发,想转入互联网开发的在职工程师

3.从事Qt/MFC等桌面开发的,薪资多年涨幅不大的在职工程师

4.从事非开发岗位(算法岗,运维岗,测试岗),想转后台开发岗位的在职工程师

5.工作中技术没有挑战,工作中接触不到新技术的在职工程师

6.自己研究学习速度较慢,不能系统构建知识体系的开发人员

7.了解很多技术名词,但是深入细问又不理解的工程师

8. 计算机相关专业想进入大厂的在校生(本科及以上学历,有c/c基础)


这里就拿一个学弟的实习经历举个例子(跟我关系比较好,啥都带他)实习面试基本情况,参与面试的公司:CVTE、搜狐、东方财富、美团、腾讯、字节跳动、阿里巴巴

CVTE:笔试-技术面1-技术面2-hr面-offer(第一次面试,他是说挺顺利的)

阿里巴巴提前批:技术面1-挂(当时没复习,问他啥,啥不会,其实阿里面的真不难)

东方财富:技术面1-HR面-挂(HR面把他挂了,看不懂)

字节跳动:技术面1-技术面2-技术面3-hr面-offer(字节3面面试官拖了他快半个月才面,当时心态很差,同学都拿了大厂offer)

百度:技术面1-技术面2-技术面3(一个下午面完的,但是玩了一上午,百度打过来的2个电话没接到,然后就没了)

腾讯:技术面1-技术面2-技术面3-hr面(也挺顺利,被我逼着复习了一顿,感觉跟阿里差不多)

后面其他公司笔试面试邀请都拒了。

然后是他的学习经历,原话:

2020年3~8月:疫情在家大概3月份开始准备学习C++,因为在家效率极低,玩三天学一天,到7、8月份也只是会用C++,然后写了个MFC的小项目练了练手。

2020年9月:前半个月学习计算机网络,后半个月学习深入理解计算机系统(当然第一遍只看懂个大概)

2020年10月-12月:写多线程服务器项目(即改编muduo),这个过程中伴随学习网络编程、操作系统、C++各种知识(之前C++只学了皮毛)

2021年1月-2月:学习数据结构与算法并刷题,刷了不到200题。(其中寒假在家玩了半个月)

2021年3月:开启海投模式,先投了一批小公司,基本都简历挂,总算有几个小厂给了面试机会,边面试边复习。3月中旬开始投大厂,除了美团一面挂,字节、腾讯、百度面试都很顺利,没挂过,清明之前拿到了字节的口头offer。

2021年4月:字节的正式offer邮件。

(说实话我的学习效率不是很高,因为我喜欢睡懒觉。)

ps:他睡懒觉我是发现了,天天上午叫不动...


结语


不管是转岗还是实习选方向的兄弟们,一个合格的 C++开发者从来不怕找不到工作的,即使你日后从事 Java或者Go的工作,由于语言的原理都是相通的,所以你的学习成本会比别人小的多。


我仔细想了想自己这些年的语言史:大学写了一年的C语言和VB,三年的C#;研究生写了一年的Python,两年的C++;工作了开始写JavaScript、Go以及Vue、React这些框架。


你要问我最喜欢哪门语言?
毫无疑问,绝对是是C++!
不为什么,就是喜欢它的严谨!

C++天下第一!!!


种一棵树的最好时间是十年前,其次就是现在,真心希望学弟学妹们以及一些想要转计算机的小伙伴们加油!

别辜负了自己这么多年苦读与工作经历;好好工作好好生活,想要相关资料或者学习路线图的都可以私信狮,大庇天下寒士俱欢颜!!!

拜拜了您嘞~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_4871.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广西大学口袋开发板之抢答器

任务要求: 四名选手各有一个抢答按键,按键的编号以及指示灯(手柄板上的LED模块)的编号与选手的编号相对应,抢答器具有编号的识别和数据的锁存、显示以及提示音功能。 评分细则: 裁判按下开始键后&#x…

2022年0902Maven的继承和利用Idea创建Maven工程的内容<第五课>

目录 第一部分 Maven的继承 1 概念 2 作用 3 它的背景是: 4 它背后的需求是: 在每一个 module 中各自维护各自的依赖信息很容易发生出入,不易统一管理。 使用同一个框架内的不同 jar 包,它们应该是同一个版本,所…

电脑无线5g网卡发现不了网件R7000的Wifi 5g网络

原因是因为 网件R7000的5g网络默认是100的频道, 把频道固定的153然后把路由器离拖线板和其他设备远一点

第十章Redis_主从复制

10.Redis_主从复制 文章目录10.Redis_主从复制10.1主从复制是什么?10.2主从复制能干嘛10.3怎么玩:主从复制10.3.1在根目录下创建myredis文件夹10.3.2复制/etc/redis.conf文件到myredis下,文件名和之前保持一致10.3.3配置一主两从,创建三个配…

687 最长同值路径——Leetcode 天天刷(2022.9.2)【DFS】

687 最长同值路径——Leetcode 天天刷(2022.9.2)【DFS】 文章目录687 最长同值路径——Leetcode 天天刷(2022.9.2)【DFS】前言题目描述示例提示信息本地调试运行输入格式输出格式输入样例输出样例层次遍历构造二叉树解法——DFS细…

新店速递丨白玉兰(商务)酒店赣榆吾悦广场店 正式上线

第242家 白玉兰酒店再下连云港 2022年9月,锦江酒店(中国区)旗下优选服务酒店品牌“白玉兰酒店”连云港再添一员,迎来门店——白玉兰(商务)酒店赣榆吾悦广场酒店正式上线。这也是全国第242家开业的白玉兰酒…

Git做版本管理及CHANGELOG

规范化的提交信息除了能很好描述项目的修改,还有一个很好的作用就是能根据提交记录来生成CHANGELOG.MD和自动生成版本号等功能。 standard-version 一个用于生成CHANGELOG.md和进行SemVer(语义化版本号)发版的命令行工具 主要功能: 自动修改最新版本…

6-2 多项式求值——15分

本题要求实现一个函数,计算阶数为n,系数为a[0] … a[n]的多项式(上图) 在x点的值。 函数接口定义: double f( int n, double a[], double x );其中n是多项式的阶数,a[]中存储系数,x是给定点。函数须返回多项式f(x)的值。 裁判测试程序样例: #include <stdio.h>#def…

Docker - 容器的网络模式

目录 一、bridge模式 查看容器的有哪几种网络类型 二、host模式 三、none模式 四、container模式 五、overlay模式 创建一个桥接类型的网卡 使用刚才创建的网卡来创建容器 查看刚才使用网卡创建的容器的ip地址 我们指定网卡创建的容器IP地址是 &#xff1a;172.18.0.…

计算机网络——网络协议

目录 网络协议 网络协议的三要素 协议的分层模型 计算机网络层次结构的好处 计算机网络的体系结构 OSI与TCP/IP的体系结构的比较 网络协议 1、计算机网络中的数据交换必须遵守事先约定好的规则。 2、这些规则明确规定了所交换的数据的格式和时序&#xff0c;以及在发送或…

SpringBoot 整合 RabbitMQ 实现消息回调、手动确认 (二) 有图 有源码

创建时间 2022年8月29日 标签&#xff1a;Java、SpringBoot、RabbitMQ、队列 注释&#xff1a;新建SpringBoot项目实操RabbitMQ实现消息回调、手动确认 来源&#xff1a;CSDN博主&#xff1a;小目标青年 文章目录SpringBoot 整合 RabbitMQ 回调确认模式生产者推送消息回调1、消…

3天精通Postman---动态参数amp;断言amp;CSV数据驱动amp;Mock Server

DAY2课题&#xff1a;Postman接口关联&动态参数&断言&CSV数据驱动目录 一、接口关联&#xff0c;接口依赖&#xff0c;多接口串联&#xff0c;组合API 二、Postman的动态参数&#xff08;随机数&#xff09; 三、Postman的环境变量和全局变量 四、Postman断言 五、…

极端气候肆虐催化,碳中和带出了一个“再生时代”

江南一带的高温结束了&#xff0c;今年这场轰轰烈烈的高温&#xff0c;也画上了最后的句号。各地骤降的温度让人仿佛忘却了“热到爆表”的经历&#xff0c;但过去已经成为历史&#xff0c;历史充满痕迹。 格陵兰岛冰盖加速融化、欧洲莱茵河部分河段干涸、长江流域汛期反枯、重…

Cyclopropene-PEG-MAL Maleimide|环丙烯-聚乙二醇-马来酰亚胺

描述&#xff1a;环丙烯有机化合物。环丙烯是由三个碳原子构成的环烯烃&#xff0c;分子式为C3H4 &#xff0c;由于具有张力&#xff0c;环丙烯具有一些和其他环烯烃不同的性质。 理化性质 环丙烯在常温常压下为无色气体&#xff0c;沸点-36.15 &#xff0c;折射率1.489 。 环…

Git的安装与使用

1、Git的下载 2、git的安装 点击安装软件&#xff0c;一路安装到底&#xff0c;无需做任何选择 ...... 此处省略中间安装步骤 ...... 3、检验是否安装成功 在桌面右键&#xff0c;如果出现此图&#xff0c;表示安装成功 4、配置git 为了方便git客户端操作远程仓储方便&#…

Redis集群搭建(单机集群)

Redis入门篇https://blog.csdn.net/tongxin_tongmeng/article/details/126620333集群配置文件&#xff08;单机集群&#xff09; 1.复制/home/redis/redis-7.0.4/redis.conf到/home/redis/workspace/cluster_one cp /home/redis/redis-7.0.4/redis.conf /home/redis/workspace/…

私有化部署的知识管理平台对企业有什么意义?

随着企业的发展扩大&#xff0c;企业内部沉淀的知识也越来越多。过去很多企业都会将知识存储到云上&#xff0c;云部署模式虽然给企业带来了极大的便利&#xff0c;但在一些性能及数据安全上会存在一定的弊端&#xff0c;隐藏不少的企业会选择将数据存储在本地。下面我们就从企…

数字机器人如何更好的助力智慧政务?这里或许有你想要的答案

“十四五”规划和2035年远景目标纲要中明确提出&#xff0c;迎接数字时代&#xff0c;加快建设数字经济、数字社会、数字政府&#xff0c;以数字化转型整体驱动生产方式、生活方式和治理方式变革。 国务院于6月23日印发的《关于加强数字政府建设的指导意见》&#xff0c; 再一…

22年国家gongwuyuan考试申论题(副省级)

2022年国家公务员考试申论题&#xff08;副省级&#xff09;的问题一&#xff0c;它的题目是&#xff1a;根据“给定资料1”&#xff0c;请你谈谈B公司的案例为企业科技创新提供了哪些启示&#xff1b;要求&#xff1a;分析全面&#xff0c;条理清晰&#xff0c;不超过200字。 …

一个SpringBoot问题就干趴下了?我却凭着这份PDF文档吊打面试官(Spring Boot知识点+详解)

随着 Spring Boot 使用越来越广泛&#xff0c;Spring Boot 已经成为 Java 程序员面试的知识点&#xff0c;很多同学对 Spring Boot 理解不是那么深刻&#xff0c;经常就会被几个连环追问就给干趴下了&#xff01; 给大家整理了 Spring Boot 的35个常见知识点、21道面试必刷题、…