hahaandyou001
V2EX  ›  求职

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

  •  1
     
  •   hahaandyou001 · Jul 3, 2020 · 15535 views
    This topic created in 2314 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

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

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

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

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

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


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

    就算真不能用也给个说法呀?
    wupher
    wupher
    Jul 3, 2020
    60
    想开点。

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

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

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

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

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

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

    不过因为是实习岗位。应该是要引导一下新人。总结:面试官也太装逼了。
    KennyMcCormick
    KennyMcCormick
    Jul 4, 2020 via iPhone
    93
    可能是想要 n 种答案,自带优化的那种。
    yolee599
    yolee599
    Jul 4, 2020
    94
    System.out.println((100 + 1) * 50);
    tourist2018
    tourist2018
    Jul 4, 2020
    95
    这面试官就是沙雕 不过 lz 你的写法最好封装成一个函数
    nicebird
    nicebird
    Jul 4, 2020
    96
    确实沙雕
    akring
    akring
    Jul 4, 2020
    97
    @IsaacYoung #3 今日最佳
    izzy27
    izzy27
    Jul 4, 2020
    98
    谜语人面试官
    bojack
    bojack
    Jul 4, 2020
    99
    拿到题目别马上写代码,这个题我感觉是要写出通用的函数啥的,多跟面试官沟通
    比如他想要的答案可能是:
    class MathUtils {
    public static int sum(int begin, int end, int step = 1) { ... }
    }
    还有各种边界条件等等,如果 overflow 怎么办
    dushixiang
    dushixiang
    Jul 4, 2020 via iPhone
    100
    这种公司不去也罢,去了也是遭罪。
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4502 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 164ms · UTC 05:43 · PVG 13:43 · LAX 21:43 · JFK 00:43
    ♥ Do have faith in what you're doing.