Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

楼主: RecursiveG

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

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

使用道具 举报

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

使用道具 举报

duchuanrui 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
79
钻石
性别
保密
注册时间
2019-8-10
查看详细资料
发表于 2019-8-22 17:51:34 | 显示全部楼层
吃瓜群众的快乐
回复

使用道具 举报

wuzexi 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
253
钻石
性别
保密
注册时间
2017-2-5
查看详细资料
发表于 2019-8-20 17:47:23 | 显示全部楼层
MCBBS有你更精彩
回复

使用道具 举报

永恒Memeda 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
560
钻石
性别
保密
注册时间
2015-9-4
查看详细资料
发表于 2019-8-2 13:13:44 | 显示全部楼层
作为一个路人,我要留下自己的脚印
回复

使用道具 举报

lisumr 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
41
钻石
性别
保密
注册时间
2019-7-15
查看详细资料
发表于 2019-7-21 20:42:32 | 显示全部楼层
大部分都不懂的我  orz
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-4-5 14:23 , Processed in 0.045876 second(s), Total 20, Slave 19 queries, Release: Build.2020.04.01.1425, Gzip On, MemCached On.

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

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

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