今天出了一个 Java 笔试题(语法题),有兴趣的同学来做做😄

2018-05-08 23:50:00 +08:00
 Cbdy

第一问

写一个 Java 类,满足以下条件

assert new F().apply(1).get() == 1;
assert new F().apply(1).apply(2).get() == 5;
assert new F().apply(1).apply(2).apply(3).get() == 14;

第二问

写一个 Java 类,满足以下条件

var f = new F();
assert f.apply(1).get() == 1;
var c = f.apply(1);
assert c.apply(2).get() == 5;
assert c.apply(2).apply(3).get() == 14;

第三问

写一个 Java 类,不使用 Java 类的成员变量( Field ),满足第二问条件


答案

7238 次点击
所在节点    Java
46 条回复
micean
2018-05-09 09:00:30 +08:00
第三题
不用成员变量,我用 System.setProperty 可以吧
dychenyi
2018-05-09 09:12:33 +08:00
不懂 java。
c++的 apply ()里面肯定要有 return *this;这种写法就符合 lz 语法了。
zhazi
2018-05-09 09:17:46 +08:00
笔试题?
DRcoding
2018-05-09 09:21:23 +08:00
然而 java 10 的语法有何意义,就问贵司敢不敢在生产环境上 jdk10 吧,哈哈哈哈
Tiakon
2018-05-09 09:22:36 +08:00
怎么感觉更像 scala
Cbdy
2018-05-09 09:25:01 +08:00
@cout2013mr assert 是 Java1.4 加进来的特性
@darklowly 对的,闭包。题目条件是递次增强的,做出第三问,前两问的用例也能通过
@micean 很机智啊,也是一种方法😄
@dychenyi 我也不是很懂 C++,不过 C++似乎没有词法闭包
Cbdy
2018-05-09 09:28:48 +08:00
@DRcoding 我只是测试用例用了 Java10 的语法,题目可以用任何版本 Java 语法做
yuyueMJ
2018-05-09 09:45:56 +08:00
js 题?
yuchting
2018-05-09 11:09:06 +08:00
@wenzhoou 正解
smdbh
2018-05-09 12:00:52 +08:00
py 里有 yield,java 里不知道
scmod
2018-05-09 14:27:06 +08:00
```java
public class F {

public F apply(final int i) {
return new F() {
public int get() {
return i * (i + 1) * (2 * i + 1) / 6;
}
};
}

public int get() {
return 0;
}

}
```
重载?闭包怎么写...java 不是没闭包么..
holmesabc
2018-05-09 14:44:07 +08:00
国考 智力题吧
oswuhan
2018-05-09 16:21:51 +08:00
6 楼是大佬,鉴定完毕。

https://hacpai.com/member/88250
alamaya
2018-05-09 16:32:48 +08:00
@scmod java 有闭包,不过是残疾的那种,要求变量是 final or effective final
sonicthedgehog
2018-05-09 16:46:43 +08:00
class F {

public F() { }

public F apply(int i) {
return new F() {
@Override
public int get() {
return F.this.get() + i * i;
}
};
}

public int get() {
return 0;
}
}
已测试,通过
sonicthedgehog
2018-05-09 16:59:10 +08:00
@sonicthedgehog 不过这不是惰性计算,难受
Terry05
2018-05-09 17:00:02 +08:00
这年头要是找工作还让我做笔试,尤其是这种没事找事的题目,就给老子滚粗,爱招谁招谁去

应届生也许很会做这种题,招应届生去吧
wdlth
2018-05-09 22:16:42 +08:00
这一定是 clojure 的阴谋
kiddult
2018-05-10 00:16:22 +08:00
@Cbdy 版本上实际上还是限定了只能用 invokedynamic 来实现;内部匿名类不能用,底层会引入 final Field
Cbdy
2018-05-10 01:53:21 +08:00
@kiddult 不需要 invokedynamic,我给出了参考答案,你可以在用早期 java 平台试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/453263

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX