于我而言,最开始学习就是 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++后端服务器开发技术教程不要错过!https://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++开发方向的技术栈有一个清晰的认识。