Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 42958|回复: 200

[软件开发讨论] [编程开发]开发能力自测

  [复制链接]
RecursiveG 当前离线
积分
3935
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2013-8-19
查看详细资料
发表于 2015-10-23 12:43:47 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 RecursiveG 于 2015-10-25 23:56 编辑

编程开发板块 能力自测

说明

本能力自测题为活跃气氛、增加交流而设计。
欢迎各位触手用力拍砖并提供提供新的题目。
开放答题,欢迎讨论。禁止水回复,否则直接警告+删回复。
回贴按倒序排列

基础篇是任何想要进行Mod/插件开发的人员应知应会的内容
中级篇考察更高级/MC相关的内容
高级篇为专(chù)家(shǒu)准备
部分题目有mod方向和插件方向的区别,可以选择性做题

通常,基础篇接近满分,可以近似无阻碍学习Mod/插件开发。
中级篇接近满分,可以有效完成大部分Mod/插件开发任务。
高级篇……不来写份教程么骚年?

初级篇

1. 连线
项目
分类
JAVA
运行时环境
JVM
编程语言
JRE
开发文档
JDK
运行时虚拟机
JAVAC
开发环境
*.java
目标文件
*.class
Integrated Development Environment
Eclipse
编译器
IDE
IDE
Gradle
源文件
Javadoc
构建工具
2.以下哪些代码能通过编译?假设用到的变量都被正确定义,需要的包也被导入
  1. 1. int i=0;
  2. 2. for(;;);
  3. 3. List<String> myList = null;
  4. 4. Map<Integer, Integer> map = new Map<Integer, Integer>;
  5. 5. Map anotherMap = new Map();
  6. 6. if (currentIndex==index=getIndex()) doSomething();
  7. 7. while(true);
  8. 8. /*/* Important Comment */*/
  9. 9. public static main() {}
  10. 10. private foo(){foo();}
  11. 11. @NotNull MyClass instance = null;
  12. 12. throw RuntimeException();
  13. 13. List<Player> myList = new List<Player>();
复制代码
3. 使用泛型构造一个适合并便于使用的类型用于存储以下JSON
  1. {
  2.   "list1": [
  3.     {
  4.       "subVal1": 11,
  5.       "subVal2": 12
  6.     }, {
  7.       "subVal3": 13,
  8.       "subVal4": 14,
  9.       "subVal5": 15
  10.     }
  11.   ],
  12.   "list2": [
  13.     {
  14.       "subVal6": 16
  15.     }
  16.   ]
  17. }
复制代码
4. 将上一题中的JSON改写为YAML
5. 32位操作系统无法寻址4G以上的内存,请简述原因
6. Java中 foreach 循环的本质是什么?
7. 举出 Java 中的一处语法糖
8. 清楚理解 for, while, do while, for, break/continue 的作用和用法
9. 指出下列哪些函数定义是本质相同的:
  1. void foo(int a, int b);
  2. void foo(int x, int y);
  3. void bar(List<Integer> list);
  4. void bar(List<Double> list);
  5. void foo(Integer a, Integer b);
  6. void foo(List<Integer> list);
  7. void bar(List list);
复制代码
10. 简述 extends 关键字和 implements 关键字的区别
11. 编译以下代码会生成几个.class文件?
  1. public class A {
  2.     public interface IFoo { }
  3.     public static class B implements IFoo { }
  4.     public static void method1(IFoo foo) { }
  5.     public static void method2() {
  6.     method1(new IFoo() { });
  7.     }
  8. }
复制代码
12. 用命令行环境编译并执行以下程序需要执行什么命令?
  1. public class A {
  2.   public static void main() {
  3.     System.out.println("hello, world");
  4.   }
  5. }
复制代码

中级篇

1. 描述以下函数的作用并说明该函数是否高效。若不,试写出一个高效的函数完成同样工作。
  1. int func(int x) {
  2.     if (x == 0 || x == 1) return 1;
  3.     if (x < 0) throw new IllegalArgumentException();
  4.     return func(x - 1) + func(x - 2);
  5. }
