学c,c语言将来能找那些工作啊
相信很多人接触编程都是源于大学期间的那堂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这门语言了,知道不同版本的语言特性(比如C11以及新出的C20的区别),对常见的语言机制(比如多态、虚函数表、模板等)的底层有自己理解。
虽然说不看重你用什么语言,但是最起码你得比较熟练的使用一门语言吧。怎么才算熟练呢,大概C底层机制、多线程编程、跨平台编程这些你都需要有所了解吧。
除此之外,编程能力的素养还体现在算法思想和数据结构的理解上。毕竟程序的基础就是算法和数据结构嘛。所以一些基本的数据结构,比如链表、数组、二叉树、队列之类的,还有一些基本的算法思想,比如贪心、分治、动态规划等都最好需要好好掌握一下。二是、系统的理论知识。
这个就是科班与非科班比较明显的差距所在了。很多非科班的同学其实编程能力很强,但是由于没有接受过系统的理论学习,所以在理论学习上会比较吃亏。而后端开发涉及的东西比较多,从网络到性能再到架构,都需要系统的计算机理论来支撑的。
所以如果连计算机网络、操作系统、计算机组成原理、编译原理这些书都没见过的同学,需要赶紧买几本回来压压惊了。
三是、后端基础。
想去做后端开发,起码得知道后端是什么吧。这就意味着你得知道一些基本的软件工程、软件架构、设计模式等知识。同时,搞个后端哪能不懂数据库呢,那你不得再学些诸如MySQL、Redis等数据库的基本操作吗?
当然到这,可能也就算是个入门水平。真正上手后端开发的时候,像微服务、中间件(Kafka/Zookeeper/Hadoop等)等相关概念与技术的学习不也得提上日程了嘛。
当然对于校招生来说,由于的确是缺少大型的上线项目经验,所以对后端基础的要求不会太高,更多的是看编程能力和计算机理论基础。不过倘若是已经工作想转行的同学来说,后端基础还是会比较看重的。
这三点是在我看来目前互联网公司比较看重的地方,大家可以对照着反思自己是否具备这样的能力了。如果还没有,可以抓紧时间好好准备准备。
3 客户端开发
毕竟C已经是一个很成熟的语言了,所以除了后端开发其实它还有很多其它的开发岗位可以选择。自然而然的,就是客户端开发了。
相信大多数学C的同学都用过C写桌面软件吧。那时候估计还是用MFC,照着代码书上敲一遍就能写一个比较简单的界面了。所以如果不想做后端,完全可以靠C找一份客户端开发的工作。
只不过,客户端也并不容易呀。做客户端同样也需要扎实的编程基础和计算机理论基础,同时可能还要熟悉Windows/C编译链接机制、QT客户端开发技术体系、Windows消息机制等技术。
所以,假如你学的是C,同时也不在乎业内莫名其名的岗位歧视链的话,找一个客户端开发的工作也是非常不错的。只不过相较于后端开发,你可能需要重新审视客户端这个角色。
绛旓細姣旇緝鏄庢樉鐨勬槸鍙互鍘籌T鍏徃锛屼粠浜嬬數瀛愬晢鍔★紝閫氫俊锛岃蒋浠剁瓑琛屼笟 褰撶劧涔熷彲浠ュ幓閲戣瀺鍏徃鐨勶紒
绛旓細涓嶈繃瀵圭數璺殑鍘熺悊瑕佹眰瑕侀珮锛屽祵鍏ュ紡浜烘墠涔熷緢缂猴紝鎵嬫満鍐扮绌鸿皟绛夐兘鐢ㄥ埌浜锛孋瑕佸鐨勭浉褰撶簿閫氬彲浠ユ悶搴曞眰寮鍙戝惂锛屼綘瑕佸杞欢寮鍙戞劅鍏磋叮鍙互鍦ㄥJAVA 鎴朇++锛岃繕鍙互瀛缃戠珯缂栫▼ASP.NET锛屽洜涓轰綘鏈塁鐨勫熀纭浜,鐩墠甯傚満涓婇渶瑕佸ぇ鎵圭殑C璇█锛屽墠鏅槸涓嶉敊锛宸ヤ綔鏂归潰锛氳蒋浠跺伐绋嬪笀锛屽拰閫氫俊琛屼笟 ...
绛旓細鍙互銆備絾涓瀹氳瀛︾簿銆傝鑰绋嬪簭鍛樼殑璇佷功锛屽嚭鏉ュ仛杞欢宸ョ▼甯堬紝鍏堝湪杞欢鍏徃鐨勯」鐩粍鍋氬姪鎵嬶紝鎱㈡參灏卞彲浠ュ弬涓庣紪鍐欎簡銆傚緢涓嶉敊鐨勮亴涓氥
绛旓細瀛璇█鑳骞插槢锛熻鎴戜滑涓璧蜂簡瑙d竴涓嬪惂锛丆璇█鏄竴绉嶉潰鍚戣繃绋嬨佹娊璞″寲鐨勯氱敤绋嬪簭璁捐璇█锛岄傚悎寮鍙戝浐浠舵垨渚挎惡寮忓簲鐢ㄧ▼搴忥紝鏄渶骞挎硾浣跨敤鐨勮瑷涔嬩竴锛屽C璇█鍙互骞插緢澶氫簨鎯咃細1銆佺紪鍐欏簲鐢ㄨ蒋浠讹細Linux鎿嶄綔绯荤粺涓殑搴旂敤杞欢閮芥槸浣跨敤C璇█缂栧啓鐨勶紝杩欐牱鐨勫簲鐢ㄨ蒋浠跺畨鍏ㄦч潪甯搁珮銆2銆佺紪鍐欑郴缁熻蒋浠跺拰鍥惧舰澶勭悊锛欳璇█...
绛旓細鐔熺粌鎺屾彙C璇█ 鑳戒粠浜浠涔堝伐浣滃晩 鍗瀛璇█锛屾病鐐圭敤锛屽繀椤昏鍐嶈繘淇紒 缂栫▼java锛宑++鏈甯歌浜嗭紝绛夊埌杩欎簺瀛︾簿浜嗭紝鎵嶆湁璧勬牸璋堢紪绋嬨 杩欐牱灏卞彲浠ュ叆浼佷笟浜嗭紝鍏堝綋涓皬绋嬪簭鍛橈紝鍐嶅崌銆 鑻ユ彁鍓嶆湁鏈簨鑳借冧釜缂栫▼绛夌骇璧勬牸璇侊紝灏辨洿濂戒簡銆 鍦ㄥ叿浣撶偣锛屾墍鏈夌綉缁滆蒋浠剁殑寮鍙戦兘绂讳笉寮c璇█鐨勫熀纭锛屼絾涓嶈兘...
绛旓細瀵逛簬宸ヤ綔锛屼綘瀛︿細c骞舵病鏈浠涔堝伐浣滆兘鎵撅紝浣嗗浜庣紪绋嬩綘鍗磋兘鐢辨杩涘叆鐮佸啘鐨勯棬銆傚浼歝鍚瀛︿範鍏朵粬璇█璧锋潵涔熶細瓒婃潵瓒婂鏄撱傚綋浣犳帉鎻″闂ㄧ紪绋嬭瑷鏃讹紝濂藉伐浣滆嚜鐒跺氨鏈変簡
绛旓細鑲畾鍙互锛涓嶈繃灏变笟闈㈡瘮杈冪獎銆備粠璇█瑙掑害鏉ヨ锛屽崟鐙細C鍙互鍋氬祵鍏ュ紡寮鍙戯紝瀹夊崜搴曞眰寮鍙戯紝Linux鐩稿叧寮鍙戠瓑绛夈傚彲浠ュ仛鐨勮繕鏄緢澶氱殑銆 涓嶈繃濡傛灉鍙互鍐嶅涓浜汣++锛屽氨涓氶潰灏变細骞垮緢澶氥 鑰屼笖鏈塁鍩虹瀛++骞朵笉闅俱備粠鎶鑳借搴︽潵璇达紝濡傛灉鍙細C璇█锛鑰屾病鏈夌浉鍏崇殑绠楁硶/纭欢/Linux/绯荤粺绛夋柟闈㈢煡璇嗭紝閭鎵惧伐浣寰堥毦銆
绛旓細绛夌劧瀛︿範杩欎簺鐨勫墠鎻愪綘蹇呴』瑕佸鑷繁鏈変俊蹇冿紝瑕佹湁濂界殑鑷帶鑳藉姏锛屾垨闄ら潪浣犳槸涓ぉ鎵嶃傚懙鍛碉紒鏈鍚庤繕鏈変竴涓缓璁紝灏辨槸浣犳渶濂芥壘涓涓蒋浠跺鏍″幓瀛︿範銆傝繖鏍锋晥鏋滀細濂戒簺锛岃鏁堜篃姣旇緝蹇紒绁濅綘鏃╂棩鍦嗕綘鐨処T姊︽兂锛佷互c璇█涓轰緥瀛愶細瑕佺湡姝g殑瀛﹀ソc璇█,棣栧厛瑕佹妸澶栧洿鐨勭煡璇嗙殑瀛﹀ソ,棣栧厛鏁板涓嶈兘澶樊!鑻辫涔熻浼氫竴鐐.鍏...
绛旓細娓告垙瀛﹂櫌鑱屼笟鍩硅鏄潰鍚戠ぞ浼氭帹鍑虹殑涓濂楀畬鏁磋亴涓氬煿璁绋嬩綋绯,閫氳繃鍏ㄦ棩鍒舵垨涓氫綑 8-10 涓湀鐨瀛︿範,鍏ㄩ潰鎺屾彙娓告垙璁捐涓庡紑鍙戠殑鎶鑳,骞惰兘澶熷湪娓告垙浼佷笟浠庝簨娓告垙绛栧垝銆佹灦鏋勮璁″笀銆佹父鎴忕編宸ャ佹父鎴忓姩鐢昏璁″笀銆佹父鎴忕編鏈璁″笀銆佹墜鏈烘父鎴绋嬪簭鍛樸佺綉缁滄父鎴忕▼搴忓憳銆佹父鎴忕▼搴忓紑鍙戝伐绋嬪笀绛宸ヤ綔銆 涓骞村墠鐨勫叚鏈,姹囦紬鐩婃櫤鍦ㄥ浗鍐呮帹鍑轰簡...
绛旓細鏈嬪弸浣犲ソ锛屽緢楂樺叴涓轰綘瑙g瓟闂銆瀛︿範c璇█鏄ソ鎵宸ヤ綔鐨勫搱锛屽洜涓哄畠鏄竴闂ㄦ妧鏈搱锛屾妧鏈湪鎵嬪湪鍝兘鑳芥椿锛岃屼笖杩欎釜鏂瑰悜鐨勫伐璧勪篃寰堥珮鍝︺傚缓璁湅鍙嬪彲浠ュ涓柟鍚戝彂灞曪紝姣斿璇碕ava銆佸畨鍗撱乮OS 10绛夌瓑鍝堛傚笇鏈涗互涓婄殑瑙g瓟鑳藉甯姪鍒颁綘銆傛湜閲囩撼銆