C/C++如何快速学习?少走3年弯路

于我而言,最开始学习就是 C++,除了计算机专业,其他专业可能学习的第一门编程语言为 C 语言,还是谭浩强爷爷那本,当时想着有点 C 基础,无外乎就是 C 语言的升级版,于是开启了 C++ 的路程。

语言这个东西,可能过后你会发现,它真就一工具,你如果想做个爬虫或者数据分析,那多半会选择 Python,无论是接口还是开源社区都非常的完善,如果想做一个快速迭代的 CRUD 项目,也可以选择 Python 的 Django 框架或者 Java的框架快速完成开发,如果是内核驱动,那老老实实的用大哥 C,如果玩儿数据库,搜索引擎就整 C++,如果是分布式或者 Devops那一套,自然就是 Golang,有轮子直接上手就好,先保证完成任务,其次是优化。

不过在找工作的时候,不同的岗位确实有一个大家公认的语言,比如测试开发,多半就会涉及到 Python 的知识点考察, 毕竟需要一些自动化的开发工作,如果是服务端开发,多半就会涉及到 Linux 的知识点。

研究生期间,实验室很严格,几乎没有实习的时间,专硕,导师的项目又比较紧凑,就只能挤出时间去准备,所以如果大家是非科班的,也不要担心,时间一定是可以挤出来,静下心去积累,结果不会差。

大厂到底喜欢问啥

计算机基础,包含计算机组成原理,操作系统,计算机网络,数据库,设计模式,算法与数据结构。那么最容易被刷掉的就是算法,每一年的招聘中,简历去掉一部分,算法还要去掉一部分。

我当时复习的时候,边学算法导论边抄代码,后面要找工作的时候采取Leetcode 练习,加上剑指 Offer 的复习,几乎三轮左右。

不管你是什么技术栈,都是需要稳扎稳打的,大厂=基础+算法+项目。如果有拿得出手的项目,而且能把项目的背景,目的,干什么的,都能表述的非常清楚了,那可能距离 offer 更进一步。这些每个环节都不能疏漏,进大厂就需要培养自己的大局观,大厂思想,你就是牛逼,别人不会的你就会,你就有机会拿下 offer。

就业方向

既然要选定方向,就需要先了解学了这个方向以后可能从事什么岗位,自己喜欢或更加适合哪些岗位。

选择 C/C++ 的同学需要酌情考虑这个问题,它的门槛比 Python,Java 的路线高一些。不过道理是一样的,技术毕竟都相通,Java,Python工作岗位机会多,学的人也多一些,竞争自然也就大。

国内大厂如阿里,腾讯,头条,百度,京东等都有招聘 C/C++ 的岗位,其核心搜索,腾讯的底层架构等机会都是 C++ 写的,所以没必要担心找不到工作,薪资也是杠杠的。

越接近底层机器,其效率越高,各有各的优势,想深入了解计算机系统,选择 C/C++最好不过。有些同学这个月学 C++ 的路线,下个月学 Java 的路线,这是兵家大忌,不管走哪个路线,一定要沉稳,稳扎稳打。学习的过程是枯燥无味的,学习的苦痛是暂时的,未学到的痛苦则是终生的。

那一般都有哪些方向呢?

服务器方向、网络安全方向、音视频/流媒体/SDK、嵌入式方向、测试开发工程师、游戏引擎开发工程师、数据库开发工程师、客户端/桌面开发工程师、网络传输协议优化工程师、Linux 内核开发工程师、存储开发等

这里以服务器开发方向为例,服务器方向包含Linux服务器开发工程师,Linux后端/后台开发工程师。下面我们看看腾讯对于服务端开发工程师而言的基本要求(其它方向可以到各到招聘网站查看岗位要求)。

再来看后面还有一句话是,对 Python/shell 等脚本有一定的了解,如果对分布式系统,负载均衡等知识能有了解则可加分。

关于这一块内容更加强调后端知识的运用,在学校期间基本上是没法涉及的,需要实习或自己学习其他的资源来弥补对这方面知识的空缺。

下面分享一个c/c++后台开发/服务器开发的学习路线(摘自零声教育课程大纲,直接对标腾讯T8技术栈)

以下试听内容

2024年c/c++程序员如何提升自己的核心竞争力?这套linux c/c++后端服务器开发技术教程不要错过!icon-default.png?t=N7T8https://www.bilibili.com/video/BV1CF4m1L7hU/

直播地址:Linux C/C++后台开发/服务器开发成长体系教程试听地址

完整学习路线

1、精进基石专栏

1.1 数据结构与算法

1.2 设计模式

