今年C++又输麻了?

职场   2024-10-10 17:41   广东  

大家好,关注我的有很多 C++方向的同学,所以分享一下小林关于秋招 C++战况 的文章:

前几天,有位 25 届秋招同学找我看简历,同学学历很优秀,本硕都是 985,他主攻的是 C++ 语言,意向是互联网大厂后端开发岗位。

可是经过这 2 个月秋招情况来看,面试的机会很少,大厂进不去,而且发现 C++ 嵌入式岗位居多,让他非常困惑。

我看了同学简历,其实写的都还是比较认真的,可惜就是专业技能这一块,主要都是 C++ 方面的知识体系,比如 C++语言、Linux 网络和系统编程。但是对于后端组件的熟悉就很少,比如 mysql、redis、mq 这些组件都不熟悉,项目主要就是  Webserver 和基于网络编程的云盘项目。

整体来看后端相关的技术偏少,与后端开发岗位的要求匹配低,可能这也是导致投互联网开发岗位面试机会少的原因,即使难得有面试机会,也被说对常见的后端组件不太熟悉,或者项目没什么难度而挂了。

正好,我去年写过一篇分析 C++ 为什么投互联网公司面试机会少的原因,这次再和同学们一起分析一下。

C++ 后端痛点在哪?

我看过很多 C++  同学的简历,基本人手一个 Webserver 项目,就是基于Linux 网络编程做了一个项目,而实际上后端开发岗位并不需要你来写底层的网络编程的。

后端工作中最常用的是 mysql、redis、mq 这些组件,而很多 C++ 同学针对后端组件的学习都比较薄弱,并且做的项目也没有用到这些后端组件,所以很容易觉得你所掌握技术栈和后端岗位不符,相比于 Java 和 Go 同学就没有优势了。

互联网公司基本没有 C++ 后端岗位,后端语言主流都是 Java 和 Go,主 Java 的互联网公司有阿里巴巴、美团、快手、京东等等,主 Go 的互联网公司有字节、腾讯、滴滴、百度等等。

互联网大厂里有 C++ 后端岗位的就是腾讯,但是腾讯你懂,要进去还是有点难度的,而且腾讯很多项目都开始转 Go了,原有的 C++  后端项目也是老项目了。

所以,C++后端岗位能投的公司本身就不多,自然面试机会就少了,今年美团是发 offer 比较多的公司,美团基本都是 Java 后端开发,所以整体上,今年 Java 同学的秋招是比 C++ 好很多的。

有同学就说了,不是说大厂对编程语言不太看重,主要看重的潜力吗?

是的, 这句话是没错,也有 C++ 同学面进美团转 Java 的,能用 C++ 进互联网后端岗位同学的简历,我也看过,他们简历上项目还是会涉及 mysql、redis、消息队列这些后端组件的,虽然说语言上不匹配,但是后端方面是匹配的,所以关键要让面试官知道你是有后端开发的能力,而不是 C++ 开发的能力。

但是用 C++ 进互联网后端岗位还是少数人,既然都需要转语言的话,招聘方肯定更愿意招本身就熟悉 Java 或者 Go 同学, 毕竟培养新人也是有时间成本的,直接招语言匹配的,能更快上手工作。

从这个角度看,也能感受到,现在企业方更务实了,希望招的应届生都是能直接干活了,减少培养新人的成本,所以倾向都会招聘语言和技术栈方向匹配度高的同学,而且有实习经历的,那邀约面试的概率也会更高。

C++ 就没机会了吗?

这次讨论的是 C++  求职后端开发没有优势的问题,如果你明确是要求职后端开发岗位的,建议还是转 Java 或者 Go 语言,这两个才是后端开发主流的编程语言。

如果你还是对 C++ 有偏执,依然选择 C++,那你的项目一定要有涉及后端组件相关的项目,比如要有 MySQL、Redis、消息队列的组件,这样虽然语言不匹配,但是后端的技术还是匹配上的。

另外,C++同学也可以去投互联网客户端开发岗位,这个岗位就不需要后端的内容,面试的内容主要就围绕 C++、网络协议、操作系统、算法这几大块,正好都是大部分 C++ 同学所掌握的内容。

C++ 虽然在后端开发岗位不占优势,但是 C++ 就业的范围还是很广的,嵌入式行业、游戏行业、网络安全、工业软件行业都有 C++  开发招聘需求。

