学c++,c语言将来能找那些工作啊?

Python011

学c++,c语言将来能找那些工作啊?,第1张

相信很多人接触编程都是源于大学期间的那堂C++语言程序编程,但是这门课却只告诉了你编程语言是什么,却没告诉你要怎么去熟练掌握编程。所以,不可避免的是许多人在毕业前夕才发现虽然学会了C++,但是好像却不知道能干什么,能找什么样的工作,能去什么样的公司。所以呢本文就从C++的角度出发,谈谈我对C++这门语言的理解。

咱这回不去谈什么复杂的应用场景,也不去聊语言底层的优化特性,就说说在大学里学了C++出来到底能干啥。当然了,由于C语言跟C++亲密的关系,咱就混淆一并讲了,道理是差不多的。

1 实验室开发

不敢说C++是世界上最好的语言,但C++基本是工科生中的大语言。暂且不说计算机专业,很多工科专业,比如电信、电气、通信等专业,基本上正常的学习中都会使用到C++。

都说C++兼具面向过程以及面向对象的特性,既拥有比较优秀的运行速度,又有良好的大型项目开发能力,那简直可以制霸高校实验室了。当然我们知道,另外一门同样在高校实验室里与C++不相上下的语言,就是Matlab了。

像我研究生期间就是左手Matlab试探,右手C++优化。论文专利什么的就靠这两种语言双管齐下。还记得在实验室里,基本所有的算法都是用C/C++写的。

最开始就学C++的基本都是老理工男了。就算指针再怎么难理解,虚函数表再怎么无情,也磨不灭我们这些工科生对编程的热情。

2 后端开发

不过等到真正要找工作的时候,就不是那么回事了。听说现在由于算法岗已经是诸神黄昏了,导致一大批人冲向了后端开发。

而主流的后端开发语言就那么几种,以Java、C++领衔,Python和Go紧跟其后。作为写了这么多年的老C++ coder了,哪能不去凑个热闹。

所以呀,学了C++之后,第一选择当然就是去面试后台开发的岗位啦。只不过我们都常说一句话,语言都不是最重要的。那对于学了C++想找后端开发的同学而言,什么最重要呢?

其实软件开发工程需要掌握的技能不外乎那么几点,各种经验分享和面经都已经说烂了。但是那些只是大的方向,具体涉及到的概念和技术点非常多,在这里也没办法全部罗列。总的来说,想通过C++找一份合适的后端开发工作,我建议可以从以下几个方面来提升自己:

一是、扎实的编程基础。

这个基础扎实首先意味着你比较熟悉C++这门语言了,知道不同版本的语言特性(比如C++11以及新出的C++20的区别),对常见的语言机制(比如多态、虚函数表、模板等)的底层有自己理解。

虽然说不看重你用什么语言,但是最起码你得比较熟练的使用一门语言吧。怎么才算熟练呢,大概C++底层机制、多线程编程、跨平台编程这些你都需要有所了解吧。

除此之外,编程能力的素养还体现在算法思想和数据结构的理解上。毕竟程序的基础就是算法和数据结构嘛。所以一些基本的数据结构,比如链表、数组、二叉树、队列之类的,还有一些基本的算法思想,比如贪心、分治、动态规划等都最好需要好好掌握一下。二是、系统的理论知识。

这个就是科班与非科班比较明显的差距所在了。很多非科班的同学其实编程能力很强,但是由于没有接受过系统的理论学习,所以在理论学习上会比较吃亏。而后端开发涉及的东西比较多,从网络到性能再到架构,都需要系统的计算机理论来支撑的。

所以如果连计算机网络、操作系统、计算机组成原理、编译原理这些书都没见过的同学,需要赶紧买几本回来压压惊了。

三是、后端基础。

想去做后端开发,起码得知道后端是什么吧。这就意味着你得知道一些基本的软件工程、软件架构、设计模式等知识。同时,搞个后端哪能不懂数据库呢,那你不得再学些诸如MySQL、Redis等数据库的基本操作吗?

当然到这,可能也就算是个入门水平。真正上手后端开发的时候,像微服务、中间件(Kafka/Zookeeper/Hadoop等)等相关概念与技术的学习不也得提上日程了嘛。

当然对于校招生来说,由于的确是缺少大型的上线项目经验,所以对后端基础的要求不会太高,更多的是看编程能力和计算机理论基础。不过倘若是已经工作想转行的同学来说,后端基础还是会比较看重的。

这三点是在我看来目前互联网公司比较看重的地方,大家可以对照着反思自己是否具备这样的能力了。如果还没有,可以抓紧时间好好准备准备。

3 客户端开发

毕竟C++已经是一个很成熟的语言了,所以除了后端开发其实它还有很多其它的开发岗位可以选择。自然而然的,就是客户端开发了。

相信大多数学C++的同学都用过C++写桌面软件吧。那时候估计还是用MFC,照着代码书上敲一遍就能写一个比较简单的界面了。所以如果不想做后端,完全可以靠C++找一份客户端开发的工作。

只不过,客户端也并不容易呀。做客户端同样也需要扎实的编程基础和计算机理论基础,同时可能还要熟悉Windows/C++编译链接机制、QT客户端开发技术体系、Windows消息机制等技术。

所以,假如你学的是C++,同时也不在乎业内莫名其名的岗位歧视链的话,找一个客户端开发的工作也是非常不错的。只不过相较于后端开发,你可能需要重新审视客户端这个角色。

嵌入式软件开发:例如单片机,dsp,arm等;基于嵌入式操作系统的应用软件,驱动程序;基于大型服务的底层任务,如相应的协议栈。

ios手机app的开发,安卓app的开发都用c了

一般企业岗位为嵌入式软件工程师,驱动工程师,软件工程师等相关职位

你所学的就已经是偏向嵌入式开发了,不过从你专业来看,建议向嵌入式软件开发.因为硬件开发需要专业知识太高.

嵌入式软件开发重点中的重点就是学好C语言.C的灵活,和全面的内存管理使得C语言永远脱离不了底层控制的开发.数据结构和算法适当看下,现在你如果直接找底层驱动类开发的工作,基本上是很困难.现在嵌入式方向用到的高深算法基本没有(由于在大部分嵌入式开发中,CPU和内存很难达到目前计算机的程度,所以高深算法用不到太多).

剩下的就多看看操作系统,了解操作系统对今后的工作很有帮助.建议学习下LINUX,多了解目前开发主要应用的一些OS系统(有的需要多任务实时操作系统,有的是单任务操作系统,种类很多),再有就是多熟悉各操作系统下的编译环境.

再有,要学习得非常透彻的就是:要了解计算机的内存分配,要细化的来学习.在嵌入式系统中,内存是很金贵的,在有限内存中,做到不浪费,不增加内存是个难题.所以,这个是很重要的.

做到以上你就可以放心大胆的去找嵌入式软件开发的相关工作了.

另外补充下:不是说学习了C++和JAVA就能从事软件开发工作,软件开发工作多方向,学了这2个,也就是能做应用软件.控制类的是做不来的.何去何从,自己考虑吧.

PS:看到"貊氏游魂"仁兄的说法真好笑,既然知道自己是初学者就别对他人说:如果想用C找工作,一般是在说笑.我觉得你在说笑.就目前软件开发行业信息,全世界软件开发的60%大多是嵌入式开发,做嵌入式开发不用C你用JAVA试下.

学会你那3种多说做做应用.你说的高手是做什么的?如果真对你说出这样的话,那么他肯定不是高手.另外说下,软件开发做应用只是很小的一方面.别把软件开发视作想当然.应用软件并不代表整个软件开发.