很多人都不知道学了c++之后能做什么,能找什么样的工作,能去什么样的公司,实际上,学了C++之后,能做的工作还是非常多的,如下所示:
一.实验室开发
不敢说C++是世界上最好的语言,但C++基本是工科生中的大语言。暂且不说计算机专业,很多工科专业,比如电信、电气、通信等专业,基本上正常的学习中都会使用到C++。
都说C++兼具面向过程以及面向对象的特性,既拥有比较优秀的运行速度,又有良好的大型项目开发能力,那简直可以制霸高校实验室了,当然我们知道,另外一门同样在高校实验室里与C++不相上下的语言,就是Matlab了。
很多人读研期间,基本都是是左手Matlab试探,右手C++优化,论文专利什么的就靠这两种语言双管齐下,在实验室里,基本所有的算法都是用C/C++写。
二.后端开发
不过等到真正要找工作的时候,就不是那么回事了,听说现在由于算法岗已经是诸神黄昏了,导致一大批人冲向了后端开发。
而主流的后端开发语言就那么几种,以Java、C++领衔,Python和Go紧跟其后,想通过C++找一份合适的后端开发工作,我建议可以从以下几个方面来提升自己:
这个基础扎实首先意味着你比较熟悉C++这门语言,知道不同版本的语言特性(比如C++11以及新出的C++20的区别),对常见的语言机制(比如多态、虚函数表、模板等)的底层有自己理解。
虽然说不看重你用什么语言,但是最起码你得比较熟练的使用一门语言吧。怎么才算熟练呢,大概C++底层机制、多线程编程、跨平台编程这些你都需要有所了解吧。
除此之外,编程能力的素养还体现在算法思想和数据结构的理解上,毕竟程序的基础就是算法和数据结构嘛,所以一些基本的数据结构,比如链表、数组、二叉树、队列之类的,还有一些基本的算法思想,比如贪心、分治、动态规划等都最好需要好好掌握一下。
这个就是科班与非科班比较明显的差距所在了,很多非科班转行的朋友其实编程能力很强,但是由于没有接受过系统的理论学习,所以在理论学习上会比较吃亏,而后端开发涉及的东西比较多,从网络到性能再到架构,都需要系统的计算机理论来支撑的。
想去做后端开发,起码得知道后端是什么吧,这就意味着你得知道一些基本的软件工程、软件架构、设计模式等知识,同时,搞个后端哪能不懂数据库呢,那你不得再学些诸如MySQL、Redis等数据库的基本操作吗?
当然到这,可能也就算是个入门水平,真正上手后端开发的时候,像微服务,中间件(Kafka/Zookeeper/Hadoop等)等相关概念与技术的学习不也得提上日程了嘛。
对于已经工作想转行的朋友来说,后端基础还是会比较看重的,大家可以对照着反思自己是否具备这样的能力了,如果还没有,可以抓紧时间好好准备准备。
三.客户端开发
C++已经是一个很成熟的语言了,除了后端开发其实它还有很多其它的开发岗位可以选择,自然而然的,就是客户端开发了。
相信大多数学C++的朋友都用过C++写桌面软件,那时候估计还是用MFC,照着代码书上敲一遍就能写一个比较简单的界面了,所以如果不想做后端,完全可以靠C++找一份客户端开发的工作。
只不过,做客户端同样也需要扎实的编程基础和计算机理论基础,同时可能还要熟悉Windows/C++编译链接机制、QT客户端开发技术体系、Windows消息机制等技术。
所以,假如你学的是C++,同时也不在乎业内莫名其名的岗位歧视链的话,找一个客户端开发的工作也是非常不错的。
四.音视频开发/多媒体开发
我们知道现在基本各个大平台都在做短视频,同时也不断接入各种直播模式,在这个趋势中,对于音视频/多媒体方向的开发需求越来越广。
比较成熟的互联网大厂通常会把音视频/多媒体技术方向独立出来,作为为全公司所有产品线提供中台的支撑。然后相关的处理算法会封装成SDK给各个业务中调用。
这说明音视频/多媒体开发是很重要的一份工作,而在对音视频或流媒体进行处理的时候,算法效率就是很重要的评价标准。这不就是C++所擅长的场景嘛。
所以呢,学了C++还可以选择去做音视频开发的方向,这个方向更偏向于具体的场景,比如播放器,比如直播平台,比如音视频特效等,当然了,C++更多的还是偏算法实现的方向,许多多媒体开发本身还是立足于平台,比如基于Android、iOS或者Windows,来进行满足平台特性的开发。
五.游戏开发
游戏开发也是C++的可以进军领域之一,像很多游戏引擎都是基于C++开发的,只不过游戏开发真的需要兴趣和热情。如果不是因为喜欢游戏,建议还是不要选择游戏开发的岗位。
不是说游戏开发前景不好,而是说这件事如果没有足够的热情很难走得很远,并且因为方向不是很大众,到时候想换方向了,可选择性就不是很多。
国内比较出名的游戏厂商就那么几家,但是投递的人却很多,这也导致这个行业的竞争很大,所以在招聘的时候会更看中你的游戏开发经历。
对于游戏开发的业务能力要求,大概包括游戏引擎的使用和了解,比如常见的Cocosa2d、Unity3D等,游戏引擎的实现原理和机制,还有面试时候基本都会问到的计算机图形学理论,计算图形学是游戏开发领域及其重要的理论基础,毕竟游戏离不开各种图像模型的渲染和处理。
六.嵌入式开发
上面几种岗位选择都是偏软件方向想的,而C/C++还有一类非常大的就业方向,就是去做嵌入式,嵌入式本身可能是偏硬件一点,但是现在做个什么事,都是软硬不分家的。
嵌入式的开发同样也会涉及到网络编程、并发编程等方面。通俗点解释可能就是,嵌入式代码是运行在别的小系统上,而不是传统意义的计算机上。
一般招聘嵌入式开发岗的公司大多是以硬件产品为主的互联网+公司,比如小米、华为等,进去公司很多都是在做物联网相关的工作,毕竟这是热点。当然也会有其它的业务方向,例如芯片、机器人等。
总结
说了这么多,有没有发现会C++还是能找到很多工作的。但同时身处这个内卷的时代,小编还是建议要多学习,努力提升自己在行业的适应能力以及竞争力,c++对于我们来说,就好比是一把弓箭,你光有一把弓箭,是没办法射大雕的。你还需要许多额外的能力和知识储备,甚至还需要一点预判的意识,才能够在合适的时机以合适的力度射出那一箭,而C++,只是那支射出的箭罢了。
你越熟悉它,箭头便愈发锃亮,破坏力也就越强,并且同时,空中盘旋的也不只有一只大雕,你还需要选择机会最大的那一只。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!