但是不同方向准备的项目就要不一样了,嵌入式行业的求职,你得用单片机做过嵌入式项目才行,比如智能小车、智能机器人等等;游戏行业的求职,就需要注重网络或者游戏类的项目;工业软件的求职,就需要注重 QT 客户端开发。

所以,C++ 是万金油没错,但是得在 C++ 基础上做这些行业相关的项目,才能增加竞争力,而不是用一个 webserver 打天下。

Java vs C++

C++ 同学很大一部分学习时间,都花在语言方面了,看过《C++ Primer 》、《effective C++》、《STL源码剖析》、《深度探索C++对象模型》这些书,可能才能比较好的掌握 C++ 的特性和底层实现,这些书都是很厚的,能坚持看完的还是少数人。

可能会出现一种很有意思的现象,C++同学学了好几个月,都还在学语言特性, 而 Java 同学,可能都做了 1-2 个项目了,主要也是得益于 Java 生态方面发展了很多年了,都一些标准的框架,拿来即用的,开发项目的成本底很多,而 C++开发一个项目的成本还是很高,如果项目引入 mysql 和 redis 组件的,编译还得引入这些动态库这些,关是这编译项目这一步,就卡住很多同学了。

稍微吐槽一点,C++写 sql 真实一言难尽,直接 string 拼接(在大厂也是一样),而 Java 和 Go 都有成熟的 orm 框架,SQL 和业务代码都做了隔离,项目的代码风格会更好,上手门槛更低。

C++ 因为能直接操作 Linux 系统编程和网络编程的函数,所以 C++ 是比较适合和底层打交道的,相反 C++ 的应用框架生态不如 Java  和 Go 成熟,所以 C++ 就不太适合做上层的业务类型的开发。

只有腾讯这种大厂,才敢用 C++ 做后端开发,因为他们花了很多人力,自研了自己的一套框架,而其他中小公司是没有这个实力和时间来搞这套东西,所以中小公司都是用 Java 或者 Go 来作为后端语言,Java 有开源的 Spring、Springboot、Mybatis、spring cloud 的框架,Go 有 gin、gorm、go-zero框架,都是拿来即用的,就很合用来开发后端业务。

学历好的同学,用 C++ 进华为、中兴这类通信类的公司也是可以的,这类公司主要是注重性能,偏向底层软件的开发,而不是后端业务开发,所以学  C++ 没毛病。但是如果单纯只会  C++,后端开发技术栈没学多少,学历再好,也很难进互联网公司的后端岗位,想往后端发展发展的,还是建议学 Java,因为它就是为这个后端行业而生的语言,即使互联网公司进不去,还能去求职国企、银行,这类公司同样也是以 Java 为主。

学历没有优势的同学,想往后端方向发展的,别冲 C++,大厂进不去,小厂C++后端岗位需求也少,到时候求职就很难受了,中小厂的后端公司主要以 Java 为主,岗位会比较多,学历没有优势的同学,学 Java 会更好,能获得面试机会也会更多一些。

C++方向在哪?

当然 C++ 不是非后端不可,想往嵌入式、音视频开发、图像处理、游戏开发、工业软件方向发展的,那还是得选择  C++。

去年有位双 985 学 C++同学分析过他秋招时候面试的公司:「双 985 同学,秋招拿了什么 offer?」,总共投递了 170 家,里面有一些面试通过的公司,可以作为 C++ 同学的投递参考。

虽然 C++ 可以投的岗位很多很多,但是C++ 同学不要用 webserver 一个项目投天下,不然会输的很惨,而是:

  • C++ 结合后端项目(应用 mysql、redis、mq 的项目),投后端开发岗位
  • C++结合嵌入式项目(应用 stm32 单片机、机器人的项目),投嵌入式开发岗位
  • C++ 结合音视频项目(应用 ffmpeg、视频编解码的项目),投音视频开发岗位
  • C++ 结合游戏项目(应用Unity、Unreal游戏引擎的项目),投游戏开发岗位
  • C++ 结合QT客户端项目(应用QT的项目),投工业软件开发岗位

最后,说一句,语言没有高下之分,任何一门主流语言,无论是C++还是Java,只要付出努力,都能收获成功。

每个语言适合的行业是不同的,选择行业的时候,最好先做好功课,看下这个行业主流的语言是什么,而不是学校学了这门语言,你就用这个语言,投所有行业的开发岗位。

编程指北
大厂开发, 分享计算机、编程、科班学习经验和计算机基础知识,CS系统学习网站: csguide.cn
 最新文章