Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 34638|回复: 125

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

  [复制链接]
RecursiveG 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
3883
钻石
性别
保密
注册时间
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 更新

评分

参与人数 19人气 +22 金粒 +196 收起 理由
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 一个也不懂

查看全部评分

a695952737 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
25
钻石
性别
保密
注册时间
2019-6-19
查看详细资料
发表于 3 天前 来自手机 | 显示全部楼层
哇,不懂啊这个
回复

使用道具 举报

594666666 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
152
钻石
性别
保密
注册时间
2018-4-30
查看详细资料
发表于 2019-12-2 23:52:23 | 显示全部楼层
vpnking 发表于 2019-10-27 07:41
Proxy有什么作用???我只会写coremod怎么办。。

我只会C++,却有着一个美好的mod梦
回复

使用道具 举报

windows1089 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
34
钻石
性别
保密
注册时间
2018-2-2
查看详细资料
发表于 2019-11-10 13:35:20 来自手机 | 显示全部楼层
简述为何32位系统不能支持4GB以上的原因:
从计算机体系结构来讲,一般32位CPU(也指核)最大寻址位为32位,所以32bit软件(包括OS)只支持最多4GB的物理内存空间(因为2^32等于二进制中的4G)
再简述为何mc不能用多核:因为mc java edition运行于jvm,而jvm本身不支持多核,故mc java edition也不支持多核。
回复

使用道具 举报

mc~麒麟 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
54
钻石
性别
保密
注册时间
2019-4-7
查看详细资料
发表于 2019-11-2 20:21:44 来自手机 | 显示全部楼层
为什么不能用Python
回复

使用道具 举报

vpnking 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
451
钻石
性别
保密
注册时间
2017-2-12
查看详细资料
发表于 2019-10-27 07:41:44 | 显示全部楼层
Proxy有什么作用???我只会写coremod怎么办。。
回复

使用道具 举报

17679120667 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
28
钻石
性别
保密
注册时间
2019-10-13
查看详细资料
发表于 2019-10-15 11:15:23 来自手机 | 显示全部楼层
得努力休息一下。额咳咳打错了是学习
回复

使用道具 举报

加速火把PY 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1146
钻石
性别
保密
注册时间
2018-7-8
查看详细资料
发表于 2019-10-13 20:14:44 来自手机 | 显示全部楼层
本帖最后由 HamsterB君 于 2019-10-13 20:19 编辑
呆辽 发表于 2019-9-14 00:29
中级
1:斐波那契数列第N项,直接套用通项公式a(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}比递归累加效 ...


斐波那契数列如果用通项公式将会有许多问题
一,掉精度,在进几十甚至几百万次的累加与累乘之后小数点后面的部分将会有很大偏差甚而影响到整数部分
二,时间复杂度本质上几乎没有改变,如果你用高精度小数整数类,空间复杂度可能比原来的递归代码高许多。
所以我认为更好的解决方法是使用矩阵乘法
第n项等于|0 0|
                   |0 1| 的n次方。
为了使代码更加高效 可以像使用整数小数的快速幂一样

对目前的base 与ret二分 把线形的复杂度降到O(log n) 即可在n小于2^100000000的情况下一秒出答案
回复

使用道具 举报

miyiming1 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
3399
钻石
性别
保密
注册时间
2017-2-6
查看详细资料
发表于 2019-10-13 10:48:39 | 显示全部楼层
是在这个板块自学MC相关的编程吗
回复

使用道具 举报

可乐黎222 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
49
钻石
性别
保密
注册时间
2019-7-11
查看详细资料
发表于 2019-10-10 20:11:16 来自手机 | 显示全部楼层
看不懂。。。。
回复

使用道具 举报

leican 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
87
钻石
性别
保密
注册时间
2017-10-26
查看详细资料
发表于 2019-9-28 15:09:58 | 显示全部楼层
看不懂呀
回复

使用道具 举报

16K 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
708
钻石
性别
保密
注册时间
2019-3-8
查看详细资料
发表于 2019-9-23 22:05:56 | 显示全部楼层
星空小浪 发表于 2019-9-21 12:37
public class A {
??public static void main() {
? ? System.out.println("hello, world");

哈哈  我都没发现
回复

使用道具 举报

mohist 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1981
钻石
性别
保密
注册时间
2019-8-24
查看详细资料
头像被屏蔽
发表于 2019-9-22 17:20:50 | 显示全部楼层
第5篇是不是有问题
回复

使用道具 举报

星空小浪 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
85
钻石
性别
保密
注册时间
2019-3-17
查看详细资料
发表于 2019-9-21 12:37:45 | 显示全部楼层
public class A {
??public static void main() {
? ? System.out.println("hello, world");
??}
}
回复

使用道具 举报

呆辽 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
18
钻石
性别
保密
注册时间
2018-11-8
查看详细资料
发表于 2019-9-14 00:29:51 | 显示全部楼层
中级
1:斐波那契数列第N项,直接套用通项公式a(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}比递归累加效率高(大概?)JAVA写得少,最后应该还有个取整的问题吧。。。(逃
2:面试时养成的坏习惯,对这类题有抵触情绪,可以略过么。。。
3:因为C++要求自己管理所有内存,而JAVA有自己的垃圾回收机制,在一个对象不再使用之后的某一时刻JVM会统一回收这些空间
4:可能泛型里要求List<class className>给出的是类,而不是基础数据类型,所以Integer可以而int不可以?
回复

使用道具 举报

智闪 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
57
钻石
性别
保密
注册时间
2019-4-5
查看详细资料
发表于 2019-8-30 22:50:09 来自手机 | 显示全部楼层
我我一个新手。不懂啊
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2019-12-14 05:23 , Processed in 0.057837 second(s), Total 24, Slave 23 queries, Release: Build.2019.12.06.1150, Gzip On, MemCached On.

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

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

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