linux嵌入式C,C++服务器,C++客户端,C++界面(Qt/Mfc)这些方向未来哪个比较有发展性

最近有同学问问:刚刚毕业,普通211本科。打算找C/C++方向的工作,目前在网上看到最多的有这几个方向:linux嵌入式C,C++服务器,C++客户端,C++界面(Qt/Mfc)这些方向未来哪个比较有发展性啊,或者说还有其他更好的方向。本人学渣一枚,大学没有好好学习,所以想确定一个工作方向认真积累学习;

那么狮今天就浅浅推荐一下C++服务器后台开发这个方向;基于linux环境和C++语言的服务器程序开发,像qq服务器、微信服务器、王者荣耀服务器等等。虽然现在各种高级语言大火,但是在高性能这一块,c++首选。这也是目前各个大厂,比如鹅厂,字节,京东,阿里等一线互联网企业都在招人的原因,而且中高端的人员还比较稀缺,公司内部挖人的事也不少见。所以别看现在java /python现在市场火热,但c++后台开发这块还是非常站的住脚的。

上面说了,顶级性能的项目上,基本都会使用C++。尤其是机器人、自动驾驶、AI等嵌入和实时系统,都是C++的主要应用方向,在这种层面,几乎没有竞争者。

比如熊厂的搜索引擎、推荐引擎等核心产品,鹅厂几乎所有产品都是C++开发。所以“学好c++将是通往大厂的敲门砖!”

如果学的好,能进BAT也是不错的,腾讯、百度、头条都招大量的Linux c/c++,阿里云也招,另外游戏引擎,高频交易等也是c++的专属领域。

当然也不是谁学了都能找到活干;什么样的人比较适合c/c++后台服务器开发?

  • 从事业务开发多年,对底层原理理解不够深入的在职工程师
  • 从事嵌入式方向开发,想转入互联网开发的在职工程师
  • 从事Qt/MFC等桌面开发的,薪资多年涨幅不大的在职工程师
  • 从事非开发岗位(算法岗,运维岗,测试岗),想转后台开发岗位的在职工程师
  • 工作中技术没有挑战,工作中接触不到新技术的在职工程师
  • 自己研究学习速度较慢,不能系统构建知识体系的开发人员
  • 了解很多技术名词,但是深入细问又不理解的工程师
  • 计算机相关专业想进入大厂的在校生(本科及以上学历,有c/c++基础)

C++的性能固然强大,但它的范式和机制也给开发者造成很大的负担:

一是 项目开发效率低 ;

二是 学习困难,不好上手 ;

这也导致企业要想招一个合格的C++程序员十分困难!

在主流的编程语言中,c++对软件人才的编程能力要求最高,很多人由于畏惧的原因改学其他的编程语言。所以,学习C++技术的人员数量也很少,可以说十分稀缺。

如果你本身喜欢c/c++,同时也对Linux感兴趣,那就最好不过了。

既然是回答职业发展方向,那就先从找工作的视角看一下待遇如何,然后再看一下大厂的招聘要求都有什么,最后探讨一下C++学什么以及罗列出技术点。

这是刚刚狮打开某知名招聘网站;搜索北京-上海C++后台开发随手截的;深圳更不用说了,一搜前五个,四个都是鹅厂。。。(鹅厂是真爱C++,c++天下第一!!) 可以看的出薪资待遇还是非常不错的;学历要求也并没有那么高;基本上有个研究生学历的话校招简历绝对能过的。

至于技术要求的话狮就没有去截取了;毕竟各个大厂要求都不一样,对哪家厂子有意向的兄弟们,可以自行去看看;既然是一个方向的话,基本上都是大同小异的;这里狮就来一份知识点总结。技术上对标腾讯T9;话不多说,上干货!

腾讯核心技术学习路线总结T1-T9


c++语法基础


首先是入门阶段,除了基本的循环、变量、判断以外,至少需要掌握这些

  • 指针、引用、数组、内存
  • 引用与指针区别
  • 虚机制:虚函数、虚函数表、纯虚函数
  • C 和 C++ 的一些区别,比如 new、delete 和 malloc、free 的区别
  • 一些关键字的作用:static、const、volatile、extern
  • 四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast
  • STL部分容器的实现原理,如 vector、deque、map、hashmap
  • 类的封装,构造和析构、静态成员、对象管理;
  • 类的构造(有参构造函数、无参构造、拷贝构造、默认构造函数)和析构;
  • 对象动态管理、友元函数、友元类、操作符重载
  • C++编译器对象管理模型分析;
  • 运算符重载(一元运算符、二元运算符、运算符重载难点、项目开发中的运算符重载);
  • 模板特化、偏特化,萃取 traits 技巧
  • 继承、虚继承、菱形继承等
  • 多态: 动态绑定,静态多态
  • 重写、重载
  • 智能指针原理:引用计数、RAII(资源获取即初始化)思想
  • 智能指针使用:shared_ptr、weak_ptr、unique_ptr等
  • 编译链接机制、内存布局(memory layout)、对象模型
  • C++11 部分新特性,比如右值引用、完美转发等

一、精进基石

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部署
  • 产品上云公网发布/公网测试上线

最后是推荐的一些学习书籍,大家可以自行购买实体书学习,想要电子版的也可以点击链接加入群聊【后端开发技术交流群】:https://jq.qq.com/?_wv=1027&k=8Q8ZY2kH

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系统和应用性能》


最后祝大家接下来都能找到如意工作;最后温馨提示,不要忘记刷题哦,十年磨一剑,今日把示君;面试还是非常重要的,不仅要刷题,前辈们的面试经验也要多多学习一些~

猜你喜欢

转载自blog.csdn.net/m0_58687318/article/details/126842600
今日推荐