💧 《中国大学生计算机设计大赛》备赛心得 \color{#FF1493}{《中国大学生计算机设计大赛》备赛心得} 《中国大学生计算机设计大赛》备赛心得💧
🌷 仰望天空,妳我亦是行人.✨
🦄 个人主页——微风撞见云的博客🎐
🐳 《数据结构与算法》专栏的文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
💧 《Java学习笔记》专栏的文章是本人在Java学习中总结的一些知识点~ 💐
🥣 《每天一点小知识》专栏的文章可以丰富你的知识库,滴水成河~ 🌊
🎐 《Redis》专栏的文章是在学习Redis时,整理的笔记与记录的思考~ 🥏
🥕 《RabbitMQ》专栏的文章是在学习尚硅谷课程时整理的笔记,方便复习巩固~ 🍑
🪁 希望本文能够给读者带来一定的帮助~🌸文章粗浅,敬请批评指正!🐥
文章目录
- 🐳《中国大学生计算机设计大赛》应用与开发组 "国二省一" 备赛心得
- 前言
- 背景介绍
- 备赛准备
- 设计大赛的项目和简历上的项目性质一样吗?
- 项目选择与设计
- 选题理由:
- 项目设计
- 答辩PPT
- 作品简介
- 技术栈
- 前端技术栈
- 后端技术栈
- 创新点
- 功能预览
- 如何准备答辩?
- 准备说辞:
- 思考评委老师可能会提的问题
- 提前在本地启动项目
- 应答技巧:
- 省赛问题:
- 国赛问题:
- 项目上线
- 技术难点与解决方案
- 克服困难与挑战
- 学习与成长
- 比赛经验总结
- 感谢与展望
- 鼓励与分享
- 🐳结语
🐳《中国大学生计算机设计大赛》应用与开发组 “国二省一” 备赛心得
前言
我是一名普本计科大三的学生。我的技术一般,算法一般,但最终获得了设计大赛的国二。希望我的这段经历能够对你有帮助。
我是从去年暑假开始准备《中国大学生计算机设计大赛》的,在我导师的指导下开始调研选题,今年三月校赛,四月省赛,七月国赛,期间我还参加了字节跳动青训营,并且备赛了蓝桥杯,所以你不用但是参加这个比赛就没时间干别的事儿了。在整个过程中我有许多收获和感言,我想把这些经验分享给大家,如果你是正处大一大二大三,强烈建议你看完这篇博客,这或许能对你在大学生涯的规划起到较大帮助,至少能够在权衡学习与参赛之间给到一定的参考意见。
如果你想大二就参加公司实习,并且没有合适的队友,自身技术也不是特别精通的话,那我还是建议你不用准备这个比赛了,因为它可能会花费你特别多的时间,性价比不高。 但如果你是有好队友,并且能够应用基本的框架来开发项目,前后端都比较熟悉,参赛欲强烈, 那这个比赛应该挺适合你。
需要说明的一点是:我仅仅是一个国二,不论是项目深度还是算法应用,离国一都还有一定距离, 如果大家想冲刺国一的话,一般还需要考虑以下一些点 :前沿技术、紧跟时事、能够为亟待解决的实际问题做出帮助、项目受众广、UI界面精美等。
正片开始 ↓
背景介绍
《中国大学生计算机设计大赛》(Chinese Collegiate Computing Competition,简称“大赛”或4C)是我国高校面向本科生最早的赛事之一,自2008年开赛至2019年,一直由教育部高校与计算机相关教指委等或独立或联合主办。大赛的目的是以赛促学、以赛促教、以赛促创,为国家培养德智体美劳全面发展的创新型、复合型、应用型人才服务。
大赛目前是全国普通高校大学生竞赛排行榜榜单内赛事,每年举办一次。大赛以三级竞赛形式开展,校级赛——省级赛——国家级赛(简称“国赛”),国赛只接受省级赛(含省赛和跨省区域赛)上推的参赛作品。校级赛、省级赛可自行、独立组织,国赛接受上推作品时间为当年5月份,国赛决赛时间在当年7月中旬至8月下旬。大赛国赛的参赛对象是中国高校当年在籍(含当年毕业)的本科生(含港、澳、台学生及留学生),参赛作品的指导教师是在高校担任本科生教学任务的教师。
备赛准备
备赛之初,我们组建了一个由五名热爱计算机应用开发的学生组成的团队 (因为我们整好有一门软件工程的课要做项目需要五个人,所以先是五个人一组的,但是比赛要求最多三人一组,刚开始不知道这个规定) 。我和导师讨论和研究参赛项目方向 (刚开始我是抗拒的,想随便弄一个糊弄一下,但是行不通) 导师告诉我:设计大赛的项目一定是要解决生活中或社会上某些问题的,并且要结合算法体现项目的智能化。
最终我选择了一个面向 “乡村振兴” 的应用,导师去网上看了对应的内容,肯定了我的想法。(我一共是选了两三个题目,有个安徽农业的感觉不错,但我是四川的,所以导师否定了那个选题,基本上就是因为地区不合适,要不然就是不太符合时事或没有特别大的价值。) 在备赛阶段,我和组员会经常开会,讨论功能与实现,制定详细的备赛计划、任务分工文档、思维导图等,以确保高效的合作与进度。
文档记录每次开会的内容,发在群里方便回顾,一般是记录现在的进度,下一步要做什么,目前有什么问题,怎么解决,任务分工等等。
思维导图主要是确定项目功能的,方便后续对照着完成相应内容。
设计大赛的项目和简历上的项目性质一样吗?
亲,我一定要提前告诉你,设计大赛的项目和你写在见简历上的项目通常情况下来说,还有一定区别的!
简历上的项目主要是看你技术栈的运用,能不能用真正使用这些技术栈,用的有多深。
而设计大赛的项目通常来说**没有特别看重你技术的深度,能解决问题即可。**就比如我的Redis只用于存储了一点热点数据,加了个超时时间啥的,不会去考虑分布式锁、持久化配置等等…
项目选择与设计
根据以前参数作品的名称,我们选择了 《基于多重匹配算法的阿坝乡村旅游智能服务平台》 作为我们的参赛题目。
选题理由:
- 乡村振兴是国家一直在大力投入的一件事,有实际意义。
- 阿坝地区本就是旅游胜地,只不过大多数人都只去热门地方,乡村地区依然很有特色,但热门程度较低,我们希望可以让它得到宣传。
- 现有的阿坝旅游网没有特别智能的地方,可以参考不足之处进行改进。
- 我对其他事物,例如农田、军事、金融等,了解不多。
- 我的籍贯是四川,要先过省赛,所以尽可能选择四川的地区。
项目设计
我们是一个单体项目,开发之初技术不精,没有做前后端分离的。logo就是去网上找的冷门但相关的,也可以自己制作。PPT是网上找的模板。前端也有很多“开源”(你懂的)的模板,搜一搜,都能在网上找到。
相关题目还有 ↓ (具体的作品名称会在官网公布,我这里是当时颁奖的时候随便截的几个国二题目)
- 土默特右旗“456”工作法智慧管理平台明鉴科技—图像篡改检测平台
- 本草园——大数据下基于深度学习的中药病虫害识别
- APP基于SpringCloud与分布式微服务架构的系统学习平台-Endless
- 桶世界——面向多场景的分布式对象存储平台
- 面向智慧医疗的基于区块链的密文可搜索加密系统智域云图-对象存储平台
- 汉庭服——中国古代服饰展览馆
- Native with“游”-新时代旅游定制多功能平台基于JeecgBoot的智慧路灯管理云平台
- 基于深度学习的胎儿心脏超声质控系统信息游击战——“全民情报官”APP教师教育实践类课程性评价平台
答辩PPT
作品简介
技术栈
前端技术栈
我们前端很菜,只会jQuery + ajax 的方式,那时候连vue都不会,框架在学校只学了一点layui,数据可视化都是我在国赛之前学习了echarts,做的数据可视化界面。总体来说,我们前端开发效率较低,花了很多时间… (我讨厌前端!)
后端技术栈
这里也比较惭愧,现在看来就是很正常的框架运用,后来学了mybatis-plus,后悔没早点用起来,想用的时候,后端大多数的接口和功能已经写好了。当时觉得写了Redis和OSS啥的很牛B…哈哈哈 我们是用的git+Gitee管理的项目。强烈建议不会使用git的同学都学着用用,多多地解决合并冲突等问题
创新点
由于我们是一个旅游平台,我所想到能使用算法的地方不多,结合项目功能,我决定在行程匹配和地区推荐分别使用字符匹配算法
和推荐算法
,然后根据实际业务对算法进行针对性的改进和优化。
(很多大佬的项目都是用的模拟退火、遗传算法啥的,很高级,我省赛也用了模拟退火,那个时候是为了用而用,如果用在我们这里,模拟退火优化的KMP算法在我们的那段业务中,实际上还没有普通KMP高效,后面就改为了Sunday + 多模拟匹配的KMP。然后推荐算法是采用的基于物品的协同过滤算法。)
功能预览
思维导图 ↓
部分作品效果图 ↓
如何准备答辩?
准备说辞:
比赛是有时间限制的,10分钟的时间 + 紧张的环境,没有一套提前准备好的说辞,实际上是不太能稳定发挥的。提前准备好说辞,尽量讲好普通话,反复熟读,确保你不会卡壳。比赛的时候手机放电脑上,看着读,老师不知道的。
这里我把我的说辞附上,仅供参考。没有提及的部分就照着PPT读。
尊敬的各位评委老师好!我们本次参赛作品的编号为2023060549,题目是《基于多重匹配算法的阿坝乡村旅游智能服务平台》。
我将从以下四个方面来介绍我们的作品。
技术栈
前端部分使用Ajax进行异步通信,使用echarts进行数据可视化,其他的框架用于页面开发。
项目演示
我们先通过一张思维导图来简述项目的功能。其中特色模块有:热门地区、旅游引导、特色文化、旅客住宿、客服咨询等。下面进行项目演示。我们先登录一个游客的账号,从热点模块说起:
旅游引导模块:该模块使用Sunday算法、多模式匹配的KMP算法,当用户选定好出行路线,确认想要公开自己的出行信息并加入拼团后,系统将会调用上述算法为用户推荐出与其行程匹配的同程群聊,用户可以加入群聊与其他同程的游客互动,丰富出行的体验感。另外,在同程群聊模块可以创建群聊,也查看所有的群聊和属于自己的群聊。下面进行功能演示。
特色文化模块:该模块有历史文化、旅游足迹、藏羌文化、非遗文化、文化视频等子模块。“历史文化模块”包含阿坝地区的基本介绍、自然资源、历史追溯。“旅游足迹模块”展示了一些游客游玩的照片。“藏羌文化模块”记录了阿坝地区的特色藏羌文化,点击左侧按钮可以浏览这些特色文化,点击文字即可进入详情页面。“文化视频模块”包含一些文化视频,点击文字即可播放。
住宿驿站模块:该模块展示了一些热门的住宿,我们可以进行住宿搜索,输入“四姑娘”。点击查看。可以看到,在右边为我们展示出了对应的住宿,我们可以点击查看详细情况,(点击),其中包含该住宿的一些基本信息、民宿信息以及相关问题,如果用户对该住宿感兴趣,还可以点击收藏,之后会在个人页面展示出阿里;在页面右边也会推荐出一些热门的住宿。
热门地区模块:该模块使用Redis将热点数据进行缓存,系统会结合用户在话题模块的行为数据,通过基于物品的协同过滤推荐算法,在首页展现出更加符合用户偏好的景区。在“发现景区部分”可以通过搜索关键词,从而快速展现出对应的景区。
客服机器人模块:点击机器人,机器人会根据最近的提问情况展现出热点问题,我们回复问题编号,机器人就能够回答出相关问题。如果有它答不上来的问题,我们可以进入留言系统,给管理员留言我们的疑问。同时,机器人设置了敏感词过滤,当我们输入敏感词,系统会进行过滤。
回到首页,我们可以看到,这些推荐内容都是基于刚才的模块生成的。项目还有地区美食模块(在这里可以浏览到地区美食,也可以对其进行点赞等操作,当用户点赞后,系统会自动将美食按热度进行重排序)、旅游讨论模块(该模块将游客们发布的讨论以文章的形式展示出来,点击查看详情,可以对其进行点赞、评论等操作。用户也可以选择发布话题,其中图片是采用阿里云的OSS对象存储)、个人信息页面(该页面展示了个人的基本信息以及收藏的住宿、发布的话题、选择的路线等,用户也可以对自己的个人信息进行修改)。
接下来,我们登录管理员账号,查看项目后台管理页面。
后台数据大部分来自系统,小部分来源于网络,我们将这些数据进行可视化处理,以图形的方式展示出来,方便管理员更好地查看系统情况。其中包含了系统数据的增长情况、阿坝地区的地区热度情况、景区话题的浏览情况、美食的点赞情况等。另外,项目还可以对每个模块的数据进行curd的管理操作。
项目演示到此结束,谢谢观看,请评委老师批评指正。
思考评委老师可能会提的问题
换位思考,如果你是评委老师,听了你噼里啪啦一大堆之后,他们不一定能完全把握住你所表达的核心部分,大概率会问核心算法的作用、核心业务的流程、项目的实用性、项目的与众不同之处。
提前在本地启动项目
如果你的服务器性能不是特别好,建议提前启动本地项目和相关组件。测试好没问题了,再准备答辩。通常需要你跑一边项目的每个功能是否可以达到预期,检查一下网络和电脑电量即可。
应答技巧:
- 当我们被问到不熟悉的问题,如果有知道一点但不多,那你把知道的表达出来即可,
一定不要胡扯
,然后表示一下之后会做相关学习和完善。 - 如果完全不知道,你可以简述一下不知道的原因,引导出即使不清楚这个问题,但依然能够顺利地完成何种功能。例如我回答了一个模拟退火相关函数的问题:
这个算法我不是特别清楚底层函数的实现,但经过我们的多种测试,得到结果是完全可行的,在相关业务部分也发挥出了应有的效果,之后我们会的文献,对其进一步优化改进。
- 如果你知道这个问题,也不要沾沾自喜地一两句话就说完了,提问环节一共十分钟,尽可能地把所有优点表达出来。
省赛问题:
- “同程群聊推荐”里面的群聊是什么,怎么匹配的?
- 回答方式:按照业务逻辑,清晰地梳理出来。
- 模拟退火算法里面的相关函数问题。
- 回答方式:上文红字提到了这个↑
- 你们的项目功能有这么多,都是自己做的吗?哪些是别人做的功能?你们的项目从开始做,到项目完成经历了多长时间?
- 回答方式:自信地告诉老师,这就是我们独立开发的项目,我们在gitee上有协作记录,您可以查看。然后把准备比赛的过程按照时间顺序给老师讲一遍。
省赛答辩总结:从老师的语气来看,整体较为满意。
国赛问题:
-
相对于同城群聊于你们的项目有什么不同
- 回答方式:把关键的算法作业讲出来,算法干了什么事情,因为算法,我们实现了路线匹配从而进一步推荐出相关群聊。
-
你们的初始数据怎么来的?
- 回答方式:模拟数据 + 网上收集的数据 + 用户使用功能时会自动产生数据。
-
智能体现在哪
- 回答方式:首先是匹配算法和推荐算法干了什么事儿,然后说了一下客服机器人。
(感觉那个老师觉得比较一般,说“哦~就是推荐是吧” 。)
- 回答方式:首先是匹配算法和推荐算法干了什么事儿,然后说了一下客服机器人。
-
你们这个项目的使用人群只是阿坝地区吗?
- 回答方式:突显项目特色,我们就是为了宣传阿坝乡村地区的非遗文化和特色美食、名胜古迹等,受众的话,自然是以去阿坝地区的旅客为主。
-
项目有没有上线,投入使用没,访问量一天是多少
- 回答方式:已经上线,不过目前没有进行推广,仅仅在我们小组内进行使用过,运行效果较好,总体没有问题。
-
你们项目做了多久
- 回答方式:参考省赛问答。
项目上线
这个是国赛要求的,省赛不用上线。其实没什么特别要说的,和普通单体Java项目一样,打成jar包,扔到部署有相关组件(mysql、redis等)的服务器上启动即可。
技术难点与解决方案
在项目开发过程中,我们面临了许多技术难题。包括刚开始使用不太熟悉的框架,比如SpringSecurity,但主要的挑战是如何实现智能推荐算法和匹配算法,以提供个性化的服务。我们充分调研了推荐系统的现有算法,参考了较多的匹配算法文献,最终结合文档和AI,完成了算法设计。
我 墙裂 建议大家有问题先问问AI的意见,然后去看看相关文献,这样能少走弯路。了解清楚需求之后,让AI生成算法是很轻松的一件事。
克服困难与挑战
在备赛和比赛过程中,我们遇到了诸多困难和挑战,大多数是数据没有返回正确,页面加载效果不好,数据库一会儿又出问题了… 有时,团队协作可能因意见分歧而产生摩擦,但我们学会了倾听和尊重每个成员的意见,达成共识。
另外,技术方面的问题也不可避免,但我们鼓励每个成员充分发挥自己的专长,共同攻克难关。
学习与成长
参与该比赛是一次宝贵的学习和成长机会。通过备赛和比赛,我个人不仅在技术方面得到了提升,还学会了更好地与人合作,发现和解决问题的能力也得到了增强。这些经验对我的未来学习和职业发展都具有重要意义。
比赛经验总结
回顾整个备赛和比赛的过程,我们深刻认识到团队协作和创新的重要性。同时,我们也认识到备战比赛需要更加深入的技术储备和全面的知识储备。未来,我们将继续保持学习的态度,努力提高自己,为未来更多的挑战做准备。
感谢与展望
在此,我要衷心感谢团队的每一位成员,没有你们的支持和合作,我们无法取得如此好的成绩。同时,也感谢学校和老师对我们的支持和鼓励。未来,我们将继续努力,将更多优秀的项目带到更多的舞台上,为社会做出更大的贡献。
鼓励与分享
最后,我想鼓励更多的大学生积极参与类似的竞赛。无论结果如何,这都是一次宝贵的锻炼机会。希望我们的经验和分享能够激励更多人踏上技术创新的道路,共同推动社会进步。
希望我们的经验能对你们有所启发,有问题欢迎在评论区提出,祝愿大家在未来的比赛中取得优异成绩!
🐳结语
🐬初学一门技术时,总有些许的疑惑,别怕,它们是我们学习路上的点点繁星,帮助我们不断成长。
🐟积少成多,滴水成河。文章粗浅,希望对大家有帮助!