V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hahaandyou001
V2EX  ›  求职

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

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

    今天面试官在线问代码题,让我用 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 之类的.
    bojackhorseman
        34
    bojackhorseman  
       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
    可能是想说时间复杂度吧
    php01
        43
    php01  
       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 不是吧老哥……我觉得代码还是楼主那么写比较好,极致优化就应该交给编译器啊,那专门的人干专门的事啊,咱代码写得能看懂就行了,反正都是暗示编译器我要干啥,他怎么实现不关注的(→_→)
    Qseven
        49
    Qseven  
       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   ·   实用小工具   ·   1000 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:28 · PVG 02:28 · LAX 10:28 · JFK 13:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.