Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

楼主: RecursiveG

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

  [复制链接]
kqn3 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
596
钻石
性别
保密
注册时间
2015-7-27
查看详细资料
发表于 2019-7-19 18:11:24 | 显示全部楼层
中级篇中第一题,改成三目运算符直接return 会不会快一点
回复

使用道具 举报

tamashii 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
973
钻石
性别
保密
注册时间
2011-8-17
查看详细资料
发表于 2019-7-12 17:52:42 | 显示全部楼层
初级篇
1:
Java -> 编程语言
JVM -> 运行时虚拟机
JRE -> 运行时环境
JDK -> 开发环境
JAVAC -> 编译器
*.java -> 源文件
*.class -> 目标文件
Eclipse -> IDE -> Integrated Development Environment
Gradle -> 构建工具
Javadoc -> 开发文档

2: 1, 2, 3, 5, 6, 7, 12, 13

3:
  1. Dictionary<String, Collection<Dictionary<String, Integer>>>
复制代码


4:
  1. list1:
  2.   - subVal1: 11
  3.     subVal2: 12
  4.   - subVal3: 13
  5.     subVal4: 14
  6.     subVal5: 15
  7. list2:
  8.   - subVal6: 16
复制代码


5: 32 位的操作系统使用的指针是 32 位,也就是 4 字节。4 字节的指针取之范围理论上为 0 - 232 - 1,而 232 为 4,294,967,296,也就是说 32 位的指针最大支持到 4,294,967,295 字节的寻址范围,约等于 4GB。

6: foreach 循环是使用迭代器进行的,其运作原理是:1. 获取迭代器。2. 调用 hasNext() 判断集合中是否存在下一个元素,如果存在,则调用 next() 获取下一个元素。

7: 匿名接口实现:
  1. new Runnable() {
  2.     @Override
  3.     public void run() {
  4.         // Do something with new thread.
  5.     }
  6. };
复制代码


8: while 是当条件满足时进行循环。do...while 会先执行一次循环的代码,然后再进行判断。for 有三个部分:初始化、判断、步进,当进入 for 循环时会进行初始化,然后进行判断,条件满足时进入到循环的代码中;当循环代码执行完毕后再执行步进,然后再进行条件判断,直到条件不满足为止。continue 的作用是停止执行之后的语句,并继续执行下一次循环。break 的作用是停止执行之后的语句,并中断循环。

9: 只有 1和 2 在本质上相同。

10: extends 表示对现有的类进行扩展,implements 表示对接口的实现。

11: 3个。

12: 假设文件名为 test.java :
  1. javac test.java
  2. java test
复制代码




中级篇
1: 求斐波那契数列的第 x 个元素。十分低效而且容易导致栈溢出。
  1. int func(int x) {
  2.     if (x < 0) throw new IllegalArgumentException();
  3.     if (x == 0 || x == 1) return 1;

  4.     // 创建一个数组,长度为 x + 1
  5.     int[] arr = new int[x + 1];

  6.     arr[0] = 0;
  7.     arr[1] = 1;
  8.    
  9.     // 遍历
  10.     for (i = 2; i < x + 1; i++) {
  11.         f[i] = f[i - 1] + f[i - 2];
  12.     }

  13.     return f[x + 1];
  14. }
复制代码


2: String 是一个引用类型,因此 String 类型实力的本质是一个指针。在例题中的 str1 本身是一个 String 的指针,最开始赋值为 "String #1",假设其指针为 1,当赋值为 "Not String #1" 的时候,其指针的值发生了改变,从 1 变成了 2。然而当进行 list1.add() 的时候,添加的指针仍然为 1,所以改变了 str1 并不会改变 list1 中的指针值。
而 list2 中添加的是 MyClass 的实例,改变的是在该实例中的 x 指针。但是由于添加的是 myClass 指针,所以对 myClass.x 作出改变并不会影响 myClass 本身,因此输出的值是改变之后的值。

此题充分说明了没有重载 = 的 Java 是多么反人类。

3: 因为 Java 有自动垃圾回收机制——尽管非常不好用。

4: Java 的范型类型要求必须是引用类型,而 int 是值类型。如果将 int 换成 Integer 便可通过编译。

5: 报错,因为类 A 没有带参数的构造函数。

6: 因为是此变量是 final 的,不允许改变其值,所以会抛出异常。

7: 因为大部分处理都是单线程的。不过那时过去式了,现在有些操作是多线程的了。然而对文件的操作仍然是且只能是基于单线程,并且生成 Minecraft 地图时需要大量的文件操作,所以单线程的占用依然很高。

8: MCP 是 Moder's Code Pack,是 Forge 的开发库。而 Forge 是运行 Mod 的框架。

9: Forge 是 Mod 运行库, Bukkit 是插件 API, Cauldron 是同时实现了 Forge 与 Bukkit 的服务端。

10: 我哪知道我又没写过 Mod (开始耍赖)

