关于学科竞赛的经验
Posted 想当探险家的提莫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于学科竞赛的经验相关的知识,希望对你有一定的参考价值。
关于学科竞赛的经验
(本文约1000字,阅读只需要3分钟哦?)
莫西莫西,我系提莫莫队长,平时喜欢种种蘑菇。
起因是思梦姐姐找到我,希望给20级的同志分享下学科竞赛相关的经验,于是乎我答应了,于是乎又有了新的故事。
emmm,我在线下已经和部分师弟师妹们分享过了,在这里以文字的形式将分享的内容分享出来,方便师弟师妹们学习。
不过感觉效果好像不太好呢,是听的有点懵还是啥。如果有啥建议,请告诉我哦,我们一起努力!
文章目录
为啥学习
学习的目的,是为了获取竞争优势,增加选择机会,提升认知水平。
人生就是一个不断学习的过程,终究有一天,我们会感谢现在努力学习的自己。
说直白一点,学习就是为了以后能拿高薪,能更好更体面地活着,成为一只有思想的猪,拱各式各样的白菜。
为啥竞赛
不挂科的大学不是完整的大学(×)
不竞赛的大学不是完整的大学(√)
以赛促学,只有去参加比赛,你才能知道自己掌握了什么知识,哪些知识还不熟悉。
学科竞赛总览
主要是学校发了通知的竞赛,当然,除了以下列出来的,还有很多很多的竞赛
算法类
- 蓝桥杯
- 中国高校计算机大赛–团体程序天梯赛
- ACM(ICPC、CCPC)
项目类
- 中国高校计算机大赛–大数据挑战赛
- 中国高校计算机大赛–网络技术挑战赛
- 中国高校计算机大赛–移动应用创新赛
- 中国高校计算机大赛–微信小程序应用开发大赛
- 2021粤港澳大湾区未来城市场景大赛
- “中国软件杯”大学生软件设计大赛
- 中国大学生服务外包创新创业大赛
- 粤港澳大湾区IT应用系统开发大赛
- 全国大学生人工智能创新大赛
- 中国软件开源创新大赛
- 机器人夺宝奇兵大赛
- 计算机设计大赛
CTF类
- 强网杯
- 网鼎杯
- 红帽杯
- 蓝帽杯
- 广东大学生网络安全攻防大赛
非本专业类
- 大学生数学竞赛
- 全国大学生数学建模竞赛
- “泰迪杯”数据分析技能赛
- “泰迪杯”数据挖掘挑战赛
- “外研社•国才杯”英语写作、阅读大赛
综合类比赛
- “互联网+”大学生创新创业大赛
- “挑战杯”全国大学生课外学术科技作品竞赛
非专业类
- XXX微电影比赛
- XXX篮球赛
- XXX知识竞赛
- XXX设计大赛
- XXX演讲比赛
- XXX征文比赛
- XXX情景剧
- XXX主持人大赛
- XXX辩论赛
- XXX歌手大赛
- XXX朗诵比赛
- XXX书法比赛
- ……
竞赛经验分享
在这三年间,我也参加了不少的竞赛,下面主要分成算法,项目,CTF这三大类来讲。
当然,我也参加过数学建模,数据分析之类的比赛,由于篇幅原因就不展开讲了。
算法相关
程序 = 算法 + 数据结构
学习算法也不只是为了比赛,更重要的是提高自身代码的水平。
除此之外,进大小厂面试都会让你现场解题的,例如实现某个功能的代码需要怎么写。
经历
大一的时候跟大家一样,最先接触到的竞赛毫无疑问就是算法竞赛,就是那个新生赛,当时我也是误打误撞获得了三等奖,也有点可惜吧,差一道题就是一等奖了,做算法题有时候确实很蛋疼,思路好像没错,结果也好像正确,但就是AC不了,很可能就是某处细节错了,那也没办法咯。
后面也是去参加蓝桥杯,5道填空题和5道编程题,怎么说呢,蓝桥杯更像是考试一样闭卷做题,提交之前,你不知道你写的代码是否完全正确的,也有的人自信满满,以为写的代码全对的,结果全错了。同时,我认为蓝桥杯是上述各种各样的比赛中,最容易获奖的,基本就是参加了,只做出两三道填空题就是省三了。
蓝桥杯也俗称“暴力杯”,会一些暴力算法就能省二以上了,当然,我觉得蓝桥杯是越来越难了,可能也是被骂“暴力杯”多了,现在只靠暴力就会比较吃力,由于个人原因后面没怎么刷题了,最后也是获得了省二。
关于天梯赛,正赛其实不难,难度可能比蓝桥杯略低一点,有简单的签到题也有ACM级别的大师题,而且做题的时候可以无限次提交,能随时知道你的代码是否正确。emmm,但是嘛进正赛之前学校自己组织的选拔赛就比较烧脑,基本就是拿别的学校的ACM选拔题来做,难道要比蓝桥杯难,比ACM低一点,做起来确实痛苦,但也没办法。这个比赛说是团体赛,其实也还是各自做各自的题,我最后也是获得了省一。
总结
这种算法类的比赛也没什么好说的,就是刷题刷题刷题刷TM刷烂它,基本就是努力与收益是成正比的,会了就是会了,不会就是不会。
平时刷题的时候,如果一道题超过20min还没思路的话,就不要死磕了,这样刷题的效率太低了,这时候就应该去看看题解,参考一下别人的思路,然后再自己动手去实现一遍。
每次做完一道题,要去复盘一下这题,也看看别人的题解,看看是不是别人的思路更棒或者说代码写得更漂亮,可以模仿下别人的代码风格。
刷题网站
我比较推荐下面这三个,问就是好用:
力扣:https://leetcode-cn.com/problemset/all/
洛谷:https://www.luogu.com.cn/
牛客竞赛:https://ac.nowcoder.com/acm/home
图1 洛谷
图2 力扣
图3 牛客
假如刷题刷出成就感了,不妨参加一些周赛,以至于能够更好的打击自己,获得学习的动力.
书籍推荐
我推荐的观看顺序是:白书或者紫书,当然头铁的话也可以选择算法导论。
下面是我在百度上找的白书、紫书这些书籍的介绍
-
刘汝佳老师系列图书(紫书, 蓝书, 绿书)
-
挑战系列丛书(白书)
日本的前世界总冠军写的书,题目难度循序渐进, 从易到难,比较适合想打算法的新手来看。 一本讲数据结构一本讲算法,全部弄懂的话水平也差不多哪里了
图4 紫书
图5 白书
项目相关
项目是什么?
项目是人们通过努力,运用各种方法,将人力、材料和财务等资源组织起来,根据商业模式的相关策划安排,进行一项独立一次性或长期无限期的工作任务,以期达到由数量和质量指标所限定的目标
简单来说,项目就是做一件事,例如开发XXX系统。
它和上面的算法相比,更考验一个人的综合能力,所以项目经验也是很重要的。
面试的时候,HR也喜欢问你有无项目经验,项目是怎么实施的。
说了那么多废话,可能都还云里雾里的,接下来我就分享下我的亲身经历:
经历
今年不知道几月,我参加了全国高校计算机大赛–网络技术挑战赛,
参加比赛,至少要先要看看这个比赛是干嘛的吧?
哦,比赛分为三个阶段,资格赛,选拔赛,挑战赛,还可以组队
既然能组队,那当然是去找人啦,找谁呢?那当然是去找大佬啦
那谁是大佬呢?拿过奖的就是大佬呗,师兄们都在准备考研和工作没空
那就问问同级的呗,他们对这个比赛不感兴趣,那没关系,找同班的呗
结果拉了一个经常在群聊里吹水的同志,拉了一个实力强又默默不说话的宿友同志
又觉得大一师弟师妹比较有空,结果又拉到了一个师妹
哦豁,人齐了,那就开干
资格赛是干嘛的呢?哦,答题,跟数通有关的
数通是啥?理解为计网和路由与交换的强化版吧
那有啥办法,看视频学习呗
侥幸到了选拔赛阶段,什么?要完成一个作品?那就分工呗
吹水先生和师妹负责文档和打杂,宿友同志负责前端,我负责后端和统筹
在群上激烈讨论,于是得到初步的想法
凡做项目,文档先行,于是得到了初步的文档
真怀念那时候的日子啊,每天早上8点起床,去实验室肝,12点回去吃饭睡觉,14:30又去实验室肝,17:30去跑步吃饭睡觉,然后20:00又去实验室肝,肝到1点多再回去
就这样,持续了近两周,从无到有,从文档到作品到视频,横空出世
最后也是不负众望获得了华南赛区一等奖
很幸运地来到了挑战赛阶段,可惜,因为可恶的疫情,不能去浙江的现场答辩
于是,我们团队又加班加点地完善作品和文档
至于答辩视频,从制作PPT,到写演讲稿,到录制视频,这又是一个全新的领域
最后,很可惜又很幸运地获得了国家三等奖,这可能也是大学生涯的顶峰了吧
图6 选拔赛文档版本
图7 挑战赛文档版本
总结
做一个项目能学到的知识很多,无论是专业知识还是非专业知识。
同时,这种项目类的比赛也与算法类的比赛不一样,算法类比赛的成绩完全取决于个人,实力强那就是实力强,没有虚的在里面。而项目类的话,就有比较大的运气成分在里面,或者说水分在里面,这也是没法避免的,你的项目能否拿奖,除了你的项目是否优秀,还要看你的项目合不合评委的胃口,评委这关就比较关键了。
所以这也是项目类比赛难的原因,耗费巨大人力物力却不一定能拿奖,努力和收益不成正比,但是,只要你去努力,收获还是满满的。
CTF相关
可能大部分人都没听过CTF这类的比赛,可能也有小伙伴对CTF比较感兴趣,那我也简单分享下。
其实这类比赛是比较难的,难度不亚于打ACM,并且社会上的企业啥的也会去参加。
CTF主要分为5个方向
- Reverse
- Pwn
- Web
- Crypto
- Misc
但目标都只有一个,获取一串被隐藏加密的字符。
1 Reverse
题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译功底。主要考查参赛选手的逆向分析能力。
所需知识:汇编语言、加密与解密、常见反编译工具
2 Pwn
Pwn 在黑客俚语中代表着攻破,获取权限,在 CTF 比赛中它代表着溢出类的题目,其中常见类型溢出漏洞有整数溢出、栈溢出、堆溢出等。主要考查参赛选手对漏洞的利用能力。
所需知识:C,OD+IDA,数据结构,操作系统
3 Web
Web 是 CTF 的主要题型,题目涉及到许多常见的 Web 漏洞,如 XSS、文件包含、代码执行、上传漏洞、SQL 注入等。也有一些简单的关于网络基础知识的考察,如返回包、TCP/IP、数据包内容和构造。可以说题目环境比较接近真实环境。
所需知识:php、Python、TCP/IP、SQL
4 Crypto
题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术,以及一些常见编码解码,主要考查参赛选手密码学相关知识点。通常也会和其他题目相结合。
所需知识:矩阵、数论、密码学
5 Misc
Misc 即安全杂项,题目涉及隐写术、流量分析、电子取证、人肉搜索、数据分析、大数据统计等,覆盖面比较广,主要考查参赛选手的各种基础综合知识。
所需知识:常见隐写术工具、Wireshark 等流量审查工具、编码知识
经历
打CTF的话还是需要组队的,需要找到真正志同道合的伙伴,而且是研究不同方向的伙伴,因为光靠一个方向去打的话是很难拿奖的。
我也是打着玩,没有说刻意地练习,有空的时候就去做做题,打打比赛。
打的时候其实也会遇到很多不会的地方,这时候怎么办?百度咯,看下题目,去猜大概需要用到什么知识点,去搜关键字,或者搜索差不多类型的题目的题解,然后现场学习,明白之后就去实践。CTF其实也挺考脑洞的,有的时候那些解题思路是真的想不到。
虽然没拿奖,但是收获也是挺大的,因为每次都能学到很多很多的知识,它跟其他比赛不一样,因为网安涉及到的知识真的是太多太多了,甚至可以包阔整个计算机领域。
如果能拿奖的话,这可是面试网安相关的工作的加分项哦。
刷题网站
我比较推荐下面这四个,问就是好用:
CTFHub:https://www.ctfhub.com/
攻防世界:https://adworld.xctf.org.cn/
BUUCTF:https://buuoj.cn/
安鸾渗透实战平台:http://www.whalwl.cn/home
……
实用小技巧
代码水平提高
代码就不用多说了,只要你从事与计算机专业相关的工作,99%要接触到代码。
1 刷题这个不用说,比赛前高强度刷题,比赛后,一周刷个两三道保持手感就好,假如不是为了打ACM,或是真的要去拼国奖的话
2 多阅读他人代码,emmmm,编程夜当午,手握小滑鼠,这种事情也是会时常发生的,在哪里可以找到适合自己当前阶段的代码呢,举个例子,比如你要做Python的多线程开发,可以在大型自学网站bilibili学习基础,学习好后就可以去如下网站输入关键词去寻找代码:
github
gitee
csdn
3 公众号:比如学习python,就多关注python领域的公众号(感觉在说废话…其实是为了消磨零碎时间,想一想别人零碎时间在刷抖音,你在汲取知识的甘露,是不是就赚到了)
自学能力提高
我觉得自学能力才是大学要掌握的核心能力,掌握了什么知识都是死的,掌握了自学能力才是活的,时代一变,知识体系一变,没有自学能力的同学不就傻眼了吗?大学和高中是完全不一样的,至少高中的时候各科老师都会督促你学习,大学老师才懒得理你呢,真的,某些老师一打铃跑得比你还快,生怕你问问题。我们实验室的汪哥就没管过我们。
自学方式其实有很多,看视频,看书,看文章,看博客,询问大佬,自己琢磨……看视频较为直观易懂,看书比较成体系,看文章能学到不一样的姿势。无论哪一种,学完之后,都一定要自己动手去实践去复现。博客也是一种学习的好方法,将学到的知识,融会贯通,再总结输出,学了不一定就是学会了,能给别人讲明白,才是真正的学会了。
1 做笔记,推荐一个写笔记的软件:Typora,就是我现在用的这个平时学习不仅可以做笔记,看到别人写的好的文章,也尝试去保存下来,因为指不定某天你想看,但是已经没了,保存的方法可以通过浏览器PDF提取,多保存自己想看的文章。
图8 Typora
2 发博客,虽然没什么人看就对了,但是总结的过程能加深学到东西的印象,而且在面试的时候,可以在自己简历加上自己的博客地址,你写得多了,然后面试官一看也能对你技术水平有所了解。
我的博客地址:
- https://teemos.justwalking.cn/
- https://blog.csdn.net/weixin_45766049
图9 博客
图10 CSDN博客
3 时间,emmmm,要学习很多东西,时间肯定是不够用的,所以晚上建议带电脑去实验室学习,或者是去图书馆看书,假如实在不行,就同化舍友,带舍友一起学习,不过更大的可能是会被带着一起玩游戏吧,哈哈哈,而且一些课…打个比方,选修的什么心理线下课之类的,这些就可以带自己的书去看,学自己想学的,就像挤海绵一样。
总结
在大二前,一定要找准自己的方向,然后就是坚持学习,这样到了大三,你就会发现你已经超出别人很多,别人可能还在迷茫的时候,你已经可以去给一些公司投递简历,甚至参与一些面试,这样到了大四实习,不敢说你比别人工资高多少,至少不会太差。
自身的发展和思考
发展经历
我大一不出意外应该是走后端方向的,也是因为机缘巧合,又或者说是命中注定,大一上的时候有一个关于网络安全的讲座,听了几场之后,就勾起了我内心的黑客梦,诶你们想想,在目标的网络空间内随意进出是不是很帅?从目标外网暴露的漏洞杀入,进入内网拿下整个服务器是不是很酷?在敌方的阵型中找到一丝丝不被轻易发现的裂痕,接着将这裂缝不断地撕开,不断地放大,最后一鼓作气,一举击溃敌方的指挥所。当然,由于网络安全法的颁布,渗透的过程可能没有说得那么夸张,但是在自己的靶机上过过瘾也是足够了的。
慢慢地我也对算法失去了兴趣,蓝桥杯就划一下水拿了个省二,因为我觉得CTF会更有趣,里面众多方向都令人敬畏,无论是web渗透还是reverse逆向和pwn二进制漏洞,都令人神往。CTF的过程就像解谜的过程,冲破种种障碍,最终找到目标flag。CTF也是跟网络安全方向比较契合的比赛,边学边练,边练边学。
我觉得CTF的难度不比ACM低的,都是大坑。此外,我们学校对ACM会比较重视,有专门的老师带队集训,近一年来也拿下了亚洲区域赛银牌的好成绩。相比之下,CTF就显得捉襟见肘,不过没关系呀,虽然没有老师没有师兄师姐带,但独自钻研孤身前往何尝不是种乐趣?这时候自学能力的重要性就体现出来了。
自学
关于自习,我也有去思考过,为什么到了大学就要自学呢?既然都来自学,为什么还要开设很多没什么勾巴卵用的课程呢?来大学可能不只是为了那张文凭,还是学生阶段到社会阶段之间的过渡,如果只是单纯为了就业的话,完全可以像其他培训班一样,直接去教你工作的知识,而不是在学校一样教课本上可能都是上个世纪过时的知识了。你跟外面培训班出来的比写代码,他们可能还真的不比你差,他们还能直接上手做项目。那么我们和他们之间的区别是什么呢?我觉得在于对计算机底层基础知识的理解,做小项目可能没什么区别,但是一旦项目做大的呢?例如做一个web项目,同时有10人去访问,同时有1k人去访问,同时有10w人去访问,这分别要怎么处理,要怎么去优化呢?培训班的可能就没办法了,而大学里出来的学过计算机网络,学过数据结构,学过数据库系统,学过各种讲原理的课,这时候就有办法完成任务了。
同时,人脉也是一种极其重要的资源,这也是培训班出来的无法比的,你想想你在大学四年人数人里面,有各种专业的大佬,也是同专业的大佬,他们或者创业,或者继续深造,或者走进了大厂,多多少少都是人生路上的指明灯,或多或少地指引你前进。
考研
我已经决定要去考研了,最近我也在看与考研相关的信息,接下来,我可能就不怎么参加竞赛了,专心准备考研了。
至于考研,这也是一个不错的目标,如果有这个目标,计算机组成原理,数据结构,操作系统,计算机网络这四门专业课一定要学好。虽然说计算机行业不是特别看重学历,能者居之,除非你有特别强的实力,不然这也是进大厂的敲门砖。例如人工智能,现在的要求也是越来越高了,几乎都要求有出色的论文科研经历或者非常匹配的大厂实习经历,而且学历基本都是硕士起步,我个人感觉,如果不是准备读研,如果不是实力超群,在AI上浪费精力,毕业真的就等于失业了。。。
总结
总的来说,传统的开发岗如前后端开发一直都是刚需,大厂小厂都会招人,计算机专业的基本都能找到工作,像AI,网安的岗位就相对比较少,小厂很少很少基本没有,大厂居多。像网上说得某某方面的人才缺口有几百万,事实上缺的是人才,缺的不是随便混口饭吃的。
既然入坑了计算机方向,就必须做好终生学习的准备,因为计算机技术的迭代真的太快了。就举个简单的例子吧,对比现在的网站和十年前的网站,你会发现十年前的网站的样式真的是low到爆了,对比现在的游戏和十年前的游戏,你也会发现十年前游戏的画质是真的不行。例如人脸识别,可能五年前还只是小范围使用,现阶段已经大规模应用。新掌握的技术,可能几年后就淘汰了,如果不持续输入,可能所谓的中年危机就是这么来的。
我看罗翔老师的视频时,经常听他提到“人不能是手段,只能是目的”。虽然我不理解是啥意思,但我想说,比赛永远只是手段,不是目的,要通过比赛来发现自己的不足,而不只是为了奖项。
结语
哎呀,提莫莫也不知道说啥啦,就说这么多吧,我先去前面探探路~
艰难方显勇毅,磨砺始得玉成。尽管前路凶险,但只要心有所想,也便只顾奔向远方,一定要站在自己所热爱的世界里,闪闪发亮,做自己心目中的大佬。
且视他人之疑目如盏盏鬼火,大胆地去走你的夜路!
参考文献
[1] 提莫莫 《关于学习计算机的经验》 (https://blog.csdn.net/weixin_45766049/article/details/119713191)
[2] 源哥哥 《学习经验》
[3] 各种百度
[4] 各种B乎
[5] 各种CSDN
以上是关于关于学科竞赛的经验的主要内容,如果未能解决你的问题,请参考以下文章