ABlueCat
本帖最后由 dengyu 于 2021-5-25 17:11 编辑
编程开发能力自测
说明

1. 本能力自测题暂设置四级别题目,但此分级并不是按照难度进行分级,而是按普遍的学习的先后顺序进行分级,所以有可能部分“高级”题目会比“低级”题目简单。而每级别题目分为理论题和实践题两部分:理论题以问答题为主,考察编程理论知识,理论上可能存在“标准答案”。而实践题则面向实际的编程过程,要求写代码来完成任务,考察编程能力,理论上没有“标准答案”。
2. 本题目发布且只发布于MCBBS(我的世界中文论坛),禁止任何形式的转载。但论坛会员在坛内对本题的任何部分可进行任何形式的引用。
3. 本帖允许讨论题目,但请不要回复无关内容,违反者处以警告+删除回复帖。
4. 若对本题目有任何建议,包括但不限于提供新题、指正错误等等,都欢迎在此贴回复提出,若建议/批评被采纳将会给予积分奖励。
5. 感谢前任版主提供的模板。
6. 本题目最后更新于2021年5月25日。
7. 原自测题地址:https://www.mcbbs.net/thread-515067-1-1.html

       第一级题目主要是涉及Java入门知识及面向过程程序设计思想。我们编程的目的是为了解决实际问题。面向过程程序设计是一种以解决问题本身为目的的程序设计方式。它遵循“提出问题-设计方案-解决问题”的思考方式,设计解决问题的诸步骤,并将步骤一一实现,从而完成任务。它是一种最贴近实际、最自然的解决问题思想。同时,它也是我们向面向对象程序设计迈进的基础。

       第二级题目主要涉及面向对象程序设计思想、JVM底层等相关问题。与面向过程不同,面向对象程序设计是一种以实现功能本身为目的的程序设计方式。它认为问题本身是诸对象的行为的结果。建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。对象的行为之间相互独立,也就是说,当一个行为发生了修改甚至被删除时,其他不依赖它的行为将不会受到影响。

       第三级题目主要是mod/插件开发的基础知识。与普通的开发不同,minecraft的mod/插件的开发总是遵循一些规范。对规范本身的熟练程度在一定程度上也会影响开发的质量。

       第四级题目主要是mod/插件开发的进阶知识。这些知识理论上并不是必要的,但是了解后能够开发出更多更好的功能。



2021.12 数据,可能有更多内容
编程开发能力自测
说明

1. 本能力自测题暂设置四级别题目,但此分级并不是按照难度进行分级,而是按普遍的学习的先后顺序进行分级,所以有可能部分“高级”题目会比“低级”题目简单。而每级别题目分为理论题和实践题两部分:理论题以问答题为主,考察编程理论知识,理论上可能存在“标准答案”。而实践题则面向实际的编程过程,要求写代码来完成任务,考察编程能力,理论上没有“标准答案”。
2. 本题目发布且只发布于MCBBS(我的世界中文论坛),禁止任何形式的转载。但论坛会员在坛内对本题的任何部分可进行任何形式的引用。
3. 本帖允许讨论题目,但请不要回复无关内容,违反者处以警告+删除回复帖。
4. 若对本题目有任何建议,包括但不限于提供新题、指正错误等等,都欢迎在此贴回复提出,若建议/批评被采纳将会给予积分奖励。
5. 感谢前任版主提供的模板。
6. 本题目最后更新于2021年5月25日。
7. 原自测题地址:https://www.mcbbs.net/thread-515067-1-1.html

    第一级题目主要是涉及Java入门知识及面向过程程序设计思想。我们编程的目的是为了解决实际问题。面向过程程序设计是一种以解决问题本身为目的的程序设计方式。它遵循“提出问题-设计方案-解决问题”的思考方式,设计解决问题的诸步骤,并将步骤一一实现,从而完成任务。它是一种最贴近实际、最自然的解决问题思想。同时,它也是我们向面向对象程序设计迈进的基础。

    第二级题目主要涉及面向对象程序设计思想、JVM底层等相关问题。与面向过程不同,面向对象程序设计是一种以实现功能本身为目的的程序设计方式。它认为问题本身是诸对象的行为的结果。建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。对象的行为之间相互独立,也就是说,当一个行为发生了修改甚至被删除时,其他不依赖它的行为将不会受到影响。

    第三级题目主要是mod/插件开发的基础知识。与普通的开发不同,minecraft的mod/插件的开发总是遵循一些规范。对规范本身的熟练程度在一定程度上也会影响开发的质量。

    第四级题目主要是mod/插件开发的进阶知识。这些知识理论上并不是必要的,但是了解后能够开发出更多更好的功能。



