再次认真聊一聊,Java or C++?
你好,我是阿秀。
这篇文章的标题叫做“再次认真聊一聊,Java or C++?”之所以叫再次,是因为大概在去年八月份的时候已经写过一篇文章聊了聊对于校招这块的语言选择,到底是选Java还是C++或者是Python?
当时也说过不建议学习Python的原因,而java还是C++的选择建议二选一就好,你要是基础弱的话就直接学Java把,没看过的可以去看下这篇文章:Java or C++ ?到底学哪个?
今天之所以再次说起这个话题,是因为短短一年时间里发生了很多事情,校招形势这块发生了翻天覆地的变化。
最明显的变化莫过于今年Java后端的一片红海、灰飞烟灭、哀嚎遍野。。。
1、变化
算上今年,我已经参加了三年的互联网秋招了。
第一年我是局中人,是学生,是以求职者的身份去参加秋招的;
后两年我是局外人,是帮很多人内推实习&校招岗位的内推官,是以岸上人的身份参加秋招的。
可以是说我以两种不同的角度经历了三年计算机秋招。
以前校招找工作的时候是没有线上面试这一说法的,也就是说你想找什么工作必须本人亲自去线下面,当时找工作是需要坐车去北上广深、武汉、南京这些城市线下面试的;
后来因为疫情等因素,慢慢流行起来线上面试了,比如用腾讯会议、飞书、Zoom这些软件或者直接使用牛客的在线面试平台进行面试;
计算机校招薪资也正是在这几年突飞猛进的,17、18 年的时候互联网校招信息远没有现在这么高,那个时候10K就算是很高的了。
后来就是人工智能、AI的春风刮到了互联网,算法岗最先起飞,逐渐开始夸张起来,甚至是变态起来。。。。一些公司甚至给算法岗应届生开出38K/月的超高薪资,但以前聊过不建议普通人从事算法岗,这里就不再赘述了:为什么我苦口婆心劝你不要找算法岗
再后来,风口慢慢蔓延到研发岗了,开始从 10K 涨到 15K ,再到现在的 20K、25K,研发岗总包也渐渐的由 15W 涨到 20W、30W,以至于现在很多 40W 的总包很多人都看不上眼了。。。
说出来你可能不信,如此翻天覆地般的变化就发生在这七八年间。
2、Java为什么这么多
说回今年校招,我前几天看了一下今年的内推数据,我在字节抖音这边工作,春招 + 秋招都参加了内推活动那个,加起来内推了超过 2000 名同学进去。
但很多同学都倒在简历关了,其中不少都是有着211高校背景的同学,挺可惜的。
其中挂的最多的莫过于那些Java后端的简历了。
不只是大中厂,就连一些小公司也被波及到了。
我一个朋友在长沙一家小公司当HR,是个刚刚度过创业期的小公司,今年打算在校招中招5个Java校招生好好培养,结果直接收到了一万七千多份简历、、
因为学Java的人真的是太太太多了,学习Java的人会这么多,Java简历会这么多,我想可能会有以下3个原因:
1、非科班转行
对于非科班来说,他们转行首选就是Java,看看市面上的各种培训机构,搞Java培训的太多了。。。
B站上编程类视频播放量最多的基本都是Java相关,不是Java基础就是Spring,要不就是Java项目。
2、学习难度
Java相比于C++,好入门一些,学的快,成熟的项目和Demo好做多了。
我只听说过Java三个月速成,找到工作的;还从来没听说过,C++三个月速成,找到工作的。
对于小白来说,一本C++ Primer你就要看至少2个月,加之很多人听说C++难学,直接放弃,转而学Java。
3、资料太多
以前网上是没有这么多学习资料的,现在各种满天飞的Java资料,八股文、学习视频多不胜数,你接收这些讯息变得容易太多了。
以前你想找《深入理解计算机系统》的读后感真的很不容易;这些满天飞的Java资料无形中就会促使你选择Java,因为随便就到手了,照着学就行了。
最终各种因素加起来导致学习Java的人真的超级多,明年Java后端只会更加严重。
但今天我不是来劝退Java的,Java天花板很高,是写业务的最好语言,也很值得学。
回到文章标题,到底学哪个?
3、两个实例
看到今年Java后端这么惨烈,很多24届甚至是25届的都慌了,不少大二或者研一的小伙伴都跑来私信我问Java刚开始学/学了一半,还能不能接着学了?
我在阿秀的学习圈里也收到不少类似的提问,先带大家看两个真实且具有代表性的案例:
案例1
下文是阿秀的学习圈中的一位24届本科学弟的提问原文:
秀哥好,我是24届来自某末流211CS科班的本科生,目标岗位是后端开发。
我从上学期初开始学Java(那会儿没想到之后Java这么卷),现在Java基础过了一遍,Java集合过了一遍(看过源码做过笔记,不过现在应该忘记了,要回去复习才行),也是用的Java刷的leetcode(目前题量150左右,不过是断断续续刷,很多需要二三刷才能巩固),然后Javaweb也看视频了解过一遍,现在刚看完Mybatis准备看Spring系列 计算机基础(计网,操作系统,数据库)这些跟着学校课程上完了,MySQL现在也在看实战45讲。
JVM之前看过两章,没继续坚持。项目打算看完ssm+springboot再开始弄,年底前搞两个项目+背八股+刷算法题看看能不能找到好的实习(难度系数略大,要一边应付学校课程一边多项学习齐头并进)
看今年秋招的情况,Java后端真是卷出天际,C++的情况会好些,我越发觉得迷茫外加略焦虑,在想着该不该转语言。
我想寒假左右或者下学期初找到实习(真的很想去大厂实习),可是转语言的话好像时间来不及了(对于找实习来说),没有实习外加我学历很一般 秋招希望估计会更渺茫……
但如果不转语言的话我会不会淹没在Java后端求职的红海之中😭(目标一直在大厂,但是也没抱太大期望) 我现在就犹豫是否转语言问题,还有我这种进度如果坚持下去未来能在卷上天的Java后端中有一席之地吗😮💨,望秀哥为我指点迷津🥹
下面则是阿秀在学习圈中对这位学弟的回复原文,其中的你则代表这位24届的学弟本人:
你都学了这么多内容了再去转有点不值当了,如果你刚开始或者只是简单过了一下Java基础知识,转就转了,但你现在MyBatis都看完了,马上就准备搞Spring全家桶了,不建议转了。
一是你学的东西已经不少了,这个时候转有点白做工的意思了;二如果你要转过来,不管是走Go还是C++又要重新开始,时间上浪费了很多了,可能赶不上寒假或者明年春招找实习了。
"尽量找实习 + 距离你秋招还有差不多11个月的时间,这11个月好好学 + 搞几个好项目",做好这几个,还是可以的,Java是卷翻天,但很多都是临时报佛脚的选手,基本功都够呛,JVM这块记得好好学。
另外互联网这边确实还是Java的岗多一些,比C++和Go都要多一些,即使大厂去不了,中厂也有不少Java厂,选择也会多一些,不要中途放弃才是真。
案例2
下文是阿秀的学习圈中的一位25届研究生师弟的提问:
秀哥好 本人是双九科班,研一刚入学。
暑假想了解一些秋招和就业的情况,就蹲了几个秋招群,发现今年就业情况着实离谱,和实验室学长聊天也发现自己和隔壁几个实验室目前拿到offer的都不多,之前有在C++和Java中摇摆,但因为Java学习资料多,就打算Java的。
但是目前了解到Java确实卷的有些离谱,所以又有转C++的想法。
下面先介绍一下自己的情况和一些希望秀哥解答的疑惑:
本人情况 本科Java和C++都学过,Java用的比较多,目前因为实验室项目用的是springcloud,所以正在学springboot,上岸后也断断续续用Java刷了一百来道力扣了。
C++因为学的时候就比较混,所以用的并不熟练,但是读C++程序还是没问题,以前也用过C++写过一些简单的作业,学的话应该也能很快捡起来。
最初决定Java的原因是很多中小企业用Java,但是最近还是越来越感觉应该冲一冲,不能这么咸鱼,加上导师还是很放羊,除了因为盲审,可能对毕业论文有一些要求。所以时间还是有一些充裕。
疑惑 :
1.因为实验室的项目是Java的,所以后面免不了用Java,但是想转C++的心着实是不时就出来骚动一下,尤其是因为Java和go的原因,请问秀哥,我这种情况转C++合适吗?
2.或者依旧主修Java,研二辅修go准备大厂比较合适?
3.关于C++的一些疑惑,看了秀哥的C++学习路线,和以前看的一些学习路线。发现都是对计算机基础和C++本身语法和使用的学习路线(不知道表达有没有问题),像Java的话就比较明确,web开发spring全家桶,微服务cloud,大数据hadoop,还有各种中间件组件。
但是C++应用范围很广,像后台/服务器,音频,视频,嵌入式的很多方向,但是具体是和那个方面有些联系的知识就不知道了,这些方向是秋招拿到企业offer后,正式入职才会确定吗?
还是在C++学习路线中自己选择性的尝试涉猎,这个是我很迷的,因为好像不同方向之间的壁垒很高,所以我对转C++有些迷茫的地方,因为对未来可以干什么不像Java那样明确。
下面则是阿秀在学习圈中对这位学弟的回复原文,其中的你则代表这位25届的师弟本人:
师弟你好,先说结论,像你这种情况就没必要转C++了,继续干Java就好。
1、你实验室的项目是最主要的因素,看得出来你们实验室横向应该不少,并且都是Java技术栈的,如果你要转c++,不仅需要单独抽时间出来学,还要在做Java横向之余做C++项目,时间很吃紧,精力也是大问题。
2、如果你愿意学Go的话,可以去了解一下,但没必要。Java是卷,但Java上限也够高,今年秋招Java如此之卷有很大的原因就是非科班转行学Java的太多,但很多人学的也不深,很多JVM、微服务这些都没咋懂就匆匆忙忙投简历了。
你这种情况属于有充足的时间学习 + 实验室横向练习,没必要转C++。如果你对Go感兴趣的话是可以学一手的,但建议你主要精力放在Java上。
3、你看的大多数的c++学习路线都是后端或者服务器这块的学习路线,包括我写的也是。至于音视频、嵌入式这些学起来跟我写的c++学习路线是有差别的,应用层的东西很多都不一样了。
至于你担心的,是有这个可能的,因为在很多公司看来,校招生是重视基础的,需要有一门主攻语言就好,不少人做的业务需要入职后才能具体确定,更有华为这种硬性转岗要求的存在,软转硬,硬转软也是常有的事。。。这个正常的,毕竟是要跟着业务和项目走。。。
4、结论
上面那两位学弟我都是建议他们继续学Java的。
至于你适合学哪个?可能要根据你的请款情况具体分析了。这里简单给个结论,你适合学哪个?
给最终建议之前,我先把求生欲打出来,以下给的建议只是个人看法,仅从上岸难易程度给出。下面这些建议也不代表绝对的权威性,只能说是参考。有不同意见的欢迎留言,喷子直接出门右转不送。
1、如果你是在校生&Java技术栈,已经学完了Java基础、JavaWeb,甚至Spring全家桶都已经学完了的这种,就不要转C++了,不值当了,继续走Java吧。
可以预见的是24届甚至之后的几届随着非科班转码的日渐增多,Java这块只会更多人学,不会少人。
特别是对于一些非科班的同学而言,更是如此,要好好学Java,下面这几篇文章是23届Java上岸经验分享:
面经👍:大厂去不了,中小厂我也满意
面经👍:顺利上岸字节电商后端,但也真的很不顺利
面经👍:民办三本,我从3K到15K的一年
其中有几个都是学校不太好,学历一般的同学,都是跟阿秀一样都是普通二、三本出身的同学来说,你会发现他们有的准备时间甚至比我当初更久,阿秀自己是提前了一年左右的时间去系统学习&准备。
2、如果你是在校生,Java刚开始学或者说刚开始学Web这块的东西,可以考虑换一下技术栈,学C++可能会比较好点。
C++这块除了一些常见的互联网岗位,比如后端、服务端、游戏开发之外,必要的时候甚至可以考虑往硬件和嵌入式方向靠一靠。
当然这是从上岸目的来说,如果你是认准了非互联网行业不去,那Java可以投递的岗位肯定比C++多多了。
多说一句,今年硬件和嵌入式开的都不低,有个师弟昨天跟我报喜说秋招是嵌入式技术栈,有个公司给他开了26K/月、、、
下面是一些C++方向的上岸经验分享,也许会对你有所帮助。
面经👍:上岸字节基础架构,大二转专业后我终于走到这一步
面经👍:抖音后端,实习offer。
面经👍:7天五面,提前批顺利上岸飞书后端
面经👍:前脚结束面试,后脚意向书就发来了。。。
面经👍:算法转开发,拿了3个offer!
面经👍:不管那么多,offer先接了再说
3、对于一些女同学而言,后端比较辛苦,如果不是真爱后端,有着明确的方向要求,其实可以多考虑一下前端。
更有甚者,如果只是想从事互联网行业,也可以选择测开或者测试行业试试,会轻松一些。
我对象就是做测试的,目前在携程;我在字节做研发,累的一批。。。结果她每月到手就比我少1K,基本每天都比我提前下班2个小时左右。。。我经常是想着想着心态就有点崩。。。
4、对于一些男同学而言,如果你只是想要从事互联网,不要把眼光局限在Java或者C++这两种后端语言上,前端也不是不可以。
下面是一些前端或者测开的上岸经验分享,也许会对你有所帮助。
面经👍:上岸快手,我选择一条不一样的路
面经👍:非科班转码,上岸小公司我也很满意了
面经👍:算法转开发&测开,拿了四个offer(上)
面经👍:算法转开发&测开,拿了四个offer(下)
如果你身边有正在准备24届或者25届的朋友,也可以把本文转发给他们,不要埋头只顾着傻傻的学,有时候也要抬头看看外面的世界。
本文转载自公众号拓跋阿秀