83行代码通关攻略|据说看的人都过了

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 83行代码挑战赛正在进行中,10.24-10.31,等你来战!目前已有2500+人参赛,和阿里工程师同台竞技,秀出你的代码肌肉,抱走MacBook Pro等精美大奖。

83行代码挑战赛正在进行中,10.24-10.31,等你来战!

目前已有2500+人参赛,和阿里工程师同台竞技,秀出你的代码肌肉,抱走MacBook Pro等精美大奖。

参赛域名:
https://code83.ide.aliyun.com/

通关攻略:83行代码第1题


本题有一半题目衍生自阿里巴巴开发规约,属于日常开发中需要掌握的规约条例。


以下是本题涉及到的规约条例,需要参赛选手对开发规约灵活应用。


【日期处理1】

1.png

【并发处理5】


2.png

image.gif【集合处理14】

3.png

【OOP规约24】

4.png

【并发处理7】

5.png

【并发处理16】

6.png

【控制语句2】

image.gif7.png


通关攻略:83行代码第2题


解题思路


本赛题解题思路较为多样化,不仅限于本攻略提供的思路。


本赛题是一个前缀字符串查找的算法题,需要拿到好的性能结果,需要有良好的数据结构。本攻略提供以下几种思路,但不仅限于以下思路:


自己实现算法结构


• 比如Trie Tree,最基础数据结构,一个较好的Trie Tree实现,基本能够达到通关的水平线。建议:查找时尽量不使用递归,添加字符串时最好不预分配大内存空间


• 如果想拿到更高的分数,可以尝试Radix Tree、PATRICIA Tree、Crit-bit Tree等


• 以上数据结构可通过搜索引擎查询相关细节。


巧妙的使用JDK自带的数据结构


• JDK自带的很多数据结构性能是较高的,通过巧妙的使用Map、Set、List等数据结构,同样可以通过本关,并得到较高的分数,而且代码量很小,可以参阅JDK数据结构部分的文档。


双层循环暴力计算


• 暴力通过双层循环,并使用startsWith进行筛选的方式性能是较为低下的,很容易超时。但是,本赛题的数据量并不是特别多,这种方式只要使用得体,同样能够通关本赛题。我们可以分析一下,这种双层循环+startsWith的方式,主要性能消耗在哪里,是循环本身吗?还是连续调用startsWith的性能问题?针对性能的消耗点可以采取一些解决办法(比如,如何既能前缀匹配,又不会像startsWith一样逐个字符计算),这种方式同样能拿到较好的分数。


评分指南


评分数据集分为多个几十万数量级的小数据集,以及多个几百万数量级的大数据集。在参赛者点击提交后,系统会随机选择一个小规模数据集和一个大规模数据集,并依次串行运行参赛者的代码,并针对这两个数据集对参赛者编写的代码从准确性、性能、内存消耗维度进行评估。


运行结果:评分系统会随机生成几十万条前缀字符串输入到参赛者的代码中,并评估参赛者的结果是否准确

注意:在运行结果维度,小数据集得分占80分,大数据集得分占20分,每个数据集在评分时只要有一条不准确,那么该数据集的得分为0分。


性能开销:代码运行耗时越短,性能维度分数越高。


注意:小数据集需在2分钟内完成计算,大数据集需在3分钟内完成计算,如果超过单个数据集的限时,那么该数据集的评测结果将没有分数;如果两个数据集总体计算耗时超过5分钟,则会报执行超时,有可能没有分数,需要参赛者优化代码的执行性能。


内存消耗:代码运行内存消耗越低,内存消耗维度分数越高,200MB以下可达到满分。


注意:默认最大内存为3GB


FAQ


1、提交后为什么没有分数?


观察一下是否有执行超时的提示,如果有,说明你的代码存在性能问题需要优化,如果没有,请反馈给我们。

image.gif

2、OSS鉴权报错


排查一下创建OSS Client时填写的ak、sk是否正确,是否填错了参数位置。

8.png

AK/SK填写错误:

9.png

下载OSS文件参数填写错误:

10.png

3、分数低,不知道如何优化?


请参考“解题思路”,选择一种你擅长的方式进行尝试。


4、是否能查看运行结果错误的案例?


无法查看,请根据以下提示情况排查原因:


a:输出的结果中缺少了部分前缀


• 比如,输入数据要求计算1000个前缀字符串的结果,但是输出时只有998个


b:部分前缀计算的结果不全


• 比如,包含某前缀的字符串结果有10条,但是输出的只有9条


c:内存消耗过多,导致OOM


5、前缀字符串是否包含与它同名的字符串?


