现在面试官都那么奇怪的吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hahaandyou001
V2EX    求职

现在面试官都那么奇怪的吗?

  •  1
     
  •   hahaandyou001 2020-07-03 11:43:57 +08:00 13611 次点击
    这是一个创建于 1926 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天面试官在线问代码题,让我用 Java 实现 1 到 100 的和。 我给的代码如下:

     int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } System.out.println(sum); 

    就马上说不合适,各位大佬能说说为什么吗?

    106 条回复    2020-07-06 12:09:15 +08:00
    1  2  
    hdbzsgm
        1
    hdbzsgm  
       2020-07-03 11:46:53 +08:00
    我觉得他想让你利用一下等差数列的性质
    hahaandyou001
        2
    hahaandyou001  
    OP
       2020-07-03 11:48:24 +08:00
    @hdbzsgm 谢谢,我后来也想到,可对方连个机会都不给
    IsaacYoung
        3
    IsaacYoung  
       2020-07-03 11:50:00 +08:00   74
    System.out.println(5050);
    caowentao
        4
    caowentao  
       2020-07-03 11:52:38 +08:00 via iPhone   1
    没有给背景,确实好像在挖坑,不合适
    echo1937
        5
    echo1937  
       2020-07-03 11:52:41 +08:00 via iPhone   13
    他有没有继续问,有没有其他的方法?
    如果不问,问题不在你。
    hahaandyou001
        6
    hahaandyou001  
    OP
       2020-07-03 11:59:45 +08:00 via Android
    @echo1937 没有,还 diss 了我一下,然后说不合适,不录用
    coderraven
        7
    coderraven  
       2020-07-03 12:00:18 +08:00
    假设,他没有催促你快点完成。
    给了你一定时间。

    写完全点
    class Solution {
    public int addToNumber(int number) {
    xxx….
    }
    }
    然后多作几种实现。
    不是有什么 100+1 * 50 这种么。
    自己再简化下。

    然后还能主动和他聊一聊当这个数超出范围后如何处理。
    比如 number=100000000000000000000 的时候。

    你写的这个太应付了。
    随便来个人都能写出来。
    没啥意思。
    over 。
    hahaandyou001
        8
    hahaandyou001  
    OP
       2020-07-03 12:00:22 +08:00 via Android
    @caowentao 还说什么,这能看出来是 Java 代码吗?
    hahaandyou001
        9
    hahaandyou001  
    OP
       2020-07-03 12:00:50 +08:00 via Android
    @coderraven 他说五分钟以内解决
    coderraven
        10
    coderraven  
       2020-07-03 12:03:23 +08:00   1
    emmmmm
    反正我面试的时候,是自己尽可能展现自己的闪光点。
    而不是一直在被面试官考验。。

    你可以按我这个思路去面试。
    祝你顺利。
    hahaandyou001
        11
    hahaandyou001  
    OP
       2020-07-03 12:06:32 +08:00 via Android
    @coderraven 谢谢你,HR 就只让我实现 1 加到 100 的和而已
    lnim
        12
    lnim  
       2020-07-03 12:18:36 +08:00
    可能是想用递归实现? 然后在问能否优化, 在用尾递归?
    CismonX
        13
    CismonX  
       2020-07-03 12:23:33 +08:00   4
    可能是楼上说的等差数列,也可能是期望你给出 IntStream.rangeClosed(1, 100).sum() 的回答[狗头]
    Variazioni
        14
    Variazioni  
       2020-07-03 12:31:33 +08:00
    @CismonX 感谢。。头一次知道有 IntStream 这种东西。。老了老了
    Vegetable
        15
    Vegetable  
       2020-07-03 12:32:05 +08:00
    return 5050
    Vegetable
        16
    Vegetable  
       2020-07-03 12:37:34 +08:00
    说实话,我觉得这题目还是有一点意义的,很多人看到题目就知道结果是 5050,因为这个题目在低年级教育当中是很常见的,可能做过原题。
    无论是等差数列的性质、还是梯形面积的(上底+下底)乘以高除以 2,都是非常常见的知识点。写个循环对方说不合适正常,不过不应该一棍子打死,应该多问两句才是。
    di94sh
        17
    di94sh  
       2020-07-03 12:39:59 +08:00 via iPhone
    还是面少了,多面面就行了,o ( 1 )的算法写成 o ( n )当然不合适,多从复杂度分析方面考虑问题
    zengming00
        18
    zengming00  
       2020-07-03 12:44:10 +08:00
    无论公司有多吸引人,遇到做题直接拒绝
    jackchao7432
        19
    jackchao7432  
       2020-07-03 12:45:37 +08:00
    @zengming00 大厂全被你给拒了,6666
    ChanKc
        20
    ChanKc  
       2020-07-03 12:46:54 +08:00   80
    这题用多层卷积神经网络就可以做出来了
    首先你知道 1 到 2 的和是 3,1 到 3 的和是 6,0 到 1 的和是 1
    由此你可以得到输入和输出的对应关系
    [1,2] -> [3]
    [1,3] -> [6]
    [0,1] -> [1]

    把这些数据作为训练集,然后设计一个合适的神经网络,将数据代进去做训练,得到一个训练好的模型
    然后再输入
    [1,100]
    就可以得到结果
    如果面试官说不对,那就多训练几次,得到几个不同模型,总有个对的
    chanchan
        21
    chanchan  
       2020-07-03 12:51:47 +08:00   5
    直接结束可太草了,他搁这找善解他意的另一半?
    6IbA2bj5ip3tK49j
        22
    6IbA2bj5ip3tK49j  
       2020-07-03 12:53:57 +08:00 via iPhone   24
    @ChanKc 让你算个数,你在这儿跟我玩炼丹呢?
    Martin9
        23
    Martin9  
       2020-07-03 12:55:30 +08:00
    面试 kpi 罢了
    yhxx
        24
    yhxx  
       2020-07-03 12:55:39 +08:00
    import { addNum } from '@xx/math'

    return addNum(1, 100)
    est
        25
    est  
       2020-07-03 13:00:49 +08:00 via Android   4
    这样写没毛病,编译器足够牛逼就会自动给你优化成 5050
    xloger
        26
    xloger  
       2020-07-03 13:12:48 +08:00
    这面试官不太对。面试本质上应该是个发掘面试者能力,判断是不是适合岗位需求的过程。

    他遇到了你这样的回答不满意,应该引导你让你想想能不能优化,比如说那如果不用循环你能不能做到等等。他自己表意不明,写完了就说不合适也不说哪不合适,有问题的是他。
    hahaandyou001
        27
    hahaandyou001  
    OP
       2020-07-03 13:15:42 +08:00
    @zengming00 为什么呀?我是新手,大佬能讲一下吗?
    hahaandyou001
        28
    hahaandyou001  
    OP
       2020-07-03 13:16:21 +08:00
    @lnim 对方就说了句不合适,就走了
    ChanKc
        29
    ChanKc  
       2020-07-03 13:16:48 +08:00 via Android
    @xgfan 因为这题的数学表达式是 f(x,y)=(x+y)(y-x+1)/2,如果正好神经网络设计得正好是
    ax^2 +by^2+cx+dy+e 的表达 其实还真有可能训练出正确的数学公式…
    ChanKc
        30
    ChanKc  
       2020-07-03 13:20:41 +08:00 via Android
    @ChanKc 漏了个 xy 的系数…
    vigidroid
        31
    vigidroid  
       2020-07-03 13:21:25 +08:00
    因为你面试的时候没戴帽子
    cjc2017
        32
    cjc2017  
       2020-07-03 13:24:47 +08:00
    @vigidroid 右脚先进的门
    coderluan
        33
    coderluan  
       2020-07-03 13:32:17 +08:00   1
    这面试官水平很差, 理由大家都说了, 但是楼主也有问题, 遇见奇怪的问题, 不要着急作答, 换个思路想想, 还有面试写代码别这么写, 写个函数封装好, 数据用参加, 答案用返回值, 少用 print 之类的.
    dumbass
        34
    dumbass  
       2020-07-03 13:33:13 +08:00
    @IsaacYoung #3 宁就是高斯?
    wangkun025
        35
    wangkun025  
       2020-07-03 13:37:06 +08:00
    不是大佬,觉得你写的没任何问题。
    Mohanson
        36
    Mohanson  
       2020-07-03 13:47:50 +08:00   10
    试了下编译器优化, 准备好板凳:

    ```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, 因为你已经在写代码的时候就做了编译器优化...
    hahaandyou001
        37
    hahaandyou001  
    OP
       2020-07-03 13:53:25 +08:00 via Android
    @coderluan 谢谢你,我会改进的
    hahaandyou001
        38
    hahaandyou001  
    OP
       2020-07-03 13:53:41 +08:00 via Android
    @vigidroid 在线面试的
    oahebky
        39
    oahebky  
       2020-07-03 14:00:48 +08:00
    因为你在面试官走的时候,没有摘掉你的假发

    1up
        40
    1up  
       2020-07-03 14:06:44 +08:00
    现在的年轻人不都崇尚这种交流方式么
    idealhs
        41
    idealhs  
       2020-07-03 14:11:59 +08:00
    @di94sh return 5050 复杂度 O(0) 极致优化
    alienx717
        42
    alienx717  
       2020-07-03 14:24:34 +08:00
    可能是想说时间复杂度吧
    anteros
        43
    anteros  
       2020-07-03 14:24:45 +08:00   11
    你们还是文明了点,隐晦了点。
    还是我来说,这面试官有病,不轻。
    这种公司,也幸好楼主没面上。
    NoString
        44
    NoString  
       2020-07-03 14:27:43 +08:00
    ```java
    public static int sum(int n){
    return (n + 1) * n /2;
    }

    psvm(String args[]){
    System.out.println(sum(100));
    }
    ```
    azhi2007
        45
    azhi2007  
       2020-07-03 14:30:23 +08:00 via iPhone   1
    面试官有病 需求是要表达出来的 啥都不说那肯定随便写代码了 实现了就行 难道让别人猜你想要啥样的方案吗 大家都很忙的
    0x11901
        46
    0x11901  
       2020-07-03 14:34:19 +08:00
    @est 我 llvm 或者 gcc 都是直接优化为 5050 的,这么写确实没毛病,还很清晰
    est
        47
    est  
       2020-07-03 14:37:38 +08:00
    @0x11901 对。代码可读性比啥都更重要。
    0x11901
        48
    0x11901  
       2020-07-03 14:37:54 +08:00
    @Mohanson 不是吧老哥……我觉得代码还是楼主那么写比较好,极致优化就应该交给编译器啊,那专门的人干专门的事啊,咱代码写得能看懂就行了,反正都是暗示编译器我要干啥,他怎么实现不关注的(→_→)
    Zeuminqi
        49
    Zeuminqi  
       2020-07-03 14:40:37 +08:00   1
    你最后直接问他:您看我还有机会吗?
    0x11901
        50
    0x11901  
       2020-07-03 14:44:42 +08:00
    @est 说实话有些人就喜欢⑧优化,优化了半天浪费了多少时间不说,最后编译出来的性能没准还不如第一版。真当写编译器的那群聪明人不如自己呗。
    mengzhuo
        51
    mengzhuo  
       2020-07-03 14:47:37 +08:00   1
    面试就是相亲
    双方觉得合适什么都好说
    不合适就找个无关紧要的地方挑刺而已


    (from + to) * (to-from) / 2
    cmqwan
        52
    cmqwan  
       2020-07-03 15:03:00 +08:00 via iPhone
    这种写法有任何问题吗?你来一个需求我先给你做好。如果你要做成可扩展、多线程、大数据都可以慢慢迭代
    hahaandyou001
        53
    hahaandyou001  
    OP
       2020-07-03 15:24:47 +08:00 via Android
    @Qseven 人家直接都已读不回了
    houskii
        54
    houskii  
       2020-07-03 15:27:22 +08:00
    没看出来有啥毛病。。。。感觉是面试官题目表述不清晰
    lbunderway
        55
    lbunderway  
       2020-07-03 15:30:50 +08:00
    这么坑,不去也罢
    miniwade514
        56
    miniwade514   2020-07-03 15:39:36 +08:00
    @CismonX 很有可能,就是想看看 API 用的溜不溜。
    好慌,我也问过类似的问题,不过会把要求说得清楚一点。
    suiterchik
        57
    suiterchik  
       2020-07-03 15:40:31 +08:00
    众所周知,GCC 是高斯编译器的缩写,所以 GCC 会直接优化成 5050
    more1sec
        58
    more1sec  
       2020-07-03 15:50:10 +08:00
    估计这样给他也会被 diss 2333
    sum(range(1,101))
    winglight2016
        59
    winglight2016  
       2020-07-03 15:57:58 +08:00
    这面试官真奇怪呀。。。又不是不能用. (_).

    就算真不能用也给个说法呀?
    wupher
        60
    wupher  
       2020-07-03 15:59:35 +08:00
    想开点。

    他想是要了你,但是试用期对你各种 diss,不是更可恨?
    speculatorA
        61
    speculatorA  
       2020-07-03 16:06:36 +08:00
    直接拒绝过分了,不过这题其实有点意思。在面试的环境下,你的解答方式,一定的意味着你后续对业务逻辑的处理态度。
    xishijt
        62
    xishijt  
       2020-07-03 16:10:36 +08:00
    对面开多少工资啊,5K 还是 50K?
    speculatorA
        63
    speculatorA  
       2020-07-03 16:11:51 +08:00
    @speculatorA 循环加法一句话带过就好了,面试官肯定知道你会写 for 循环。你非要杠面试官不把题目写清楚不能 for 循环,那面试官也没必要承受你的杠。 面试是要平等,但也得知道这是在面试不是在谈 offer 。
    hahaandyou001
        64
    hahaandyou001  
    OP
       2020-07-03 16:20:51 +08:00
    @xishijt 实习岗位来的,不到不到 5K
    wangyzj
        65
    wangyzj  
       2020-07-03 16:21:41 +08:00
    这不就是逗人玩呢吗
    hahaandyou001
        66
    hahaandyou001  
    OP
       2020-07-03 16:21:54 +08:00
    @wupher 我当然想得开,只是好奇,想问问各位大佬
    zarte
        67
    zarte  
       2020-07-03 16:22:00 +08:00
    就算是实际项目中这么写也没问题呀,反正编译器能优化。。。
    wsloong
        68
    wsloong  
       2020-07-03 16:42:57 +08:00
    面试说到底是展示面试者的能力,而不是面试官。
    面试官最好是引导面试者理解自己提出问题的究竟意图,就是我要考你啥
    watzds
        69
    watzds  
       2020-07-03 16:46:00 +08:00 via Android
    这是标准计算机解法,什么等差数列那是考小学数学
    caizs320525
        70
    caizs320525  
       2020-07-03 16:46:46 +08:00
    @ChanKc 遇事不决深度学习
    watzds
        71
    watzds  
       2020-07-03 16:46:57 +08:00 via Android
    @zarte 有这优化?不信
    gadsavesme
        72
    gadsavesme  
       2020-07-03 16:55:04 +08:00   1
    这种就是傻逼吧,正常点的你只要写的没问题,但不是我想要的答案,肯定会引导你的,比如时间复杂度我希望是多少多少之类的,难道以后去面试还要会读心术咯
    romisanic
        73
    romisanic  
       2020-07-03 17:05:33 +08:00
    按照以往经验,这个问题虽然面试官问的是 1 到 100 的和,但是想要你设计的应该是个工具类,算法没啥好说的,主要是代码规范方面吧
    抽取合适的方法(方法命名,参数命名)
    比如提供合适的出入参
    使用合适的数据类型
    做好边界控制
    错误时给出友好的提示

    当然以上也是在楼主的经历之后推测出来的
    JasonJoo
        74
    JasonJoo  
       2020-07-03 17:12:51 +08:00
    首先,可以说面试官缺乏一点引导过程(从描述中看),这点放前面省得被说歪屁股。

    其次,对于正常的手撕算法来说,作为被求职者,应该体现

    通过沟通交流弄清除 Case -> 对 Case 做一定的解析 -> 从直接到间接提出多个想法和思路 -> 通过交互选择其中之一或多个进行实现 -> 验证运行效果以及是否有[可能的]其它思路(但目前限于条件和信息可能无法实现)

    这不仅是面试针对问题点的套路( or 流程),而且在实际工作中做需求也是一模一样的框架,在这个框架中,主要体现的是沟通、分析、比较这几个点。

    当然,在具体的这件事中,可以说面试官做到了 60 分,你也做到了 60 分,互相没有去良好地适应罢了
    dolphintwo
        75
    dolphintwo  
       2020-07-03 17:38:21 +08:00
    感觉他想让你炫技,你想快速解决问题
    goodboy95
        76
    goodboy95  
       2020-07-03 18:00:44 +08:00
    我猜那家公司是不是想营造出一种自己业务蒸蒸日上,特别愿意招人的氛围?
    因为这种题目,就算不给机会被秒拒,很多人都会觉得是自己的问题,认为当时自己没考虑太多,然后就会感觉“公司实际上是愿意招人的,只是自己水平不够”。这时候公司估计已经轻松刷掉一半人了。
    p1llar
        77
    p1llar  
       2020-07-03 18:04:59 +08:00
    让你写更优化的方案呗,这题明显是考多线程的。
    chenyu0532
        78
    chenyu0532  
       2020-07-03 18:08:18 +08:00   1
    一道题有 10 中解法,你写了一种,老师给你判错,说不是自己想要的那种??这么 sb 么。。。
    chitanda
        79
    chitanda  
       2020-07-03 18:10:52 +08:00 via iPhone
    他意思是要 c 语言混乱大赛的那种效果?
    hahaandyou001
        80
    hahaandyou001  
    OP
       2020-07-03 18:14:56 +08:00 via Android
    @goodboy95 看了各位大佬的评论,我觉得不算是自己的问题,因为对方就直接让我在五分钟内实现出来,换另一家吧,实习岗位都这样
    optional
        81
    optional  
       2020-07-03 18:20:48 +08:00
    @zengming00 做题的公司才是好公司,实际上也是。
    xiaoqiang1369
        82
    xiaoqiang1369  
       2020-07-03 18:24:27 +08:00
    @mengzhuo to - from 要 +1 啊
    codeloster
        83
    codeloster  
       2020-07-03 18:26:34 +08:00
    @hdbzsgm
    当年刚毕业的时候我也遇到了,用了等差数列求和,没想到面试看到我的答题后问:你知道什么叫循环吗?
    Ehend
        84
    Ehend  
       2020-07-03 18:29:42 +08:00 via Android
    自己不把需求说清楚,nt 面试官
    mxT52CRuqR6o5
        85
    mxT52CRuqR6o5  
       2020-07-03 18:30:53 +08:00 via Android
    @p1llar 那也该引导一下吧,直接说不合适,评论基本都认为面试官有问题
    bk201
        86
    bk201  
       2020-07-03 18:57:38 +08:00
    我觉得应该是你写死了参数,应该封装个方法。
    xuanbg
        87
    xuanbg  
       2020-07-03 19:09:41 +08:00
    面试又不是猜谜,这个面试官做得不合适。
    hahaandyou001
        88
    hahaandyou001  
    OP
       2020-07-03 20:02:09 +08:00
    @codeloster 这么迷的么
    tesorouo
        89
    tesorouo  
       2020-07-03 20:07:59 +08:00
    同意楼上,面试官闲的。至少说清楚要 O(?)
    ipwx
        90
    ipwx  
       2020-07-03 20:10:23 +08:00
    面试官脑子有病吧。。。。
    anUglyDog
        91
    anUglyDog  
       2020-07-03 22:01:22 +08:00
    @lnim 尾递归优化是跨语言通用的?浏览器也不是全支持吧
    freelancher
        92
    freelancher  
       2020-07-04 00:02:12 +08:00
    题出得有问题,要真想考察能力的话,要出 1+到 1W 吧。如果还是循环累加的话,可能要深入问一下思路。

    不过因为是实习岗位。应该是要引导一下新人。总结:面试官也太装逼了。
    KennyMcCormick
        93
    KennyMcCormick  
       2020-07-04 00:13:59 +08:00 via iPhone
    可能是想要 n 种答案,自带优化的那种。
    yolee599
        94
    yolee599  
       2020-07-04 00:18:30 +08:00
    System.out.println((100 + 1) * 50);
    tourist2018
        95
    tourist2018  
       2020-07-04 09:34:55 +08:00
    这面试官就是沙雕 不过 lz 你的写法最好封装成一个函数
    nicebird
        96
    nicebird  
       2020-07-04 09:58:26 +08:00
    确实沙雕
    akring
        97
    akring  
       2020-07-04 10:35:32 +08:00
    @IsaacYoung #3 今日最佳
    izzy27
        98
    izzy27  
       2020-07-04 11:26:03 +08:00
    谜语人面试官
    bojack
        99
    bojack  
       2020-07-04 12:09:00 +08:00
    拿到题目别马上写代码,这个题我感觉是要写出通用的函数啥的,多跟面试官沟通
    比如他想要的答案可能是:
    class MathUtils {
    public static int sum(int begin, int end, int step = 1) { ... }
    }
    还有各种边界条件等等,如果 overflow 怎么办
    FreeEx
        100
    FreeEx  
       2020-07-04 12:30:21 +08:00 via iPhone
    这种公司不去也罢,去了也是遭罪。
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     984 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 23:19 PVG 07:19 LAX 16:19 JFK 19:19
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86