一级题
级主要是涉及Java入门知识及面向过程程序设计思想

理论题

1. 请问出现这种情况应该怎么解决:

2. 请说出结构化程序设计的三种基本结构,并分别说出其功能。
3. 请说出除了goto外,另一个Java语言中存在但是没有使用的保留字。并且结合goto在C语言中的功能,请谈谈为什么不推荐在编程的时候使用goto语句。
4. 请谈谈什么是“函数”,以及函数在编程过程中的重要性。同时,在编写自己的程序的过程中,如果不使用除主函数以外的其他函数,是不是一定无法完成任务?
5. “递归:如果还是没明白递归是什么意思, 参见‘递归’。”(引自《算法竞赛入门经典》)请谈谈你对这句话的理解,并说出你对函数“递归”的理解,以及系统使用什么数据结构来实现“递归”的。在编写自己的程序的过程中,不使用递归,是不是一定无法完成任务?
6. 请谈谈什么是队列、栈,以及举例说明其用途。
7. 请阅读以下代码:

代码:

  1. int func(int x)
  2. {
  3.   if (x == 0 || x == 1) return 1;
  4.   if (x < 0) throw new IllegalArgumentException();
  5.   return func(x - 1) + func(x - 2);
  6. }

请描述该代码的作用,以及说明其是否高效。若不是,请编写一段更高效的代码实现以上代码的功能。(测试时可以使用x=1000)
8. 对于String类型,请谈谈equals(),“==”,“equalsIgnoreCase()”的联系与区别。
9. 请谈谈什么是方法签名。
10. 请谈谈什么是“时间复杂度”、“空间复杂度”,以及可以想想在编程的过程中如何尽可能优化它们。

实践题

1. 请输出“Hello Minecraft!”。
2. 给定一个字符串,例如“    the quickbrown   fox jumpsover a   lazydog   114514    ”,请编程将其前驱的空格及其后缀的空格删除、之间的空格若多于一个则只保留一个。
3. 请编程解决汉诺塔(Hanoi)问题。



二级题
级主要是涉及面向对象程序设计思想、JVM底层相关问题。

理论题

1. 请解释什么是类?什么是对象?类和对象的关系是什么?
2. 请说说什么是类的继承,以及在继承中final关键字的作用。
3. 请解释什么是抽象类、抽象方法。以及为什么不能把类定义为public abstract final class A {}
4. 请谈谈什么是接口(interface)?接口在实际开发中的重要性如何?extends与implements关键字有何区别?
5. 请谈谈this关键字的含义。例如:

代码:

  1. class People {
  2.   String name;
  3.   int age;
  4.   public People(String name, int age) {
  5.     this.name = name;
  6.     this.age = age;
  7.   }
  8. }

这里的this.name、name分别代表了什么?
6. 请谈谈什么是多态。
7. 请谈谈什么是反射?如何理解“反射是动态语言的关键”这句话?反射存在的缺点是什么?
8. 谈谈int与Integer类型的联系与区别。以及谈谈为什么List&lt;int&gt; l无法通过编译而List&lt;Integer&gt; l可以。
9. 谈谈Java的字节码文件(.class)的组成结构。为什么Java能够有“一次编译,处处运行”的特点?JVM装载.class文件的过程是怎样的?
10. 谈谈什么是注解(Annotations)?一般而言我们是怎么找到类方法上的注解的?

实践题

1. 用泛型实现Pair类(即一个Pair里面有两个同类型字段,分别为first, second),成员方法有getFirst,getSecond等等。




三级题(插件方向)
级主要是插件开发的基础知识。

理论题

1. 请阐述plugin.yml的组成结构。
2. onEnable()与onDisable()方法的作用是什么?
3. 如何编写一个命令处理器和Tab自动补全?
4. 如何存取配置文件的内容?如何创建多个配置文件?
5. 如何监听事件?如何写自定义事件?监听事件的优先级有哪些及如何设置?如何做到自己取消该事件后让其他插件无法监听到这个事件?
6. 什么是发包/收包?应该如何保证网络通信之间的安全性?
7. 如何写一个自定义的“箱子”菜单类?什么是ItemMeta?对于写“菜单”类还需要注意些什么吗?

