Linux下c/c++后端开发前景
虽然编程语言有很多,但在需要顶级性能的项目上,基本都会使用C++。
尤其是机器人、自动驾驶、AI等嵌入和实时系统,都是C++的主要应用方向,在这种层面,几乎没有竞争者。
比如熊厂的搜索引擎、推荐引擎等核心产品,鹅厂几乎所有产品都是C++开发。所以“学好c++将是通往大厂的敲门砖!”
如果学的好,能进BAT也是不错的,腾讯、百度、头条都招大量的Linuxc/c++,阿里云也招,另外游戏引擎,高频交易等也是c++的专属领域。
C++的性能固然强大,但它的范式和机制也给开发者造成很大的负担:
一是 项目开发效率低 ;
二是 学习困难,不好上手 ;
这也导致企业要想招一个合格的C++程序员十分困难!
在主流的编程语言中,c++对软件人才的编程能力要求最高,很多人由于畏惧的原因改学其他的编程语言。所以,学习C++技术的人员数量也很少,可以说十分稀缺。
如果你本身喜欢c/c++,同时也对Linux感兴趣,那就最好不过了。
首先我们要知道,学习编程都是想找个好工作,那就先从找工作的视角看一下待遇如何,然后再看一下大厂的招聘要求都有什么,最后探讨一下C++学什么怎么学等等各种疑难问题。
1、Linux下C/C++的招聘情况
Qt C++软件工程师,这个职位比较适合转型的小伙伴儿。
高级C++软件工程师,刚开始入行软件工程师的时候对异常处理、线上bug分析、程序段错误、基于设计模式的程序优化等等各方面问题缺少项目经验,解决bug的过程就是在积累这些能力,能解决各种bug的就是团队大熊猫,软件的知识和技能浩瀚如星空,需要永远保持饥饿状态。
Linux C++游戏服务器软件工程师,为什么游戏一般是C++呢?游戏需要用到游戏引擎,Google一下有几百种游戏引擎都是基于C++开发。游戏对算法性能要求非常高,程序优化就离不开设计模式和数据结构与算法,更复杂的多体物理场景需要非常扎实的数学基础。
招聘要求就是Linux系统、C++编程语言、数据结构与算法、设计模式、项目经验。
2、Linux C/C++ 服务器/后台开发指的是?
Linux C/C++ 服务器/后台开发是基于 Linux 上 的 C++ 编程。
但是相比 Java 系更强调 Linux 系统编程、网络编程能力,有的还会涉及到服务端底层协议和网络框架开发。
传统的 Java 、Go后台开发偏向 Web 开发,也就是接收前端请求,通过微服务互相调用,完成业务逻辑处理,然后返回给前端。
实际上在腾讯这边的 C++ 后台开发,也是类似的,本身有非常成熟的基于 C++ 的微服务体系,大多数开发也只需要关注业务逻辑就好,不过还是会要求 Linux 系统编程、网络编程等能力。
3、Linux C/C++ 后台开发方向涉及哪些基础知识?
C/C++ 语言特性和实现原理
计算机网络
网络编程 和 Linux 系统编程
操作系统原理
部分 Linux 内核原理,如内存管理、文件系统、虚拟内存等
Linux 常见命令使用
算法与数据结构
数据库使用及原理
常见 NoSQL组件,如 Redis、Memcached
版本控制 Git
非必选加分项:
分布式相关,如一致性协议比如 Raft 算法、分布式存储等
docker、k8s 等虚拟化和云计算相关的
系统设计能力,如短链服务、评论服务、Feed流系统、抢红包、秒杀
4、C/C++语言的基础知识和一些关键字和实现原理
指针、引用、数组、内存
引用与指针区别
C 和 C++ 的一些区别,比如 new、delete 和 malloc、free 的区别
虚机制:虚函数、虚函数表、纯虚函数
继承、虚继承、菱形继承等
多态:动态绑定,静态多态
重写、重载
智能指针原理:引用计数、RAII(资源获取即初始化)思想
智能指针使用:shared_ptr、weak_ptr、unique_ptr等
一些关键字的作用:static、const、volatile、extern
四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast
STL部分容器的实现原理,如 vector、deque、map、hashmap
模板特化、偏特化,萃取 traits 技巧
编译链接机制、内存布局(memory layout)、对象模型
C++11 部分新特性,比如右值引用、完美转发等
这里列出来的只是一些比较重要的部分,实际上可能只算 C++ 的冰山一角, 大家且学且珍惜吧,这不 C++11 还没整透彻,C++ 20 又出来了,生命不息,学习不止。
5、怎么学C/C++?
书籍推荐
《C++ Primer》
这本书基本包括了 C++ 11 的全部特性,最好把前面三部分:C++基础、C++标准库、类设计者的工具都看一遍。
《Effective C++》
第一本是重点,光看《C++ Primer》缺少实践的话,大概率还写不出合格的 C++ 代码,而《Effective C++》就是通过 55 条非常具体的做法告诉你什么样才是符合 C++ 编码规范的,可以缩短你写出合格 C++ 代码的时间,减少踩坑,强烈推荐必读。
《STL 源码剖析》和《深度探索 C++ 对象模型》
这两本可以分别完善你在 C++ 底层实现和 STL 源码、原理上的认识。
6、C++学习的一些小建议
学习编程语言不要过于纠结,不管是Java还是C++,编程语言的基础学起来都不是很难,三个月都可以搞定,C++这些编程语言仅仅是冰山上的10%,冰山下的90%就是Linux系统、数据库优化、设计模式、数据结构与算法、数学等等。能用到复杂数学的工作基本都是高大上了。C++学习不用特别担心难度问题,C++主要难点就是内存管理,目前有智能指针,已经没有C语言那么痛苦了,放心一步步学就可以了。
*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