我是继续打 acm 还是把精力花到学习其他技能去?
读者提问
帅地,你好,有个问题我想问很久了。
我是山东某个双非的大一学生,软件专业。目前在校ACM队内参与训练。但我却一直很困惑,我们学校说实话很垃圾,但是每届都会出一两个进大厂的人,据我了解,很多以前都打过ACM。我们老师经常对我们说,只要好好训练,进大厂是很有机会的。
但是于我个人来说,ACM的题比较难,做起来有些力不从心,而且老师一开始数据结构都没讲,直接就教算法,后来就直接不太想做了,导致大一上学期也没做几个题,现在水平在队里有点落后。我校的ACM集训队在区域赛中经常能拿到铜牌,银牌有时候会拿。前两天银川站的有两个金牌一个银牌四个铜,算是最好成绩了。(本来有选拔来着,我没被选上),看的我也跃跃欲试。但是拜读您的博客,发现您是只靠刷leetcode和计算机基础进的腾讯,所以让我有些纠结。
我是将所有精力都放在打ACM上呢,还是分出一部分精力在学计算机基础和后端知识呢?还是干脆放弃ACM,好好刷leetcode学您推荐的那些书单呢?又或者说这几项都是不矛盾的?
我知道ACM拿奖会是简历很大的加分项,但是没有这个我的简历就无法被大厂通过吗?如果简历太空,我也可以考PTA 甲级和蓝桥,这两个东西要比ACM简单一些。而且ACM打到最后,即使获得了铜牌和银牌,那我的计算机基础会不会有欠缺,我的leetcode来不来得及刷?面试我能不能通过呢?最近我学完数据结构,就在PTA上刷了很多题,感觉要比ACM做起来顺手。还是希望帅弟给我一些建议,只要对我有用,我一定会尽全力去做,感谢地哥!
帅地回答
你的这个问题,我想好好和大家谈一下,我先简化下你的个人情况,方便其他球友参考,总结起来就是:学历一般,学校acm战绩也一般,想进大厂,我是继续打 acm 还是把精力花到学习其他技能去?
我先说两个读者的故事,这两个读者也是从大一就关注我,经常咨询我的,目前都大三。
读者一:二本,学校差劲,学习氛围也差,他没打 acm,我让他大一好好死磕刷题,之后刷计算机基础,再之后做项目,算是 leetcode 刷了几百道,然后计网和os在大二第一学期就刷了,之后做过几个项目。
也没参加啥比赛,目前拿了腾讯实习 offer 和阿里实习 offer。
读者二:二本,学校也差,不过学校也有 acm 队,学校最好的成绩是拿过省牌(忘了金还是银),不过这个同学挺喜欢刷题,所以大一大二就带在 acm 队刷题,他当时也矛盾,最后貌似是拿了个省铜,之后就开始刷基础知识。
算是把很多时间花在了比赛上,最后学习基础的时间少一些,项目经验也相对差一些,但是算法强一些,今年春招拿到了腾讯和网易实习 offer。
无论是读者一还是读者二,共同点是算法都还可以,学校都很一般,只是一个算法更强,另一个项目和基础更强,但都能获得了腾讯,阿里,字节这些公司的面试机会,之后凭实力拿到了 offer。
我想说的是,互联网大厂,学历不是唯一,硬实力也非常重要,实力过硬,也是很有机会进互联网大厂的。
所以对于你的情况,显然你在 acm 集训队,算法这方面还好,如果你不排斥的话,我觉得可以继续在打一年 acm,你现在大一,距离大三春招还有差不多两年,之后再用八九个月的时间,来学习其他,是完全来得及的。
如果你不喜欢打 acm,体会不到那种 beat100% 的乐趣,那么不继续也是可以的,之后可以刷题,做项目,找日常实习。
核心就是自己算法不能太差,基础搞扎实,进大公司,要嘛你有强大的算法能力支持,要嘛你有强大的项目经验,那么都是有很大概率进的。
另外就是,我是建议你花点时间去把链表,队,栈和二叉树这几个数据结构学一下,虽然 C++ 的 STL 有自带这些,但我觉得你即将大二了,数据结构还是得学一些。