11: NMS 是 net.minecraft.server 包中的类。此包属于 minecraft 服务器原有的功能,使用这些类的好处是可以直接操作 Minecraft 服务器的动作,不用经过 Bukkit API,从而节省了效率。怀处在于一旦更新的版本对你使用的类进行了改动,那么插件中的相关代码很有可能牵一发而动全身。并且因为没有文档支持,所以容易出碰到不安全的方法中,增加服务端报错的风险以及排错的难度。

12: Forge:我来作为启动入口,启动原版的 Minecraft。
CraftBukkit:我选择自闭!
Spigot:那么我来接着做 CraftBukkit 的维护吧。哦对了,你不可能直接下到 spigot.jar 或者 craftbukkit.jar,相对的我会给你一个 BuildTools.jar,这个 BuildTools.jar 会自动下载原版的 MinecraftServer.jar 并且反编译、反混淆,然后将 Bukkit API 以及 Spigot API 嵌入进去——哇啦!



高级篇
1.LaunchWrapper 的作用就是将原本从 <version>.jar 启动变成了从 Forge.jar 或者 LiteLoader.jar(或者其他的什么 .jar) 启动。其目的是为了保证 <version>.jar 是从官网下载并且没有被修改过的(基于 Minecraft 的 EULA)。
2. 我哪知道我又没写过 Mod
3. ASM 是平台相关代码,而 Java Bytecode 是中间语言。
4. 我哪知道我又没写过 Java 程序,我是一个 C# 程序员!

评分

参与人数 1人气 +4 金粒 +50 收起 理由
gooding300 + 4 + 50 神乎其技,不服不行!

查看全部评分

回复

使用道具 举报

1512624649 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
68
钻石
性别
保密
注册时间
2018-12-15
查看详细资料
发表于 2019-7-12 13:34:36 来自手机 | 显示全部楼层
emmmmmmmmmmm
回复

使用道具 举报

bbj?? 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
43
钻石
性别
保密
注册时间
2018-7-30
查看详细资料
发表于 2019-7-9 10:57:44 | 显示全部楼层
一脸蒙蔽 ???
回复

使用道具 举报

一条末鱼 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
425
钻石
性别
保密
注册时间
2018-4-27
查看详细资料
发表于 2019-6-29 22:22:38 | 显示全部楼层
很多都不会,看来我还要多学习啊
回复

使用道具 举报

MeTerminator 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1501
钻石
性别
保密
注册时间
2018-2-13
查看详细资料
发表于 2019-6-28 10:47:20 来自手机 | 显示全部楼层
哇,作者,开发了这么多年的Java,我竟然还有题不会,要都全对了,是不是可以去mojang上班了
回复

使用道具 举报

七弦梧桐枝 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
125
钻石
性别
保密
注册时间
2019-6-26
查看详细资料
发表于 2019-6-26 17:41:06 来自手机 | 显示全部楼层
作为一个六年工作经验的JAVA高级工程师,初级里还有部分题不会,我果然是个水货吧
回复

使用道具 举报

1935453237 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
231
钻石
性别
保密
注册时间
2015-8-10
查看详细资料
发表于 2019-6-21 12:46:02 | 显示全部楼层
66666666666
回复

使用道具 举报

kksw 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
717
钻石
性别
保密
注册时间
2014-11-11
查看详细资料
发表于 2019-6-19 21:02:53 来自手机 | 显示全部楼层
看懂一些,Java还在进一步学习中。哈哈哈
回复

使用道具 举报

踩死卢克 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
162
钻石
性别
保密
注册时间
2017-3-19
查看详细资料
发表于 2019-5-16 14:25:50 | 显示全部楼层
java编程还是可以的,两年经验了,看了下题目大多还是会的
回复

使用道具 举报

2425701120 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
178
钻石
性别
保密
注册时间
2016-12-22
查看详细资料
发表于 2019-5-8 18:04:09 | 显示全部楼层
66666666666666
回复

使用道具 举报

杨靖涛 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
61
钻石
性别
保密
注册时间
2019-5-3
查看详细资料
发表于 2019-5-3 15:59:50 | 显示全部楼层




.........................
回复

使用道具 举报

杨靖涛 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
61
钻石
性别
保密
注册时间
2019-5-3
查看详细资料
发表于 2019-5-3 15:59:28 | 显示全部楼层
qq870249715 发表于 2019-4-4 00:32
一个都看不懂 哈哈哈哈哈

........................
回复

使用道具 举报

杨靖涛 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
61
钻石
性别
保密
注册时间
2019-5-3
查看详细资料
发表于 2019-5-3 15:59:06 | 显示全部楼层
qq1458132898 发表于 2019-4-29 16:08
**** 作者被禁止或删除 内容自动屏蔽 ****

我也是..............
回复

使用道具 举报

杨靖涛 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
61
钻石
性别
保密
注册时间
2019-5-3
查看详细资料
发表于 2019-5-3 15:58:37 | 显示全部楼层
表示看不懂
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-8-3 20:14 , Processed in 0.060450 second(s), Total 24, Slave 22 queries, Release: Build.2020.07.08.1452, Gzip On, Redis On.

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

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

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