Minecraft(我的世界)中文论坛

 找回密码
 注册(register)
楼主: RecursiveG

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

  [复制链接]
丶皇天 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
4743
钻石
性别
保密
注册时间
2014-5-7
查看详细资料
发表于 2015-10-31 08:53:53 | 显示全部楼层
本帖最后由 丶皇天 于 2015-10-31 08:58 编辑

话说中级篇的第一题怎么没有人讨论。第一题效率低的原因是用了递归算法吧,作用是求出斐波那契数列第x+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. }
复制代码
我的答案是:
int func(int x)
{
    if (x < 0) throw new IllegalArgumentException();
    int i,f1,f2,f3;
    f1=1;
    f2=1;
    for (i=0;i<x;i++)
    {
        f3=f1+f2;
        f1=f2;
        f2=f3;
    }
    return f1;
}







评分

参与人数 1金粒 +1 收起 理由
RecursiveG + 1 Bingo! 还有O(log(n))算法哟

查看全部评分

回复

使用道具 举报

xiweihai 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
2016
钻石
性别
保密
注册时间
2014-5-7
查看详细资料
发表于 2015-10-26 16:01:11 | 显示全部楼层
andylizi 发表于 2015-10-26 15:38
你对第二题的回答我已经醉了,他的意思是单独把每一句拿出来,没跟你说连起来啊 ...

随便写写而已,别当真
回复

使用道具 举报

andylizi 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
15605
钻石
性别
保密
注册时间
2014-4-26
查看详细资料
发表于 2015-10-26 15:46:49 | 显示全部楼层
本帖最后由 andylizi 于 2015-10-26 15:51 编辑



果不其然,但是。。。原因在哪里呀原因在哪里
呃,刚刚又试了下,修改数组。。


为什么数组就可以。。
回复

使用道具 举报

andylizi 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
15605
钻石
性别
保密
注册时间
2014-4-26
查看详细资料
发表于 2015-10-26 15:38:43 | 显示全部楼层
xiweihai 发表于 2015-10-26 01:51
好吧刚刚关完ide看见这个
1.jvm是虚拟机,jre是运行环节,jdk开发环境。javadoc 是api,java编程语言,.jav ...

你对第二题的回答我已经醉了,他的意思是单独把每一句拿出来,没跟你说连起来啊
回复

使用道具 举报

3TUSK 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
5886
钻石
性别
保密
注册时间
2013-3-8
查看详细资料
发表于 2015-10-26 04:49:08 | 显示全部楼层
本帖最后由 u.s.knowledge 于 2015-10-26 04:53 编辑

自学java的路过,看完题目后选择死亡。(基础知识完全不够用系列...)

回复

使用道具 举报

xiweihai 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
2016
钻石
性别
保密
注册时间
2014-5-7
查看详细资料
发表于 2015-10-26 01:51:20 | 显示全部楼层
本帖最后由 xiweihai 于 2015-10-26 11:13 编辑

好吧刚刚关完ide看见这个
1.jvm是虚拟机,jre是运行环节,jdk开发环境。javadoc 是api,java编程语言,.java源文件,

eclipse ide, gradle构架工具 .class就是编译好的类
2.第二句就进入死循环的吧,后面都是不可达代。编译不会通过的
3.其实就是一堆集合,jsonarray=arraylist,jsonObject=set
4.对yml使用很少,通常使用自带的gson包用json储存数据
5.2的32次方-1<(4*1024)
6.只知道,遍历数组集合代码更简洁
7.<> : 这样的应该就是语法糖吧
8.for这个不好说多了个定义变量,和执行的环节。while就是为假时跳出。do while 先执行了再判断。

break可以跳出循环或者if这样的语句
9.这个不懂
10 第一个是继承,然后是实现,可以理解为前面做好的,后面的得自己实现
11.两个吧
12.java a
13.int func(int x) {
        int y=0;
        if(x<0){
                throw new IllegalArgumentException();
        }else if(x<2){
                y=1;
        }
        //不然会进入死循环
        int z=x+x-3;
        if(z<0){
                return z;
        }else{
                y=func(z);
        }
        return y;
}
14.因为string是个对象,而list里面储存是以前的对象。直接=""相当于newle另外一个对象,修改应该是str1.replace(str1,"Not String #1")。
15.因为java有内存回收机制,而且java不支持指针
16.int是个基本类型,而集合里面都是是Object,故不行,可使用Integer(编译器会帮你自动转换)
17.12利用java反射读取对象内的变量
18.setAccessible(true);可以暴力获取,至于后果不知道
19.不知道
20.mcp回编译源码,然后forge在此基础上开发api是这样吗
21.不懂
22.也不懂
23.更不懂
24.可以做其他的事情,比如说删除mc的文件,如果mc被打开后文件就被占有了无法删除
25.不懂
26.不懂
27.稍微了解反射,但是前面的没听说过
回复