1.3 C++新特性

1.4 linux工程管理

2、高性能网络设计专栏

2.1 网络编程 异步网络库zvnet

2.2 网络原理

2.3 自研框架:协程框架NtyCo的实现

GitHub - wangbojing/NtyCo: 纯c版本的协程实现,汇编切换,调度器实现,包含服务器端案例,客户端并发测试案例

2.4 自研框架:基于dpdk的网户态协议栈的实现

GitHub - wangbojing/NtyTcp: 单线程用户态TCP/IP协议栈,epoll实现,包含服务器案例,并发测试案例

2.5 高性能异步io机制

3、基础组件设计专栏

3.1 池式组件

3.2 高性能组件

3.3 开源组件

4、中间件开发专栏

4.1 redis

4.2 mysql

4.3 kafka

4.4 微服务之间通信基石gRPC

4.5 nginx

5、开源框架专栏

5.1 游戏服务器框架skynet

5.2 分布式API网关

5.3 SPDK助力mysql数据落盘,让性能腾飞

5.4 高性能计算CUDA

5.5 并行计算与异步网络引擎workflow

5.6 物联网通信协议mqtt的实现框架mosquitto

5.7 ZeroMQ

6、云原生专栏

6.1 Docker

6.2 kubernetes

7、性能分析专栏

7.1 性能与测试工具

7.2 观测技术bpf与ebpf

7.3 内核源码机制

8、分布式架构专栏

8.1 分布式数据库

8.2 分布式文件系统

8.3 分布式协同

8.4 分布式监控prometheus

9、上线项目实战

9.1 kdvstore实现

添加图片注释,不超过 140 字(可选)

9.2 图床共享云存储(零声图床mediahub)

添加图片注释,不超过 140 字(可选)

9.3 微服务即时通讯项目(零声教育即时通讯项目-首页)

9.4 零声教学AI助手(零声教学AI助手(公测))

9.5 魔兽世界后端TrinityCore(C++ 游戏后端开发课程-首页)

以上就是c/c++后台开发/服务器开发全套系统学习课程内容,需要系统学习请扫码添加贝贝老师VX:baby602878196(备注123)领取专属大额优惠券。

适宜的工程师人群(共分为8大群体)

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

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

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

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

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

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

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

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

配套书籍资料

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

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

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

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

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

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

  • 7. MongoDB: 《MongoDB权威指南》

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

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

  • 10. TCP/IP: 《Tcp/Ip详解卷一卷二卷三》

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

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

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

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

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

学习成果检验

  • 腾讯offer比例15%

  • 知名企业offer比例73%

  • 最高offer腾讯T3.1(现T9)年薪65w

  • 最高年薪涨幅30W

  • 最快跳槽学习时间1个半月

如果是想在c/c++开发方向得到有效的快速提升(不是所谓的速成),这份学习体系是大家绕不过的具有参考意义的提升路线。从学习路线中可以对c/c++开发方向的技术栈有一个清晰的认识。

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

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

相关文章

访问网站时你的电脑都做了什么

电脑在访问百度时 首先在本地hosts文件里面查看本地有无域名对应的IP地址,若有就直接返回。若无,则本地DNS服务器当DNS的客户,向其它根域服务器发送报文查询IP地址,简单来说就是帮助主机查找IP,所以递归查询就在客户端…

SpringBoot之集成Redis

SpringBoot之集成Redis 一、Redis集成简介二、集成步骤2.1 添加依赖2.2 添加配置2.3 项目中使用 三、工具类封装四、序列化 (正常都需要自定义序列化)五、分布式锁 一、Redis集成简介 Redis是我们Java开发中,使用频次非常高的一个nosql数据库…

【双指针】接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的…

逆向案例十七(1)——webpack加如果之前发送公钥如何定位参数,基于中国五矿

网址链接:中国五矿集团有限公司采购电子商务平台 定位到数据包,载荷中param是一个加密参数。 每一个数据包前都有一个public返回公钥。 点击查看返回的数据 如何定位参数加密位置? 复制公钥包url的后面,进行搜索 ,查…

无需训练,这个新方法实现了生成图像尺寸、分辨率自由

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 近日,来自香港中文大学 - 商汤科技联合实验室等机构的研究者们提出了FouriScale&…

C语言单链表

1. 单链表的概念和结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 链表与顺序表都属于线性表,顺序表在物理存储结构上是线性的,但是链表在物理存储结构上…

react-静态组件,动态组件

react09- 组件 静态组件 动态组件 静态组件: 函数组件,在第一次渲染完成后,组件中的内容,不会根据组件内的某些操作再次进行更新,页面并不会跟着改变 过程: 第一次渲染时,执行函数方法&#x…

202458读书笔记|《风来自你的方向》——我每次见你时的百米冲刺,加起来就是一生的长跑

《风来自你的方向》隔花人著 大绵羊BOBO绘,狗狗🐶绘本,这是看的第3本书。上俩本是《我是你的小狗 狗狗心事绘本》,《我是你的小狗2 当我有了你》。 同样的简短文字小狗🐶漫画,有爱的主人,有趣…

[中级]软考_软件设计_计算机组成与体系结构_12_概述及回顾

概述及回顾 总纲考情分析与分值海明校验码计算公式重点 总纲 考情分析与分值 海明校验码计算公式 2 r m r 1 2^r mr1 2rmr1 重点 数据的表示是计算题型的基础计算机组成中的CPU组成计算机组成中的存储系统,是核心重点的考察CISC与RISC及流水线执行时间的求取

lgwr超时如何判断存储还是cpu问题?(等待事件各种类型和说明及相关查询)

通过awr报告看: 分析: log file parallel write平均等待8毫秒 log file sync平均等待402毫秒 排查: log file sync parallel write lgwr cpu log file parallel write等待少说明存储不慢。 所以:log file sync等待长是因为…

css字体相关属性

属性汇总 属性作用font-family 设置文章字体 font-size 设置字体大小 font-weight设置字体粗细font-style设置字体斜体font总体设置以上属性 设置文章字体 font-family属性 案例: 设置字体大小 font-size属性 注意事项: 1.必须要加单位&#xff0…

很牛的一套仓库管理系统,免费复用【带源码】

今天给大家分享一套基于SpringbootVue的仓库管理系统源码,在实际项目中可以直接复用。(免费提供,文末自取) ​一、系统运行图(设计报告和接口文档) 1、登陆页面 2、物品信息管理 3、设计报告包含接口文档 二、系统搭建视频教程 …

Training - Kubeflow 的 PyTorchJob 配置 DDP 分布式训练 (ncclInternalError)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/137569332 Kubeflow 的 PyTorchJob 是 Kubernetes 自定义资源,用于在 Kubernetes 上运行 PyTorch 训练任务,是 K…

谷歌浏览器快捷键, VScode 快捷键

谷歌浏览器快捷键 谷歌浏览器跳转标签页的方式: control Tab 跳转下一个标签页 control shift tab 上一个标签页 command 1-8 跳转对应的标签页,而command 9 则是跳转最后一个标签页 Previous Tab 插件实现谷歌浏览器两个tab页来回切换。快捷键为…

猫头虎分享已解决Error: 已解决“ModuleNotFoundError: No module named“

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 领域矩阵: 🌐 猫头虎技术领域矩阵: 深入探索各技术领域,发现知识的交汇点。了解更多,请访问: 猫头虎技术矩阵…

Docker入门指南:从安装到基本操作和镜像构建的全面教程

文章目录 一、Docker简介二、Docker的安装三、Docker的基本概念四、Docker的基本操作五、Dockerfile和镜像构建六、总结 一、Docker简介 Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后在任何支持Dock…

24/04/09总结

异常: 1.异常是什么? 程序中可能出现的问题 2.异常体系的最上层父类是谁?异常分为几类? 父类:Exception。 异常分为两类:编译时异常、运行时异常 编译时异常和运行时异常的区别? 编译时异常:没有继承RuntimeException的异常,直接继承于Exception。 编译阶段就会…

阿里面试题二

实在是太长了 重新开一篇吧 dubbo 服务暴露 Dubbo——服务调用、服务暴露、服务引用过程 - 简书 这两篇文章写的是极好 我现在查得资源强的可怕朋友们 服务降级 MockClusterInvoker 负载均衡策略 容错机制在哪里实现的源码 通信 NIO、BIO区别,NIO解决了什么…

[C语言]——柔性数组

目录 一.柔性数组的特点 二.柔性数组的使用 三.柔性数组的优势 C99中,结构体中的最后⼀个元素允许是未知大小的数组,这就叫做『柔性数组』成员。 typedef struct st_type //typedef可以不写 { int i;int a[0];//柔性数组成员 }type_a; 有些编译器会…

jmeter压测websocket协议

一、jmeter 安装websocket插件 1、选项--插件管理 2、搜索WebSocket Samplers by Peter Doornbosch插件 进行安装 3、 重启 jmeter 二、jmeter压测websocket协议实战 2.1、以网站为例: websocket在线测试 1、断开连接 2、打开F12,查看WS数据 3、…