我觉得你能给出这些建议,应该也是和你自己的经历有关系,那我也分享一下我的经历吧,口水话会比较多。
我和大多数的人一样,在高考之前没有接触过编程,没有参加过信息学竞赛。第一次接触编程是在高考完的那个暑假,实在是闲的蛋疼,看新生群里说大一学的是c++,于是就在网上开始以一种很奇怪的路径学习c语言,正式开始迈入计算机的大门。
在刚开学的那几天,有一次年级大会还是什么的,请了一个保研中大的师兄(不确定是不是zlm师兄了,记忆过于模糊)回来宣讲,那时候第一次听到了acm这个东西,并且留下了印象。大一的时候参加了acm的新生赛,那时候初赛是线上的,持续好几天的那种,现在看来那些题目实在是太简单了,但是对于只会一点语法的我来说很难,被精度、数据范围等一些简单的问题卡的很难受,但不断思考不断尝试之后ac的快感还是很快乐的。最后是过题数刚好达到线进了决赛,我们班一共3个人进了最后的决赛,另外两个刚好是我的「图灵班」舍友。那一次计机进决赛的同学特别少,反而软院的同学特别多,所以最后是cgq师兄他们队带着我们一群菜鸟去南海校区参加的。但决赛我打的非常的崩溃,我连最简单的签到题都写不出来,在快结束的时候通过了一道简单的博弈论,才不至于爆零丢人。虽然说这次经历没有什么明显的成绩,但依然让我感觉非常的快乐。
以上是我和acm第一次接触的全部。那时候的氛围不是很好(不像现在cy老师把氛围带起来了,还经常组织比赛和宣讲),我不知道有什么途径可以参加acm校队,也没有队友,所以在acm上也没有很明确的目标。再之后是大一那一年的校赛,同年级实在是找不到合适的队友了,一个人单挑又很怂,最后是随便找了两位大二的师兄一起组队参加的,那一次我们队一共写出了两个题,而且这两个题都是我ac的,第三题是一个非常简单的最短路模板题,但是那时候的我并不会最短路算法,而大二的师兄照着算法书也没捣鼓出什么来,所以最后就这样草草收场了。
大一校赛之后我就是偶尔在洛谷的试炼场刷题,也没有很系统很明确的路径,而且非常的佛系,没有固定的计划。
一直到大二校赛之前,「DeDeRong」这个队才组建。那一年的校赛,我们顺利的打到了前10。在赛后我们才知道,前10意味着我们获得了那一年广东省赛的入场券。
那一次的广东省赛经历也非常的奇妙,是第一次参加比较正式的acm赛制的比赛,那一场能做的题目不多,签完4个题我们就放飞自我开始吃东西了,时不时看看榜单,感叹下sysu机房比scnu好不知道多少。最后滚榜的时候,我们以倒数第三(?)的运气苟住了铜牌。
再之后我们确定了我们想去参加区域赛的想法,于是我们找到了当时的教练czm老师,凭借着省赛的铜,他愿意给我们那一年参加区域赛的机会。之后我们就开始有一些训练计划,但也是野路子罢了。
第一次参加区域赛是在南昌,那一场我们被签到题一个非常小的特判卡住了几个小时,最后两题榜尾打铁收场,那一场比赛可以说打击非常大,赛后吃饭也没什么心情,总之一切看来都非常的糟糕,也没想过会打的这么差。那一年czm老师给了我们hk站的机会,但那一年hk有点事情,最后很艰难的在深圳的超算中心成功举办了。那一场去的学校数量很少,一共就三四十个队吧,但都是强校。最后是一个比较巧妙地构造题,但我们被题目的一些范围条件卡了两次,罚时比较大。封榜前我们在铜尾倒一倒二的位置吧,最后一小时看了下确实没什么题可写了,就疯狂的刷榜分析在我们后面的队伍是否有过题,结束的时候只有两个队有希望超过我们,然后就很猥琐的去他们周围转悠看看他们到底过了没,确认了其中一支队伍没过题,另一支队伍没确认到,悬念依然留到了滚榜。很幸运,我们拿到了铜牌,我的第一个acm区域赛铜牌,那一个赛季scnu只有两个队拿了牌子,一个是cjh师兄他们队,另一个就是我们。
打完区域赛就准备开始找实习了。竞赛的经历让我笔试没挂过,面试的算法题也没挂过,最后也拿到了一些实习offer,然后决定去鹅厂实习。
那一年我们部门的实习生(不含算法岗,因为他们不在深圳不了解他们),只有我一个是本科生,其他的全是985硕士研究生,浙大、南大、中大、华工等。第一个练手项目是手写一个简单的kv系统,不能使用任何的框架,应用层协议需要自己定义。正式的项目是重构「腾讯民汉翻译小程序」(现在因为某些原因下线了)后端某一部分。最后我也成功的留用了,拿到了正式的offer,而其中一位华工硕士没有得到留用。
再之后就是保研了。老实说我当时没有想升学还是直接工作,所以交材料参与保研竞争也只是为了给自己多一种选择。很幸运,「DeDeRong」三个人都成功拿到保研资格了,这里面算法竞赛得到的奖项对我们的帮助非常的大,不过最后只有其中一个人选择去西交读研,另一个去了广附当信息学教练,而我回到了鹅厂当民工。
经历啰里八嗦到这也差不多了。
即便在相同的环境下,每个人的经历都非常的不同,所以有的建议并不适用所有人。就像有的人会说不要参加acm类的活动,而我会建议感兴趣的同学可以去尝试下,毕竟算法竞赛在奖学金、找工作、保研的事情上给予了我非常大的帮助。所以下面是根据我自己的经历产生的和你一些不太相同的想法和建议。
changfeng 如果想打好基础,建议把计算机专业课老师统一发的教材和上课的ppt好好学,我们作为计算机小白,看这些足够了
我认为这对于小白来说真的不够。scnu计科大部分的教材和PPT质量真的不怎么样,内容老旧,有时存在明显错误,老师自己都不一定能讲的清楚。部分黑皮书,真就是国外的教材,从计算机领域来看,黑皮书的覆盖面比国内的教材要更广,准确性更高,不知道你看的是英文原版还是中文翻译,可以尝试挑一部分感兴趣的内容看一下英文原版,会有不一样的感受。如果仅仅是为了考试,黑皮书当然不如你直接去看教材和ppt。
上大学我觉得很重要的一点是自我驱动。我那时候计科有一个什么软件课,是请的外面培训班的人来上课的,教的html、css、js、spring、maven、tomcat这些,那人的水平差的要死,用ide带补全都敲不明白,我都不懂怎么好意思来教学的。就不说学的好不好对不对了,跟着这样的人学也太慢了,而且学了也没什么卵用。在这种情况下肯定得自己额外找门路才对。
国内的课上完了会觉得没上一样,实践也都很简单,感觉似懂非懂,部分技术在工业界也不用,比如某老师喜欢的MFC。但如果看过一些国外的课并且做了一些lab的话,会有非常不一样的感觉。比如MIT6.824,这个课主要以论文驱动,lab用的是go语言,《MapReduce》、《Google File System》这些论文里描述的技术在工业界是实际应用的,能够更好的让你和工业界接轨。
工作之后我比较后悔的一点是没有花更多的时间去看黑皮书,没多刷刷国外的优质课程。所以大学期间还是尽量的多尝试吧,不局限于课内的东西,每一次的经历都是精彩的,或许在以后会对你有微妙的帮助。