现在面试官都那么奇怪的吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
hahaandyou001

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

  •  1
     
  •   hahaandyou001 Jul 3, 2020 14383 views
    This topic created in 2124 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
        1
    hdbzsgm  
       Jul 3, 2020
    我觉得他想让你利用一下等差数列的性质
    hahaandyou001
        2
    hahaandyou001  
    OP
       Jul 3, 2020
    @hdbzsgm 谢谢,我后来也想到,可对方连个机会都不给
    IsaacYoung
        3
    IsaacYoung  
       Jul 3, 2020   74
    System.out.println(5050);
    caowentao
        4
    caowentao  
       Jul 3, 2020 via iPhone   1
    没有给背景,确实好像在挖坑,不合适
    echo1937
        5
    echo1937  
       Jul 3, 2020 via iPhone   13
    他有没有继续问,有没有其他的方法?
    如果不问,问题不在你。
    hahaandyou001
        6
    hahaandyou001  
    OP
       Jul 3, 2020 via Android
    @echo1937 没有,还 diss 了我一下,然后说不合适,不录用
    coderraven
        7
    coderraven  
       Jul 3, 2020
    假设,他没有催促你快点完成。
    给了你一定时间。

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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