实践题

1. 请编写插件,实现输入一个指令之后,服务器在设定时间(如1分钟)之后关闭,执行此命令需要权限,且设定时间可在配置文件内更改。
2. 请编写插件,实现杀死一个怪物之后为玩家加设定金币的功能。同时能够为怪物设定血量、攻击力等参数。
3. 请编写一个登录插件,存储密码时应该注意密码安全。



三级题(mod方向)
级主要是mod开发的基础知识。

理论题

1. 若使用forge 1.12.2-14.23.5.2847以上版本进行开发,请问该如何构建?Gradle项目如何添加依赖?
2. 什么是MCP?试解释obfName(混淆名、Notch名), srgName(Searge名), mcpName(MCP名)的联系与区别。
3. 阐述mcmod.info文件的组成结构,以及这个文件只能定义一个mod吗?
4. 简述@Mod及其各参数的作用。以及@Mod.Instance、@Mod.EventHandler注解的作用。
5. 简述代理(Proxy)的作用。
6. 如何注册一个事件?
7. 什么是发包/收包?应该如何保证网络通信之间的安全性?
8. 试解释ItemBlock,Item,ItemStack之间的联系与区别。
9. 试解释@GameRegistry、@ObjectHolder注解的作用。
10. 如何编写一份配置文件?

实践题

1. 编写一个mod,将下图做成一个方块(六面均为此图),且在创造模式物品栏里面能够找到此方块。该方块应该有中文名和英文名:




四级题(插件方向)
级主要是插件开发的进阶知识。

理论题

1. 什么是NMS?为什么需要使用它?由于每次MC更新的时候包名都会改变,那么应该如何保证插件的兼容性?
2. 什么是JDBC?插件如何使用它来更高效的存储数据?
3. 配置文件在保存重载过程中原有注释可能会丢失,如何解决?
4. 如何编写一个世界生成器?

实践题

本级暂无实践题



四级题(mod方向)
级主要是mod开发的进阶知识。

理论题

1. 简述mod从编译到运行中经历的两次混淆/反混淆的时机和作用。
2. 什么是TESR?TESR是怎么工作的?该类渲染的对象是什么?
3. 如何注册一个多方块结构?
4. 如何写一个新维度及自定义生物群系?

实践题

本级暂无实践题




耗子
本帖最后由 耗子 于 2021-5-25 20:45 编辑

提出几点建议和指出几个错误:
3. 请说出除了goto外,另一个Java语言中存在但是没有使用的保留字。并且结合goto在C语言中的功能,请谈谈为什么不推荐在编程的时候使用goto语句。

放在一级题有点超纲,这并不是Java里必须要理解的概念。

4. 请谈谈什么是“函数”,以及函数在编程过程中的重要性。同时,在编写自己的程序的过程中,如果不使用除主函数以外的其他函数,是不是一定无法完成任务?

“函数”这一概念在Java里不常使用。

6. 请谈谈什么是队列、栈,以及举例说明其用途。

“栈”可能涉及到Stack类的使用,Stack类现在在Java中不推荐使用,应使用Deque。(不过这个更应该是教材编写者做的事)

9. 谈谈Java的字节码文件(.class)的组成结构。为什么Java能够有“一次编译,处处运行”的特点?JVM装载.class文件的过程是怎样的?

放在二级题有点超纲。

6. 什么是发包/收包?应该如何保证网络通信之间的安全性?

放在三级题有点超纲。

1. 若使用forge 1.12.2-14.23.5.2847以上版本进行开发,请问该如何构建?Gradle项目如何添加依赖?

构建(Build)可能会和设置开发环境发生混淆。

6. 如何注册一个事件?

注册一个事件监听器(订阅器)还是发布一个事件?不存在注册一个事件的说法。

9. 试解释@GameRegistry、@ObjectHolder注解的作用。

GameRegistry不是注解。此外根据forge-1.16.5-36.1.0,GameRegistry类现几乎无实际功能,不应考察。

2. 什么是JDBC?插件如何使用它来更高效的存储数据?

还是尽量希望大家能够使用成熟的ORM框架存储数据。

1. 简述mod从编译到运行中经历的两次混淆/反混淆的时机和作用。