使用道具 举报

andylizi 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
15605
钻石
性别
保密
注册时间
2014-4-26
查看详细资料
发表于 2015-10-26 00:38:42 | 显示全部楼层
RecursiveG 发表于 2015-10-26 00:34
自己实际写代码试试呗
print一下看看到底变不变

午夜写代码,逗我
然而我在我的ColorMOTD里使用这个方法来注入ProtocolLib的自动更新器使其无法工作,然后ProtocolLib老老实实的提示没有发现更新,只不过那个字段是String[]型。。是因为简单类型还是怎么着。。直接告诉我不行吗,不想开IDE了A.A
想了想90%是因为简单类型,但是具体说不出来

评分

参与人数 1金粒 +1 收起 理由
RecursiveG + 1 那就起床再写233,毕竟这是Java编译器少有.

查看全部评分

回复

使用道具 举报

RecursiveG 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
3866
钻石
性别
保密
注册时间
2013-8-19
查看详细资料
 楼主| 发表于 2015-10-26 00:34:20 | 显示全部楼层
andylizi 发表于 2015-10-26 00:30
反射那题有啥问题么。。我测试是可以用的。。
高级篇别怪我,我从未写过mod,只不过是配置完forge环境已 ...

自己实际写代码试试呗
print一下看看到底变不变

有小瑕疵,不过我全指出来就没有讨论的意义了
回复

使用道具 举报

andylizi 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
15605
钻石
性别
保密
注册时间
2014-4-26
查看详细资料
发表于 2015-10-26 00:30:17 | 显示全部楼层
RecursiveG 发表于 2015-10-26 00:28
哎唷不错。虽然还是有点小瑕疵。两个5那个确实是我的锅。。。
关于反射那题,除了final还有另一个大问题 ...

反射那题有啥问题么。。我测试是可以用的。。
高级篇别怪我,我从未写过mod,只不过是配置完forge环境已经无爱了
话说难道我就错了这么几个?
回复

使用道具 举报

RecursiveG 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
3866
钻石
性别
保密
注册时间
2013-8-19
查看详细资料
 楼主| 发表于 2015-10-26 00:28:03 | 显示全部楼层
andylizi 发表于 2015-10-25 12:15
初级篇
1、连线
Java——编程语言

哎唷不错。虽然还是有点小瑕疵。两个5那个确实是我的锅。。。
关于反射那题,除了final还有另一个大问题(编译器你别跑这个锅你背上)
另外高级篇的2问题有点大。首先obfName是指a,b,c这种,srgName是method_XXXX_a这种,mcpName才是能望文生义的。编译时的一次混淆你讲了,但其实运行时还有一次反混淆。。。。
回复

使用道具 举报

andylizi 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
15605
钻石
性别
保密
注册时间
2014-4-26
查看详细资料
发表于 2015-10-25 12:15:22 | 显示全部楼层
本帖最后由 andylizi 于 2015-10-25 12:17 编辑

初级篇
1、连线
Java——编程语言
JVM——运行时虚拟机
JRE——运行时环境
JDK——开发环境
JAVAC——编译器
*.class——目标文件
*.java——源文件
Eclipse——IDE
IDE——Integrated Development Environment
Gradle——构建工具
Javadoc——开发文档
2、能通过编译的代码(你这里怎么有2个5!)
1 2 3 6 10
3、使用泛型构造一个适合并便于使用的类型用于存储以下JSON
  1. List<Map<String,Integer>> list1 = new ArrayList<>();
  2. List<Map<String,Integer>> list2 = new ArrayList<>();
复制代码

4、将上一题中的JSON改写为YAML
  1. ---
  2. list1:
  3. - subVal1: 11
  4.   subVal2: 12
  5. - subVal3: 13
  6.   subVal4: 14
  7.   subVal5: 15
  8. list2:
  9. - subVal6: 16
