在2023年还建议走C++这个方向吗?
首先需要明白大家都不是傻子,那么多人去卷Java不要以为他们傻,不管是选择Java还是C++,都是打工,既然是打工当然是选择具备工作机会多、投资回报率高、投资回报周期短等等特征的方向,Java就完美符合,几乎所有的互联网公司后端全部是Java,机会非常多。反观C++,职位少的可怜,C++方向需求最多的是中高级职位而不是初级职位,所以这个方向对新手极其不友好。
一定要理性的做选择,有一部分人张口闭口就是C++难,所以学C++的少,觉得自己学C++就证明比别人聪明,真相是C++各方面基本都是被Java吊打,任何一门高级编程语言对于程序员来说学习都是非常简单的事情,难的是业务场景如何妥善处理。
那好,心态摆正之后,再去分析自己真正具备哪些能力,真正对哪些方向感兴趣,以及这些方向的前景如何等等,这些决定了个人职业发展的高度。另外做选择的时候一定要考虑自身条件,比如Qt,如果是本科毕业做Qt C++是完全OK的,如果是研究生,那Qt C++只适合转型过渡一下,我研究生毕业第一份工作就是Qt C++。研究生如果一直停留在做Qt的水平,那不是公司的核心职位,薪资自然就不会很理想。想在职业发展上有大的突破,一定要去啃硬骨头。
选择编程语言一定要结合行业,不要觉得C++难而选择,比如我所在的工业领域,那必须选择C++。工业领域的机器人、自动驾驶、视觉等等清一色C++。如果是互联网行业,强烈建议选择java,我们同事本科毕业工作2年薪资都比我研究生毕业做两年C++高,这就是现实。我之所以没有放弃C++转去卷Java,一是研究生毕业年龄没有优势,跟小年轻卷太累,二是不想放弃自己的专业知识,没有涉及专业知识的工作感觉很虚。工作不卷,我每天都有一点时间去看SCI算法资料,这样坚持下去,2年以后能力应该是有比较大的进步,薪资应该也可以达到自己的预期。工作的选择就是这样,选择卷,每天就是应对各种扯皮的需求、bug等等,根本没有时间去看新的技术资料。
对于Java说了更多的是优点,对于C++说的更多的是缺点,我一直觉得做C++要有一种玩的心态,太着急赚钱就很难在C++领域有大的发展,Java的生态太丰富了,随便一个问题都能找到非常优秀的库可以直接引用,而C++不行,C++对于新手最大的难点在于开源库怎么用,这导致很多自学C++的小伙伴儿都倒在了这一步,学完C++感觉啥也做不了,一去面试就被打击,不像Java可以做出这系统那系统的,一会儿又是微服务一会儿又是高并发,技术亮点比较多。想学C++的一定要树立长期主义的观念,想做C++高性能程序,没有几年高强度的投入是不太可能的。建议学习C++的一定要提前规划,不要想着学到哪儿算哪儿。最好是跟着一个靠谱的教程去敲代码,学编程最关键的不是看过多少书,而是敲过多少代码。
C++基础与深度解析 - 深蓝学院 - 专注人工智能与自动驾驶的学习平台还有比较好的学习方法就是,带着问题去学习,比如先收集一下C++的常见面试题,比如i++和++i的效率谁高,虽然这些在实际开发中没有什么意义,但是面试却能看出一个人对待技术的态度。再比如必问的虚函数问题,虚函数怎么实现的,性能有哪些开销等等。再比如设计模式,最简单最实用的就是单例模式,一定要会手动写单例模式的代码,虽然仅仅是一个单例模式,手写还是很有难度的,比如很多实现采用原生指针,你可以用智能指针去优化解决内存泄露问题。
对于自学转型C++的小伙伴儿来说,数据结构与算法是难以逾越的砍儿,我们公司经常考的一道环形链表算法题,面试两年内我们技术老大说只有我自己做的是对的,很多算法在你刷题的时候感觉不难,但是到了面试的时候紧张的可能就忘了。数据结构与算法需要大量的刷题和总结,刷题的时候都是单一数据结构的应用,总结的时候需要思考这些数据结构的联系,仅仅停留在刷题就跟应试差不多,很难在工作中用到这些算法。我们实际做算法的时候,无向图数据结构用的非常多。很多初学者都是刷几道图的算法题,停留在DFS和BFS的层次,对于图的深层次应用完全没有了解过。
刷题推荐去牛客网,有很多经典算法和C++题目,还有很多公司真题、笔面试高频题可以练习,都是免费的,可以体验一下
牛客网在线编程_语法篇_C++入门