复制代码
2. 阅读以下程序段:
  1. public static MyClass {
  2.     public String x;
  3.     public MyClass(String x) {
  4.         this.x = x;
  5.     }
  6. }

  7. public static main(String args[]) {
  8.     String str1 = "String #1";
  9.     List<String> list1 = new ArrayList<String>();
  10.     list1.add(str1);
  11.     str1 = "Not String #1";
  12.     System.out.println(list1.get(0));

  13.     MyClass myClass = new MyClass("String #2");
  14.     List<MyClass> list2 = new ArrayList<String>();
  15.     list2.add(myClass);
  16.     myClass.x = "Not String #2";
  17.     System.out.println(list1.get(0).x);
  18. }
复制代码
程序输出
  1. String #1
  2. Not String #2
复制代码
结合你对`String`类的理解,解释出现以上现象的原因。
3. C++中,使用new构造的对象必须使用delete删除,为什么Java不需要?
4. 结合Java中泛型实现的机制,解释为何 `List<int> a;` 为何无法通过编译
5. 执行下列程序,写出执行结果,并解释原因:
  1. public class A {
  2.   public static class B {
  3.     private int x;
  4.     public B(int x) {
  5.       this.x = x;
  6.     }
  7.   }
  8.   public static void main(String[] args) {
  9.     A a = new A(12);
  10.     try {
  11.       Field f = B.class.getDeclaredField("x");
  12.       System.out.println(f.get(a));
  13.     } catch(Exception ex) {

  14.     }
  15.   }
  16. }
复制代码
6. 有一变量定义 “private static final int NUMBER = 42;” ,欲使用反射修改其值,会有什么问题?
7. 简述MC不能有效利用多核处理器的原因
8. 解释mcp和forge项目之间的关系(MOD方向)
9. 解释forge, cauldron, bukkit之间的关系
10. 编写Mod时,我们会用到Proxy,简述Proxy的作用和使用Proxy的必要性。(mod方向)
11. 解释:什么是NMS类,分析使用NMS类的带来的好处和问题(插件方向)
12. Minecraft是一个商业程式,随意散布会面临法律问题。Forge与Bukkit项目组是如何应对这一问题的?

高级篇

1. 观察<version>.json,纯净的游戏的主类是Minecraft,而安装了Forge的游戏主类是LaunchWrapper。简述LaunchWrapper的作用(mod方向)
2. 解释obfName, srgName, mcpName的区别,并简述mod从编译到运行中经历的两次混淆/反混淆的时机和作用。(mod方向)
3. 简述ASM 和Java Bytecode 的关系。(mod方向)
4. 对比 ASMTransformer 和反射,分析其各自的优势和劣势。(mod方向)

拿 BBCode 排版简直就是灾难 2015-10-23 更新

评分

参与人数 20人气 +23 金粒 +196 收起 理由
45gfg9 + 1 开发能力为0 我枯了
Dogend + 1 Ssssssssssssssssssss
芝十香 + 1 + 15 总有一天我会通过基础题(挖坑).
Saukiya + 2 + 40 0-楼主你太毁信心了~
Hueihuea + 2 + 30 终于…… 终于都会做了
2373281465 + 5 Orz不服不行
小cheng + 1 + 1 好难懂、哎
Kedgeree + 1 + 15 一道题都不会的我...滚回游戏技巧区....
矿工小周 + 1 MCBBS有你更精彩~
DarcJC + 2 楼主就这样骗了13人气90金粒
冰柠檬汁 + 1 全都meng bi
SmallKK123 + 1 + 6 楼主就这样骗了10人气90金粒
z魔 + 1 我竟只会连线(ノ?益?)ノ彡┻━┻.
鸭蛋只吃黄 + 1 已测试,开发能力为0...= =
土球球 + 15 中级篇第5题第9行是不是写错了2333.
zzzzzzzabczz + 1 基础我也就会一半,233333
simon3000 + 2 帮我提个意见赶紧把简繁转换给修了....
andylizi + 2 + 33 楼主你太毁信心了~
ufof + 2 + 35 楼主你太帅了~
mine米 + 1 一个也不懂

查看全部评分

vvvbbbcz 当前离线
积分
337
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-12-25
查看详细资料
发表于 昨天 14:45 来自手机 | 显示全部楼层
我以为我可以写教程了,然而高级篇完全看不懂
回复

使用道具 举报

jiahao661683 当前离线
积分
513
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-2-28
查看详细资料
发表于 前天 20:24 来自手机 | 显示全部楼层
看的一脸懵逼的我
回复

