Linux下c/c++后端开发前景

Posted C语言学习联盟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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++软件工程师,这个职位比较适合转型的小伙伴儿

Linux下c/c++后端开发前景


  • 高级C++软件工程师,刚开始入行软件工程师的时候对异常处理、线上bug分析、程序段错误、基于设计模式的程序优化等等各方面问题缺少项目经验,解决bug的过程就是在积累这些能力,能解决各种bug的就是团队大熊猫,软件的知识和技能浩瀚如星空,需要永远保持饥饿状态。

Linux下c/c++后端开发前景


  • 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语言那么痛苦了,放心一步步学就可以了。