模组只会在编译期混淆到srg名,之后是Minecraft从notch名反混淆到srg名,所以模组没经历两次混淆/反混淆。

3. 如何注册一个多方块结构?

多方块结构的概念混淆,是在地图上生成的建筑结构?还是由玩家摆放而成的多方块结构?一般而论是由玩家摆放而成的多方块结构,但此类多方块结构并无注册的概念。




ABlueCat
耗子 发表于 2021-5-25 19:58
提出几点建议和指出几个错误:

放在一级题有点超纲,这并不是Java里必须要理解的概念。

收到了,非常感谢你细心的指出错误,我会尽快的改正出现的问题的。

w1m2h3huishao
耗子 发表于 2021-5-25 19:58
提出几点建议和指出几个错误:

放在一级题有点超纲,这并不是Java里必须要理解的概念。

基本赞同的,JAVA其实不用理GOTO之类的。。。
函数的话,JAVA一般叫方法。。。
知道堆栈其实对开发MC没什么用吧,或许做内存优化用的到。
。。。。其实吧,为了玩游戏做开发,也挺厉害的哈,毕竟JAVA后端平均工资15K以上。。。

黑人抬棺
看着还不错 我也想学开发

w1141118354
感觉可以

sh0303
学废了感谢。

sh0303
学废了感谢。

力量速度
1123123123123

laowei005
6666666666666666

qiaoninei
JAVA不是很懂,我一般都用Python

Sunny2010
w1m2h3huishao 发表于 2021-5-29 21:14
基本赞同的,JAVA其实不用理GOTO之类的。。。
函数的话,JAVA一般叫方法。。。
知道堆栈其实对开发MC没什 ...

2s2wqsssssssssssssa

1234554897
        MCBBS有你更精彩~

---千---
学废了感谢。

SneakHack
Python能开发MC吗

cjxx6662
完成任务

lixiangabc
耗子 发表于 2021-5-25 19:58
提出几点建议和指出几个错误:

放在一级题有点超纲,这并不是Java里必须要理解的概念。

太牛了帖子

lixiangabc

帖子你太牛了

lixiangabc

感谢感谢感谢

Funnys233
前俩还是能懂的

想牵着你的手丶
学废了。。

Yuan-先生
java开发只要基础学一遍  然后后面不懂得搜百度就能写出来吧

阿莫西名
搞完感觉我废了

爱吃瓜的滑稽菌

网易模组就是用py写

1902550300
初中学了一点C++

2370202997
感谢感谢感谢感谢感谢感谢

comdom
mcbbs有你更精彩
顺便我居然不会Java

comdom
所以是不是c++可以开放mc?
只能Java?

酸-菜
学学看,将来自己开发mod

AO_W
看到密密麻麻的文字就头大,好佩服会写代码的人啊

fearr623
本帖最后由 fearr623 于 2021-9-28 01:01 编辑

照这么看,那我是不及格了,我只能说苹果是苹果,香蕉是香蕉,都能吃

iseea
本帖最后由 陈小羽| 于 2021-10-1 13:48 编辑

一级题-理论题
1. 请问出现这种情况应该怎么解决:

1.配置java开发环境添加java环境变量的问题,作为理论题可以提问配置java开发环境对编写java程序的作用
例如,配置JAVA_HOME, path, classpath对开发有什么用?

2.
1. 请问出现这种情况应该怎么解决:

这个问题作为实践题更好;请正确配置环境变量使用 javac 和 java 这两条命令实现下图命令









bili71163117338
笑死哦,根本不会

bili71163117338
...................................

bili71163117338
.....................................................................................

bili71163117338
0000000000000000000000000000000

bili71163117338
22222222222222222222222222

70148162013
666666666666666666

GongDiXiaoZhang
看的不是太明白,有人能再解释解释吗?

QQ阅读归一者
6666666666666

QQ阅读归一者
6666666666666

QQ阅读归一者
6666666666666

QQ阅读归一者
86666666666

1337390239
学了Python和java是共通的吗

5555kk
在下有点懵  有没有大神帮帮忙   

tao_zidada
支持一下挺不错的给力

a86968948
脑子:学废了 我真牛  手:学废了????

King_Timor
MCBBS有你更精彩~

chen_mo/和平
我过来看看有什么新知识

奶猫最可爱
MCBBS有你更精彩~

第一页 上一页 下一页 最后一页