使用道具 举报

BreezyMain 当前离线
积分
16
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-2-23
查看详细资料
发表于 5 天前 | 显示全部楼层
MC不能有效运用多核的原因是啥。。
回复

使用道具 举报

whattress 当前离线
积分
4
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-7-30
查看详细资料
发表于 2020-8-4 09:01:29 | 显示全部楼层
自然_Hungteen 发表于 2020-6-28 16:57
想知道中级篇第一题高效的函数咋写

这个题是算斐波那契数列中第n个数的数值。(斐波那契数列:1、1、2、3、5、8、13...公式为F(n)=F(n-1)+F(n-2))。原题目使用递归解决,这导致整个函数复杂度呈指数级别增长,复杂度为O(2^n)。用顺序循环结构写出代码可以使时间复杂度降低为O(n)也就是线性增长。完整可运行代码如下:
  1. import java.util.Scanner;
  2. public class Fibonacci {
  3.         public static void main(String[] args) {
  4.                 Scanner scan = new Scanner(System.in);
  5.                 System.out.println("输入n:");
  6.                 int n = Integer.parseInt(scan.nextLine().trim());
  7.                 long a =1,b = 1,c = 0;
  8.                 System.out.print("前"+n+"项为:\n"+a+"\t"+b+"\t");
  9.                 //直接从第三项开始
  10.                 for(int i=3;i<=n;i++){
  11.                         c = a + b;
  12.                         a = b;
  13.                         b = c;
  14.                         System.out.print(c+"\t");
  15.                         //每十个斐波那契数为一行输出
  16.                         if(i%10==0){
  17.                                 System.out.println();
  18.                         }
  19.                 }
  20.         }
  21. }
复制代码

实际上斐波那契数列的计算还有更优的方式,比如使用通项公式,矩阵优化等等,可以将时间复杂度降到对数级别O(logn)。这里就不多做阐释。
回复

使用道具 举报

bilegole 当前离线
积分
6
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-7-24
查看详细资料
发表于 2020-8-2 08:49:31 | 显示全部楼层
开发能力为0 我枯了
回复

使用道具 举报

referee0707 当前离线
积分
127
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-2-27
查看详细资料
发表于 2020-8-1 01:47:49 来自手机 | 显示全部楼层
美好的一天从脱发开始
回复

使用道具 举报

小满1221 当前离线
积分
61
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2018-7-27
查看详细资料
发表于 2020-7-31 23:25:27 | 显示全部楼层
看不懂的我。。。。
回复

使用道具 举报

referee0707 当前离线
积分
127
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-2-27
查看详细资料
发表于 2020-7-31 11:38:12 | 显示全部楼层
膜拜大佬!
回复

使用道具 举报

canying12345 当前离线
积分
106
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-5-4
查看详细资料
发表于 2020-7-30 17:39:03 来自手机 | 显示全部楼层
想学习一下
回复

使用道具 举报

52gta 当前离线
积分
154
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2014-11-26
查看详细资料
发表于 2020-7-28 15:48:04 | 显示全部楼层

美好的一天从脱发开始
回复

使用道具 举报

tsunade 当前离线
积分
120
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-7-25
查看详细资料
发表于 2020-7-25 21:22:03 | 显示全部楼层
我也是学编程的
回复

使用道具 举报

ljknbnb 当前离线
积分
4
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-7-23
查看详细资料
发表于 2020-7-24 18:40:56 | 显示全部楼层
好厉害啊
回复

使用道具 举报

Night丶R 当前离线
积分
136
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2015-7-9
查看详细资料
发表于 2020-7-15 20:29:10 | 显示全部楼层
水1下 不会死吧
回复

使用道具 举报

xiaojiajiawww 当前离线
积分
101
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-7-27
查看详细资料
发表于 2020-7-15 12:55:18 | 显示全部楼层
一个都不知道的我 太难了 我就想学习学习
回复

使用道具 举报

lonick 当前离线
积分
204
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-4-30
查看详细资料
发表于 2020-7-11 14:43:52 | 显示全部楼层
美好的一天从脱发开始
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2020-8-13 04:21 , Processed in 0.065131 second(s), Total 27, Slave 26 queries, Release: Build.2020.08.12 1730, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表