列举一下我所知道的部分(每个子领域都有几十成百上千甚至上万的c++从业者,仅限于中国本土的市场),还有相当大部分是未知的,需要进一步看别的答主的回答。所列部分,有的含金量高薪资高,有的处于没落的行业和面临淘汰的岗位,门槛低工作强度小收入低,有的在外企撤离中国之后将失去饭碗。在此一股脑全列出来,不做排位,因为我自己也说不准哪个待遇好哪个是坑,仁者见仁,各位看官且根据自己经验自行判断吧。
就我个人感觉是在项目和产品中尽可能不要用c++,尤其是面向业务的时候。只有在需要压榨机器性能的地方用c/c++。招聘一个合格的c++高级程序员是件十分困难的事情,而初级选手上阵很难优雅地写出容易后期维护的产品,而且开发新产品令人不放心的地方太多(c++的坑太多了,初级选手交付的code实在是无法信任),而且他们跳槽或换语言的心思很强,队伍容易不稳定。
下面是暴力穷举法:
各大互联网公司的基础架构部门,全公司通用组件和统一服务基础平台。如缓存、计费、消息队列等服务。
各大互联网公司算法部门,用于算法的工程实现,典型的如广告系统、推荐引擎。
各大互联网公司的云服务核心系统。
各大互联网公司和游戏公司的游戏开发。
一些互联网公司的社交引擎(在人人网、开心网没落之后工程师们组团分散到各个互联网产品中做社交引擎,从而带动起来的一个C++细分市场)
华为和中兴的终端、路由器、交换机、云存储、2012实验室几乎所有部门所有产品(有很大一部分是纯C的,不是C++)。
爱立信在中国设立的研发中心,各种接入层产品、网元管理系统产品,等等。
思科、朱比特在上海和北京各有一个研发中心,各种中高低端交换机、路由器。(思科的协议研发有一套开源的java平台,和想象中的略微不一样。透露一下,上海研发2012年c++校招题目是变态难,不含c11和模板元编程的语法,不含c++对象内存模型,纯粹是语法题,光这样都难到我一度怀疑c++是不是我自己的母语!!!完全是在语法层面出题,质量不是一般的高,至今我都佩服至极,不是发自内心热爱c++的同学绝对一道都做不出来。现在回过头来看,在软件工程里面,连一个c++作为母语的开发者都能遇到一大堆未知、未定义、隐晦的问题,那么这个语言一定是在一定程度上不适合做工程化开发的。这些都是坑,好的语言应当在编译期直接将任何看上去模棱两可的东西挡住,视为语法错误,而不是规定一大堆未定义的行为,或是反直觉定义的行为。一段代码能够根据直觉按图索骥才是好的代码,一个语言能够定义和直觉不冲突才是好的语言。好的语言不应该是智商超常且有极客精神的小众能玩好的,而应当是富有基本逻辑的大众工程师根据直觉就能写好的。)
腾讯几乎所有部门所有产品。
百度核心产品部门,如搜索引擎、贴吧。
各个桌面输入法和云联想。
各个浏览器。
各个杀毒引擎。
基于Ceph、zfs等开源文件系统做二次定制开发的云存储公司,或者公司内的存储服务部门,通常属于基础架构部。
国内的windows桌面应用软件和国外在中国设立的研发部门。很多都用到Qt和MFC(该过时淘汰了)。
一大票各种各样硬件公司的windows驱动程序开发。
微软在中国的桌面产品开发,如office、windows(不含互联网产品,如必应)。
联想、IBM、曙光、浪潮、戴尔、红帽、NetApp、vmware、华为、华三的绝大部分系统级研发部门(有些是纯C的如linux内核和驱动,不是C++)。(oracle中国系统研发部门已全裁,ibm中国系统研发部门已裁一大半)
国内外做SAN/NAS盘阵的公司,系统级研发(和上一条有重叠)。
各大企业级安全公司,如赛门铁克。
银行核心交易系统(很多是基于大机的)。
各种高端测试仪器公司在中国设立的研发部
图像处理(如人脸识别)
各种地图产品
音视频协议
无人机中偏硬件部分的研发
物联网中偏硬件部分的研发,包括通信模块
智能家居安卓底层开发(非APP)
视频监控公司的存储服务产品(含为视频监控服务的云提供商)
adobe中国(已裁员???)
各大各小手机厂商、山寨机厂商。
intel、amd等一些知名外企核心产品的辅助性产品部门会用到C++开发其核心软件的配套软件。(龙芯也是)
一些财大气粗的外企用C++制作的应用层软件,在中国设立的研发部门。(有些是纯属SB行为,有java和别的高级语言不用,非得用极其难用的C++)
一些外企公司的编译器研发,在中国至今仍有招聘。
存储备份软件。
一部分原先是纯C,后来升级到的支持c++的嵌入式系统,如一些单片机厂商,如一些传统行业的嵌入式(纯C>C++)。
航天、军工、卫星通信、铁路通信很多都是纯c或c++的,而且一大票是c98,在这个c++11/17/boost盛行的年代对其代码的原始程度简直是不忍想象。
培训机构的c++老师。
等等等等。。。。
必有误漏,欢迎指正和补充!
补充 我是分割线
银行软开,一般是网银客户端、安全协议、核心交易系统等用c++。但大部分知名银行软开用的是java。
EDA仿真软件(绝大部分是外企)在中国设立的研发部门,除了C++以外通常需要一些EE专业的门槛。
一次性或中短期的小规模通信外包项目,如08年奥运场馆的无线网建设。现在这个年代web化和H5风格的GUI比起08年已经越来越多了,当初的MFC制作的管理软件现在已经全面被新的GUI风格取代了,这块儿的C++市场越来越小。
国内的中低端路由器厂商(嵌入式设备)。
金融公司,高频交易中只能用c/c++,几乎别无他选!以前在美国有家金融公司不计成本挖山洞穿光纤也要拼命缩短信号传输延迟。速度就是生命(还要避免gc抖动)!c/c++的性能优势别的语言几乎无法取代。
一些SDK在中国的研发中心。(如MTK,在2010年左右在国内有海量招聘,不知现在怎么样了)。
oracle java虚拟机在中国的研发团队(人数简直是屈指可数,太小众了,几乎所有研发人员都在国外)。
同理,说到数据库,各种数据库厂商也不用多说了,研发部门几乎都不在中国,诸如oracle、DB2等,核心代码都在美国,中国研发团队的人数屈指可数。需要用到mysql的binlog解析和连接池有一定的c++需求,深度定制mysql的互联网巨头公司有一定c++需求,如淘宝。华为和一些系统集成公司的自研国产数据库(含内存数据库)用的是c/c++。最近大火的TiDB主要用的是GO,好像只有SQL接口层用了c/c++。
国内众多通信公司基于openflow二次开发的众多产品团队。
一些做GIS和三维数据库研发的公司
了解更多,请加Q群:521763391
作者:爱乐年华
链接:
https://www.zhihu.com/question/304959838/answer/613278773
来源:知乎著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。