今天出了一个 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 ),满足第二问条件


答案

7222 次点击
所在节点    Java
46 条回复
vjnjc
2018-05-09 00:10:42 +08:00
Java 选手看不懂。。。这是 Java10 么?
huhu3312
2018-05-09 00:12:34 +08:00
看到 var 类型的类型推断,果断是 java10 没错了
Citrus
2018-05-09 01:01:28 +08:00
没太懂,为啥是语法题?感觉这是数学题啊。。。
Bryan0Z
2018-05-09 01:03:12 +08:00
第一个简单

private int value;

public F(int i){
this.value = i;
}

public F apply(int i){
return new F(i^2+value)
}

手机码字,就不发全了
glacer
2018-05-09 02:34:34 +08:00
如果使用 Java 成员的话,不是很懂第一问和第二问在实现上有什么区别。。
不使用类成员的话,用内部类实现闭包?
88250
2018-05-09 02:44:34 +08:00
Bryan0Z
2018-05-09 03:22:43 +08:00
@88250 中间插了个链接为啥不报错
shiyidi
2018-05-09 05:44:05 +08:00
shiyidi
2018-05-09 05:50:55 +08:00
ayanamist
2018-05-09 07:22:51 +08:00
这和语法有啥关系,明明是打着编程笔试题的智力小测验。在国内最大的 java workshop 表示要是有团队出这种题,你们还是别去了,去了估摸着也要去猜产品的心思。
hsuan
2018-05-09 07:25:51 +08:00
第一问和第二问难道不是一样的吗
lihongming
2018-05-09 07:32:08 +08:00
Java 已经过了炫技的时代了
Cbdy
2018-05-09 07:39:26 +08:00
@glacer @hsuan 第二问比第一问条件更强一点,第一问每个类的实例保持一个状态,第二问每次调用 apply 产生一次新的状态。能通过第一问测试的用例不一定能通过第二问。这两问都是为第三问做铺垫

@ayanamist 考 Java 闭包的语法,怎么变智力小测验了呢?链式调用求平方和谁都能看出来吧
cout2013mr
2018-05-09 08:11:05 +08:00
看来我是第一个不认识断言关键字的
sagaxu
2018-05-09 08:15:59 +08:00
考语法跟考打字速度效果差不多
wenzhoou
2018-05-09 08:32:09 +08:00
完全通过测试 注:非完整代码
if ( i= 1 ) return 1;
if ( i= 2 ) return 5;
if ( i= 3 ) return 14;
好了。
wenzhoou
2018-05-09 08:33:23 +08:00
别批判我。我是来搞个笑的。
darklowly
2018-05-09 08:38:05 +08:00
其实一个闭包可以搞定全部
另外算法是 平方和
moximo
2018-05-09 08:46:28 +08:00
class f{
88250
2018-05-09 08:52:30 +08:00
@Bryan0Z label

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

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

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

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

© 2021 V2EX