复制代码

5、喂,我6年级
6、本质当然是for循环这不是废话么
7、泛型
8、它们都是循环语句相关= =具体还需要我一个一个解释?
9、
  1. void foo(int a, int b);
  2. void foo(int x, int y);
  3. void foo(Integer a, Integer b);
复制代码
以及
  1. void bar(List list);
  2. void bar(List<Integer> list);
  3. void bar(List<Double> list);
复制代码

10、extends是继承,继承的可能是一些有方法体的方法,并且也可以选择不重写已经有方法体了的方法,但implements的存在就是让你重写的
11、4个
12、
  1. javac A
  2. java A
复制代码
(我从来都是用IDE编译,打包jar执行,从未。。)

中级篇
有些太复杂懒得写了,我就说一些吧。。
3、这个我不怎么了解,大概是因为Java有自带的垃圾回收机制?还是因为Java没有指针?【扯谈中】
4、简单类型不能作为泛型的参数。原因?它们不算对象
6、不能修改static final,因为它们在java中的定义是,只能被赋值一次,绝对不能在内存中修改的固定值(static和final单独都有此意),但是有一个办法还是可以:
  1. field.setAccessible(true);
  2. Field fieldModifier = field.getClass().getDeclaredField("modifiers");
  3. fieldModifier.setAccessible(true);
  4. fieldModifier.setInt(field, field.getModifiers() & ~Modifier.FINAL);
复制代码
用反射对付反射23333
8、mcp帮你获得Minecraft源码,这样forge就可以使用它们= =【胡扯】
9、bukkit基于官服端,forge基于Minecraft,Cauldron基于forge和bukkit
10、没写过mod
11、NMS是net.minecraft.server包的简称,其优点就是让插件可以做到很多很多神奇的功能(ProtocolLib就是使用了它)缺点就是,因为NMS的包中含有服务器版本号比如v1_7_R1,导致插件只能兼容某某版本
当然这个可以使用多个NMS对应的类,或者反射来解决,不过很麻烦
还有就是Cauldron的NMS是混淆过的,因为它的NMS直接基于官服端
12、6年级路过


高级篇
1、LaunchWrapper会在MC加载之前加载,用途?大概就是将自己的相关程序注(tiao)入(jiao)Minecraft,使其可以做一些超出Minecraft的事
2、obfName就是mod导出完成后,你能在代码里找到的东西,因为你编写mod的时候使用的那些方法名呀之类的,都是进过mcp反混淆的,在使用的时候得混淆回去。srgName?没听说过。mcpName?同样没听说过。简述mod从编译到运行中经历的两次混淆/反混淆的时机和作用?我刚刚在回答obfName的时候已经回答了这个问题了
3、ASM什么鬼?似乎见过的样子(我都说过我没写过mod)
4、同上

评分

参与人数 1人气 +2 金粒 +5 收起 理由
RecursiveG + 2 + 5 哎(dà)唷(chù)不(nǐ)错(hǎo)

查看全部评分

回复

使用道具 举报

Greensky 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
4981
钻石
性别
保密
注册时间
2013-1-8
查看详细资料
发表于 2015-10-25 11:41:02 | 显示全部楼层
本帖最后由 henry5041 于 2015-10-25 12:11 编辑

我泛型和反射没学好,初级和中级也只能勉强通过,果然还要多多学习……
回复

使用道具 举报

风雪大池 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
434
钻石
性别
保密
注册时间
2014-12-19
查看详细资料
发表于 2015-10-24 15:35:10 | 显示全部楼层
我是iOS的。。。有些C语言的东西还是能看懂的。。。
回复

使用道具 举报

ufof 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
3886
钻石
性别
保密
注册时间
2014-7-10
查看详细资料
发表于 2015-10-23 23:21:07 | 显示全部楼层
初级和中级基本都可以,高级够呛。。看来还需要多学习
回复

使用道具 举报

缇米Official 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
14967
钻石
性别
保密
注册时间
2012-7-18
查看详细资料
发表于 2015-10-23 13:36:21 | 显示全部楼层
真心跪了,本来还打算业余学学来的......还是做盆友简单些
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2019-10-20 01:38 , Processed in 0.044758 second(s), Total 21, Slave 19 queries , Gzip On, MemCached On.

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

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

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