谢谢邀请,
从事c/c++开发已经差不多十几年了,C语言相对使用起来简单一些,做的项目多了经验积累多了,整体觉得更加可控一点,但是c++越做越觉得细节越多,也面试过几百人,经常有人在简历上写上精通c/c++,不知道哪来的勇气这么去做,当然更多是刚毕业不久或者没有多少经验的人写的简历,越是工作年限长了越是不敢轻易写上精通两个字,而且面试官一般看到精通两个字都会不自觉的多问几句比较难点的问题,这种状态下基本比较尴尬了,所以不要轻易在简历上写精通两个字,这两个字还是比较扎眼的。
如何成为一个优秀的c/c++高级工程师?1.由于这两种语言相对来讲比较靠近底层,所以需要对计算机原理有一定的了解,而且越是做到最后在排查大的问题的时候,就会涉及到很底层的东西,甚至会追到汇编里面找到问题的关键都是可能发生的事情,所以要做到优秀,计算机系统东西都是搞清楚,操作系统基本接口使用,计算机内存如何分配管理,堆栈静态数据区等都要有一个深入的了解,这都是区分高级语言的标记,高级语言不会关心底层实现细节注重侧重点在框架结构上,记得查找一个浏览器内核的内存泄漏问题,排查了一个多星期的时间,钩子函数寻找问题的根源,最后发现是c++引用计数出问题了,问题解决只是修改了一行代码,但是这种分析过程需要大量基本知识储备,内存管理思想都要用得上,所谓的优秀首先能解决各种底层的疑难杂症。
2.良好的编码基础,基本语法必须要扎实,有些老程序员对于回调函数都折腾不清楚,只会简单模块功能操作只能做一些模块化工作,c++语法细节由于比较繁杂当然也得跟上,很多大学开设的第一门编程语言就是c++,好在只是在面向对象上基本理念上涉猎,稍微深入一点可能就会打击到学习的积极性,泛型编程之类的操作不适合上来就去学习,好的基础是需要拿出时间来磨练,基础复习在任何时候都不晚,基础直接编写代码的质量,曾经有这么一个同事,编写c/c++代码几乎都是一遍编译通过,那时候刚入行不到一年时间,觉得太不可思议了,每次看到这位同事编写代码看着都觉得是一种享受,慢慢的也开始注重基本功的学习,然后不停的打磨基础,一本c primer plus 研究了不下十几遍,后来慢慢有点这么种感觉了,所以编程的学习不是想象的那么深奥,周围有个技术好的人,跟着学好好学能起到很大的作用。
3.必须经历过大的项目的洗礼,有了基础就需要有项目的锤炼,程序员的经验主要体现在项目经验上,面试新的公司主要还是看之前做过什么项目,在项目中担任什么角色,是不是具备单独带团队的能力等等都是考量的重点。项目实战才会把平时积累的东西全部拿出来,并且挖掘出自己最大的潜能。
没有哪一个程序员天生就是优秀的,所谓的优秀先是装出来,然后落在实实在在的每个语法细节,每个项目问题的解决上。
希望能帮到你。