你好,我是阿秀。
这篇文章的标题叫做“再次认真聊一聊,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这块只会