比如,输入的前缀是Buffered,如果数据集中有字符串是Buffered,那么Buffered的计算结果中也是需要包含Buffered


6、为什么运行结果分数只有80分?


说明在几十万的小数据集上运行正确,但是在几百万的大数据集上运行错误或内存溢出


通关攻略:83行代码第3题


本题是一道代码重构的题目。现有程序中存在 Bug,导致初始代码无法完全通过单元测试。可参考一下建议,完成第三题的作答。


解题思路


良好的程序应该遵循“高内聚、低耦合”的标准。在原始的 Store.java 文件中,把所有商品的价格变化策略都耦合在一个类中,显然是违反了这一标准。同时,因为不同商品价值变化策略不同,导致 Store.java 文件中的 updateValue 方法异常复杂,难以维护。


因此,重构的第一步,需要你借助原有的 updateValue 方法以及 README.md,摸清楚不同商品价值变化的策略。第二步通过良好的抽象,设计出易扩展的程序结构。随后,完善程序代码,尽可能的准守 Java 开发规约。


评分指南


评分共4个维度(每个维度满分为100分),取不同权重综合计算出总分:


 代码规约:在本题中,因为存在多款商品,很有可能需要对比商品名称,采取不同的价值计算策略。因此需要格外注意规约中对于 Object.equals 方法的约定;


代码复杂度:根据代码圈复杂度计算该项得分;


 面向对象:根据代码中类、接口的设计,计算该项得分;


运行结果:会使用后台的4组单元测试验证程序正确性,正确运行1组可获得该项的25分;


需要特别注意的是,如果工程代码出现编译错误,则各项得分均为0。


FAQ


1、 问:过期后sellin是固定1还是要减成负数?


答:sellin 可以为负数。


点击下方链接,直接返回大赛官网。


83行代码重构大师赛 · 1024程序员代码大赛 · 阿里云云效

相关文章
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
JSON 监控 Java
【SpringMVC】JSON数据返回及异常处理
Jackson是一个用于Java对象和JSON数据之间相互转换的开源库。它提供了一组强大的API,可以将Java对象序列化为JSON格式的字符串,也可以将JSON字符串反序列化为Java对象。Jackson库由三个核心模块组成::用于将Java对象与JSON数据进行绑定(序列化和反序列化)。它提供了一系列注解,如等,用于指定对象属性与JSON字段之间的映射关系,以及日期、时间等特殊类型的处理方式。Databind模块也提供了一些高级特性,如多态类型处理、双向引用处理等。
|
6月前
|
存储 人工智能 搜索推荐
教你10 分钟内为自己网站配置AI助手
阿里云百炼平台支持一键部署大模型镜像,如DeepSeek、千问、Kimi等,通过智能体(Agent)集成RAG、插件、MCP等功能,实现知识库接入与外部工具调用,轻松为网站添加AI助手,构建个性化、可扩展的AI应用。
1057 3
|
7月前
|
存储 固态存储 安全
阿里云服务器实例、预留实例券、块存储、带宽最新收费标准与活动价格参考
阿里云服务器收费项目有实例价格、预留实例券、专有宿主机、块存储价格、存储容量单位包、带宽价格和快照服务价格,收费模式有包年包月和按量付费模式。本文为大家汇总了阿里云服务器各个收费项目的最新收费标准与云服务器的最新活动价格,以供参考和了解。
|
4月前
|
Java 容器 JavaScript
从"代码跑不通"到"答辩演示丝滑流畅":毕设部署避坑完全指南
毕设答辩“最后一公里”常因部署失败翻车!本文提供本地一键、云服务器、Docker三种部署方案,重点推荐智码方舟AI生成器——10分钟获取配置完备的部署文档+脚本,规避90%环境问题,助你稳过答辩。
|
10月前
|
人工智能 云栖大会
|
5月前
|
人工智能 自然语言处理 前端开发
静态网站AI自动生成靠谱吗?从原理到落地一次讲清
静态网站AI自动生成已从模板拼接迈入结构级生成阶段,在官网、内容站等边界清晰场景中可靠可用,可提效30%-60%。它本质是启动型效率工具,非替代开发者,而是降低验证成本、加速从想法到上线的路径。
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
592 1
|
JavaScript 前端开发 开发工具
Nodejs 第二十二章(脚手架)
Nodejs 第二十二章(脚手架)
366 0
|
网络协议 Shell Linux
安卓逆向 -- IDA动态调试
安卓逆向 -- IDA动态调试
1074 0
安卓逆向 -- IDA动态调试

热门文章

最新文章