今天面试官在线问代码题,让我用 Java 实现 1 到 100 的和。 我给的代码如下:
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(sum);
就马上说不合适,各位大佬能说说为什么吗?
今天面试官在线问代码题,让我用 Java 实现 1 到 100 的和。 我给的代码如下:
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(sum);
就马上说不合适,各位大佬能说说为什么吗?
|
hdbzsgmJul 3, 2020
1
我觉得他想让你利用一下等差数列的性质
|
|
2
@hdbzsgm 谢谢,我后来也想到,可对方连个机会都不给😂
|
|
3
System.out.println(5050);
|
|
4
没有给背景,确实好像在挖坑,不合适
|
|
5
他有没有继续问,有没有其他的方法?
如果不问,问题不在你。 |
|
6
@echo1937 没有,还 diss 了我一下,然后说不合适,不录用
|
|
coderravenJul 3, 2020
7
假设,他没有催促你快点完成。
给了你一定时间。 写完全点 class Solution { public int addToNumber(int number) { xxx…. } } 然后多作几种实现。 不是有什么 100+1 * 50 这种么。 自己再简化下。 然后还能主动和他聊一聊当这个数超出范围后如何处理。 比如 number=100000000000000000000 的时候。 你写的这个太应付了。 随便来个人都能写出来。 没啥意思。 over 。 |
|
8
@caowentao 还说什么,这能看出来是 Java 代码吗?😂
|
|
9
@coderraven 他说五分钟以内解决
|
|
10
emmmmm
反正我面试的时候,是自己尽可能展现自己的闪光点。 而不是一直在被面试官考验。。 你可以按我这个思路去面试。 祝你顺利。 |
|
11
@coderraven 谢谢你,HR 就只让我实现 1 加到 100 的和而已😂
|
|
lnimJul 3, 2020
12
可能是想用递归实现? 然后在问能否优化, 在用尾递归?
|
|
13
可能是楼上说的等差数列,也可能是期望你给出 IntStream.rangeClosed(1, 100).sum() 的回答[狗头]
|
|
VariazioniJul 3, 2020
14
@CismonX 感谢。。头一次知道有 IntStream 这种东西。。老了老了
|
|
VegetableJul 3, 2020
15
return 5050
|
|
VegetableJul 3, 2020
16
说实话,我觉得这题目还是有一点意义的,很多人看到题目就知道结果是 5050,因为这个题目在低年级教育当中是很常见的,可能做过原题。
无论是等差数列的性质、还是梯形面积的(上底+下底)乘以高除以 2,都是非常常见的知识点。写个循环对方说不合适正常,不过不应该一棍子打死,应该多问两句才是。 |
|
di94shJul 3, 2020 via iPhone
17
还是面少了,多面面就行了🐶,o ( 1 )的算法写成 o ( n )当然不合适,多从复杂度分析方面考虑问题
|
|
zengming00Jul 3, 2020
18
无论公司有多吸引人,遇到做题直接拒绝
|
|
jackchao7432Jul 3, 2020
19
@zengming00 大厂全被你给拒了,6666
|
|
20
这题用多层卷积神经网络就可以做出来了
首先你知道 1 到 2 的和是 3,1 到 3 的和是 6,0 到 1 的和是 1 由此你可以得到输入和输出的对应关系 [1,2] -> [3] [1,3] -> [6] [0,1] -> [1] 把这些数据作为训练集,然后设计一个合适的神经网络,将数据代进去做训练,得到一个训练好的模型 然后再输入 [1,100] 就可以得到结果 如果面试官说不对,那就多训练几次,得到几个不同模型,总有个对的 |
|
21
直接结束可太草了,他搁这找善解他意的另一半?
|
|
22
@ChanKc 让你算个数,你在这儿跟我玩炼丹呢?🐶
|
|
Martin9Jul 3, 2020
23
面试 kpi 罢了
|
|
yhxxJul 3, 2020
24
import { addNum } from '@xx/math'
return addNum(1, 100) |
|
25
这样写没毛病,编译器足够牛逼就会自动给你优化成 5050
|
|
xlogerJul 3, 2020
26
这面试官不太对。面试本质上应该是个发掘面试者能力,判断是不是适合岗位需求的过程。
他遇到了你这样的回答不满意,应该引导你让你想想能不能优化,比如说那如果不用循环你能不能做到等等。他自己表意不明,写完了就说不合适也不说哪不合适,有问题的是他。 |
|
27
@zengming00 为什么呀?我是新手,大佬能讲一下吗?
|
|
28
@lnim 对方就说了句不合适,就走了😂
|
|
ChanKcJul 3, 2020 via Android
29
@xgfan 因为这题的数学表达式是 f(x,y)=(x+y)(y-x+1)/2,如果正好神经网络设计得正好是
ax^2 +by^2+cx+dy+e 的表达 其实还真有可能训练出正确的数学公式… |
|
vigidroidJul 3, 2020
31
因为你面试的时候没戴帽子
|
|
33
这面试官水平很差, 理由大家都说了, 但是楼主也有问题, 遇见奇怪的问题, 不要着急作答, 换个思路想想, 还有面试写代码别这么写, 写个函数封装好, 数据用参加, 答案用返回值, 少用 print 之类的.
|
|
dumbassJul 3, 2020
34
@IsaacYoung #3 宁就是高斯?
|
|
wangkun025Jul 3, 2020
35
不是大佬,觉得你写的没任何问题。
|
|
36
试了下编译器优化, 准备好板凳:
```c int main() { int s = 0; for (int i = 0; i <= 100; i++) { s += i; } return s; } ``` ```sh $ gcc -o main -O3 main.c ``` ```sh $ objdump -d main 00000000000004f0 <main>: 4f0: b8 ba 13 00 00 mov $0x13ba,%eax <----------- 0x13ba == 5050 4f5: c3 retq 4f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 4fd: 00 00 00 ``` 所以我觉得最好的答案是 return 5050, 因为你已经在写代码的时候就做了编译器优化... |
|
37
@coderluan 谢谢你,我会改进的
|
|
38
@vigidroid 在线面试的😂
|
|
oahebkyJul 3, 2020
39
因为你在面试官走的时候,没有摘掉你的假发
|
|
1upJul 3, 2020
40
现在的年轻人不都崇尚这种交流方式么
|
|
alienx717Jul 3, 2020
42
可能是想说时间复杂度吧
|
|
43
你们还是文明了点,隐晦了点。
还是我来说,这面试官有病,不轻。 这种公司,也幸好楼主没面上。 |
|
NoStringJul 3, 2020
44
```java
public static int sum(int n){ return (n + 1) * n /2; } psvm(String args[]){ System.out.println(sum(100)); } ``` |
|
45
面试官有病 需求是要表达出来的 啥都不说那肯定随便写代码了 实现了就行 难道让别人猜你想要啥样的方案吗 大家都很忙的
|
|
0x11901Jul 3, 2020
48
@Mohanson 不是吧老哥……我觉得代码还是楼主那么写比较好,极致优化就应该交给编译器啊,那专门的人干专门的事啊,咱代码写得能看懂就行了,反正都是暗示编译器我要干啥,他怎么实现不关注的(→_→)
|
|
49
你最后直接问他:您看我还有机会吗?
|
|
51
面试就是相亲
双方觉得合适什么都好说 不合适就找个无关紧要的地方挑刺而已 (from + to) * (to-from) / 2 |
|
cmqwanJul 3, 2020 via iPhone
52
这种写法有任何问题吗?你来一个需求我先给你做好。如果你要做成可扩展、多线程、大数据都可以慢慢迭代
|
|
53
@Qseven 人家直接都已读不回了😂
|
|
houskiiJul 3, 2020
54
没看出来有啥毛病。。。。感觉是面试官题目表述不清晰
|
|
lbunderwayJul 3, 2020
55
这么坑,不去也罢
|
|
miniwade514Jul 3, 2020
56
@CismonX 很有可能,就是想看看 API 用的溜不溜。
好慌,我也问过类似的问题,不过会把要求说得清楚一点。 |
|
JensenQiJul 3, 2020
57
众所周知,GCC 是高斯编译器的缩写,所以 GCC 会直接优化成 5050
|
|
more1secJul 3, 2020
58
估计这样给他也会被 diss 2333
sum(range(1,101)) |
|
winglight2016Jul 3, 2020
59
这面试官真奇怪呀。。。又不是不能用. ╮(╯_╰)╭.
就算真不能用也给个说法呀? |
|
wupherJul 3, 2020
60
想开点。
他想是要了你,但是试用期对你各种 diss,不是更可恨? |
|
speculatorAJul 3, 2020
61
直接拒绝过分了,不过这题其实有点意思。在面试的环境下,你的解答方式,一定的意味着你后续对业务逻辑的处理态度。
|
|
xishijtJul 3, 2020
62
对面开多少工资啊,5K 还是 50K?
|
|
speculatorAJul 3, 2020
63
@speculatorA 循环加法一句话带过就好了,面试官肯定知道你会写 for 循环。你非要杠面试官不把题目写清楚不能 for 循环,那面试官也没必要承受你的杠。 面试是要平等,但也得知道这是在面试不是在谈 offer 。
|
|
64
@xishijt 实习岗位来的,不到不到 5K
|
|
wangyzjJul 3, 2020
65
这不就是逗人玩呢吗
|
|
66
@wupher 我当然想得开,只是好奇,想问问各位大佬😄
|
|
zarteJul 3, 2020
67
就算是实际项目中这么写也没问题呀,反正编译器能优化。。。
|
|
wsloongJul 3, 2020
68
面试说到底是展示面试者的能力,而不是面试官。
面试官最好是引导面试者理解自己提出问题的究竟意图,就是我要考你啥 |
|
watzdsJul 3, 2020 via Android
69
这是标准计算机解法,什么等差数列那是考小学数学
|
|
caizs320525Jul 3, 2020
70
@ChanKc 遇事不决深度学习
|
|
72
这种就是傻逼吧,正常点的你只要写的没问题,但不是我想要的答案,肯定会引导你的,比如时间复杂度我希望是多少多少之类的,难道以后去面试还要会读心术咯
|
|
romisanicJul 3, 2020
73
按照以往经验,这个问题虽然面试官问的是 1 到 100 的和,但是想要你设计的应该是个工具类,算法没啥好说的,主要是代码规范方面吧
抽取合适的方法(方法命名,参数命名) 比如提供合适的出入参 使用合适的数据类型 做好边界控制 错误时给出友好的提示 当然以上也是在楼主的经历之后推测出来的 |
|
JasonJooJul 3, 2020
74
首先,可以说面试官缺乏一点引导过程(从描述中看),这点放前面省得被说歪屁股。
其次,对于正常的手撕算法来说,作为被求职者,应该体现 通过沟通交流弄清除 Case -> 对 Case 做一定的解析 -> 从直接到间接提出多个想法和思路 -> 通过交互选择其中之一或多个进行实现 -> 验证运行效果以及是否有[可能的]其它思路(但目前限于条件和信息可能无法实现) 这不仅是面试针对问题点的套路( or 流程),而且在实际工作中做需求也是一模一样的框架,在这个框架中,主要体现的是沟通、分析、比较这几个点。 当然,在具体的这件事中,可以说面试官做到了 60 分,你也做到了 60 分,互相没有去良好地适应罢了 |
|
dolphintwoJul 3, 2020
75
感觉他想让你炫技,你想快速解决问题
|
|
goodboy95Jul 3, 2020
76
我猜那家公司是不是想营造出一种自己业务蒸蒸日上,特别愿意招人的氛围?
因为这种题目,就算不给机会被秒拒,很多人都会觉得是自己的问题,认为当时自己没考虑太多,然后就会感觉“公司实际上是愿意招人的,只是自己水平不够”。这时候公司估计已经轻松刷掉一半人了。 |
|
p1llarJul 3, 2020
77
让你写更优化的方案呗,这题明显是考多线程的。
|
|
78
一道题有 10 中解法,你写了一种,老师给你判错,说不是自己想要的那种??这么 sb 么。。。
|
|
chitandaJul 3, 2020 via iPhone
79
他意思是要 c 语言混乱大赛的那种效果?
|
|
80
@goodboy95 看了各位大佬的评论,我觉得不算是自己的问题,因为对方就直接让我在五分钟内实现出来,换另一家吧,实习岗位都这样😂
|
|
optionalJul 3, 2020
81
@zengming00 做题的公司才是好公司,实际上也是。
|
|
xiaoqiang1369Jul 3, 2020
82
@mengzhuo to - from 要 +1 啊
|
|
codelosterJul 3, 2020
83
@hdbzsgm
当年刚毕业的时候我也遇到了,用了等差数列求和,没想到面试看到我的答题后问:你知道什么叫循环吗? |
|
EhendJul 3, 2020 via Android
84
自己不把需求说清楚,nt 面试官
|
|
mxT52CRuqR6o5Jul 3, 2020 via Android
85
@p1llar 那也该引导一下吧,直接说不合适,评论基本都认为面试官有问题
|
|
bk201Jul 3, 2020
86
我觉得应该是你写死了参数,应该封装个方法。
|
|
xuanbgJul 3, 2020
87
面试又不是猜谜,这个面试官做得不合适。
|
|
88
@codeloster 这么迷的么
|
|
tesorouoJul 3, 2020
89
同意楼上,面试官闲的。至少说清楚要 O(?)
|
|
ipwxJul 3, 2020
90
面试官脑子有病吧。。。。
|
|
freelancherJul 4, 2020
92
题出得有问题,要真想考察能力的话,要出 1+到 1W 吧。如果还是循环累加的话,可能要深入问一下思路。
不过因为是实习岗位。应该是要引导一下新人。总结:面试官也太装逼了。 |
|
KennyMcCormickJul 4, 2020 via iPhone
93
可能是想要 n 种答案,自带优化的那种。
|
|
yolee599Jul 4, 2020
94
System.out.println((100 + 1) * 50);
|
|
tourist2018Jul 4, 2020
95
这面试官就是沙雕 不过 lz 你的写法最好封装成一个函数
|
|
nicebirdJul 4, 2020
96
确实沙雕
|
|
akringJul 4, 2020
97
@IsaacYoung #3 今日最佳
|
|
izzy27Jul 4, 2020
98
谜语人面试官
|
|
bojackJul 4, 2020
99
拿到题目别马上写代码,这个题我感觉是要写出通用的函数啥的,多跟面试官沟通
比如他想要的答案可能是: class MathUtils { public static int sum(int begin, int end, int step = 1) { ... } } 还有各种边界条件等等,如果 overflow 怎么办 |
|
dushixiangJul 4, 2020 via iPhone
100
这种公司不去也罢,去了也是遭罪。
|