关于学科竞赛的经验

关于学科竞赛的经验

(本文约1000字,阅读只需要3分钟哦?)

莫西莫西,我系提莫莫队长,平时喜欢种种蘑菇。

起因是思梦姐姐找到我,希望给20级的同志分享下学科竞赛相关的经验,于是乎我答应了,于是乎又有了新的故事。

emmm,我在线下已经和部分师弟师妹们分享过了,在这里以文字的形式将分享的内容分享出来,方便师弟师妹们学习。

不过感觉效果好像不太好呢,是听的有点懵还是啥。如果有啥建议,请告诉我哦,我们一起努力!

文章目录

  • 关于学科竞赛的经验
  • 为啥学习
  • 为啥竞赛
  • 学科竞赛总览
    • 算法类
    • 项目类
    • CTF类
    • 非本专业类
    • 综合类比赛
    • 非专业类
  • 竞赛经验分享
    • 算法相关
      • 经历
      • 总结
      • 刷题网站
      • 书籍推荐
    • 项目相关
      • 经历
      • 总结
    • CTF相关
      • 经历
      • 刷题网站
  • 实用小技巧
    • 代码水平提高
    • 自学能力提高
    • 总结
  • 自身的发展和思考
    • 发展经历
    • 自学
    • 考研
    • 总结
  • 结语
  • 参考文献

为啥学习

学习的目的,是为了获取竞争优势,增加选择机会,提升认知水平。

人生就是一个不断学习的过程,终究有一天,我们会感谢现在努力学习的自己。

说直白一点,学习就是为了以后能拿高薪,能更好更体面地活着,成为一只有思想的猪,拱各式各样的白菜。

为啥竞赛

不挂科的大学不是完整的大学(×)

不竞赛的大学不是完整的大学(√)

以赛促学,只有去参加比赛,你才能知道自己掌握了什么知识,哪些知识还不熟悉。

学科竞赛总览

主要是学校发了通知的竞赛,当然,除了以下列出来的,还有很多很多的竞赛

算法类

  • 蓝桥杯
  • 中国高校计算机大赛–团体程序天梯赛
  • 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张图片

图1 洛谷

关于学科竞赛的经验_第2张图片

图2 力扣

关于学科竞赛的经验_第3张图片

图3 牛客

假如刷题刷出成就感了,不妨参加一些周赛,以至于能够更好的打击自己,获得学习的动力.

书籍推荐

我推荐的观看顺序是:白书或者紫书,当然头铁的话也可以选择算法导论。

下面是我在百度上找的白书、紫书这些书籍的介绍

  1. 刘汝佳老师系列图书(紫书, 蓝书, 绿书)

  2. 挑战系列丛书(白书)

    日本的前世界总冠军写的书,题目难度循序渐进, 从易到难,比较适合想打算法的新手来看。 一本讲数据结构一本讲算法,全部弄懂的话水平也差不多哪里了

关于学科竞赛的经验_第4张图片

图4 紫书

关于学科竞赛的经验_第5张图片

图5 白书

项目相关

项目是什么?

项目是人们通过努力,运用各种方法,将人力、材料和财务等资源组织起来,根据商业模式的相关策划安排,进行一项独立一次性或长期无限期的工作任务,以期达到由数量和质量指标所限定的目标

简单来说,项目就是做一件事,例如开发XXX系统。

它和上面的算法相比,更考验一个人的综合能力,所以项目经验也是很重要的。

面试的时候,HR也喜欢问你有无项目经验,项目是怎么实施的。

说了那么多废话,可能都还云里雾里的,接下来我就分享下我的亲身经历:

经历

今年不知道几月,我参加了全国高校计算机大赛–网络技术挑战赛,

参加比赛,至少要先要看看这个比赛是干嘛的吧?

哦,比赛分为三个阶段,资格赛,选拔赛,挑战赛,还可以组队

既然能组队,那当然是去找人啦,找谁呢?那当然是去找大佬啦

那谁是大佬呢?拿过奖的就是大佬呗,师兄们都在准备考研和工作没空

那就问问同级的呗,他们对这个比赛不感兴趣,那没关系,找同班的呗

结果拉了一个经常在群聊里吹水的同志,拉了一个实力强又默默不说话的宿友同志

又觉得大一师弟师妹比较有空,结果又拉到了一个师妹

哦豁,人齐了,那就开干

资格赛是干嘛的呢?哦,答题,跟数通有关的

数通是啥?理解为计网和路由与交换的强化版吧

那有啥办法,看视频学习呗

侥幸到了选拔赛阶段,什么?要完成一个作品?那就分工呗

吹水先生和师妹负责文档和打杂,宿友同志负责前端,我负责后端和统筹

在群上激烈讨论,于是得到初步的想法

凡做项目,文档先行,于是得到了初步的文档

真怀念那时候的日子啊,每天早上8点起床,去实验室肝,12点回去吃饭睡觉,14:30又去实验室肝,17:30去跑步吃饭睡觉,然后20:00又去实验室肝,肝到1点多再回去

就这样,持续了近两周,从无到有,从文档到作品到视频,横空出世

最后也是不负众望获得了华南赛区一等奖

很幸运地来到了挑战赛阶段,可惜,因为可恶的疫情,不能去浙江的现场答辩

于是,我们团队又加班加点地完善作品和文档

至于答辩视频,从制作PPT,到写演讲稿,到录制视频,这又是一个全新的领域

最后,很可惜又很幸运地获得了国家三等奖,这可能也是大学生涯的顶峰了吧

关于学科竞赛的经验_第6张图片

图6 选拔赛文档版本

关于学科竞赛的经验_第7张图片

图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张图片

图8 Typora

2 发博客,虽然没什么人看就对了,但是总结的过程能加深学到东西的印象,而且在面试的时候,可以在自己简历加上自己的博客地址,你写得多了,然后面试官一看也能对你技术水平有所了解。

我的博客地址:

  • https://teemos.justwalking.cn/
  • https://blog.csdn.net/weixin_45766049

关于学科竞赛的经验_第9张图片

图9 博客

关于学科竞赛的经验_第10张图片

图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

你可能感兴趣的:(经验分享,经验分享,算法,网络安全,程序人生,蓝桥杯)