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

现在面试都不敢问任何和算法有关的问题了,还容易得罪人。

  •  1
     
  •   jadetang · 2015-07-19 16:15:00 +08:00 · 16963 次点击
    这是一个创建于 3420 天前的主题,其中的信息可能已经有所发展或是发生改变。
    和我的组长一起面试。第一次面试一个工作两年的人,我问,你能写个函数求第N项斐波拉契数列值吗?最好有代码。我刚说完,我组长说,不用写代码了,就说一下思路吧。
    第二次,一个大三的实习生来面,我看他的简历上写了学院ACM协会干事,多次获得校级ACM的奖项。于是我说你能用java写个atoi吗?面试者面露惊讶的表情“现在写代码吗?”我吸取上次的教训,说:“要不你说一下思路也行,就是给一个字符串,转换成整数。”然后那个面试生就在支支吾吾,我就不断的提示,只要求转换成整数,有小数点是非法的,要支持正负号。然后我组长说:“你直接确定一下,你的目标是什么,你要达到什么效果。”
    哎。
    第 1 条附言  ·  2015-07-20 08:58:07 +08:00
    没想到回复的人这么多,我就多说几句吧。其实,我这里的说的得罪人,不是说指的是得罪面试者,而是说,感觉得罪了我们同事。因为我们的面试其实主要还是问一些基础知识,而不是算法什么的。只是我平时偶尔翻翻算法的书,所以面试的时候,会问一些基础的数据结构和算法之类的题目。难度也就是atoi之类的。

    其实我本意是想说的是,如果和同事一起面试,同事问了面试者一个问题,一般有两种情况。
    1. 这个问题我也不知道,那么我不会插嘴,我会听着,也不会打断另外一个同事的交流。

    2. 这个问题我知道,但是我觉得我同事问的方式或者描述问题的方式有问题,给面试者造成困扰。那么我有两个选择,一是观察面试者能否和同事有效的交流,把问题搞清楚。这种分析问题,确定需求的能力,其实在工作中也很重要的。二是在面试者卡死的时候,如果同事没有跟进,我会给予提示(因为我不知道同事问题的问题是故意说这么模糊的还是他也没说明白)。
    举个例子,我同事喜欢问一个问题 serverlet是否是线程安全的?其实这个问题就是一个不清楚的问题,如果面试者能够说清楚:serverlet本身会在多线程环境下被调用,是否线程安全取决于它的实现,那么我会给满分。
    如果面试者卡住了,而我同事又没有跟进的时候,我会就会换一个方式说:“比如我现在要实现一个serverlet,没被访问一次,一个计数器就加1,你会怎么实现这个计数器的功能?实现的时候,有什么要注意的地方。”

    总之,当同事说: 字符串转整数,你直接说“你明确一下你到底想做什么“,在面试这种场合下是有点不合适的。
    115 条回复    2015-07-21 09:03:13 +08:00
    1  2  
    imn1
        1
    imn1  
       2015-07-19 16:22:47 +08:00
    功高盖主
    em70
        2
    em70  
       2015-07-19 16:23:33 +08:00 via Android
    这些问题对面试来说太大了,笔试合适。面试可以多跟他聊聊他做过的东西,有什么独特见解,基本就能了解一个人的水平了。
    mthli
        3
    mthli  
       2015-07-19 16:26:08 +08:00
    这些算法问题不难吧...
    cxshun
        4
    cxshun  
       2015-07-19 16:28:01 +08:00
    其实感觉楼主你的组长的问题很值得你考虑一下,你让他写这些貌似体现不了工作水平啊,毕竟工作中不大可能要这样去写atoi函数啥的,斐波拉契我都忘记是啥来的,但要写还是可以写出来的,只是这对工作有什么帮助吗?不见得有多大的帮助吧。我觉得你组长的话想要表达的就是这样的意思,个人理解哈。

    你可以拿一些工作中的需求,让他去做,感觉会更合理点。
    zhjits
        5
    zhjits  
       2015-07-19 16:28:16 +08:00
    这也太简单了吧……
    wy315700
        6
    wy315700  
       2015-07-19 16:28:21 +08:00   ❤️ 1
    @em70
    面试考这个还是挺适合的,,,面试的时候更容易看出一个人的熟练程度。

    好多老师和我说过,学生在台上答辩,他们一眼就能看出来东西是不是你自己做的,只是有时候不好意思来拆穿你。

    @jadetang
    楼主的问题不在于面试者,而在于组长,组长觉得你问的问题毫无意义。
    jadetang
        7
    jadetang  
    OP
       2015-07-19 16:29:24 +08:00
    @em70 不敢问啊,第二个实习生,简历上说做过一个请假系统,简历第一条是精通java和j2ee
    em70
        8
    em70  
       2015-07-19 16:34:18 +08:00
    @wy315700 每个人认知是有局限的,计算机技术分支那么多,难道我随便说一个东西,你都能非常了解吗,面试的本质是去了解一个人,不是去考核一个人. 如果这份工作对某一类的知识要求比较高,应该加入笔试环节.
    jadetang
        9
    jadetang  
    OP
       2015-07-19 16:36:11 +08:00
    @cxshun 斐波拉契数列,一般人会给出一个递归的解法,那么就会有
    1. 重复计算的问题。
    2. 递归过深,stack memory 溢出的问题。
    如果,面试者说,可以用hashmap之类的数据结构缓存中间计算结果,我可能会问,如果这个函数需要在多线程环境下调用的话怎么样。

    atoi的问题,考察的更是面试定位问题的能力,应该通过沟通,明确输入值的范围,以及进一步明确我的需求,例如,如果字符串格式错误要求怎么处理,溢出了是返回 Int.Max_value 还是报错。

    实习生,没工作经验,我能问什么呢。
    wy315700
        10
    wy315700  
       2015-07-19 16:37:33 +08:00
    @em70

    看的是你的熟练程度,而不是答案本身,比如问你一个问题,你思考一分钟作答和你不假思索就能作答,给人的感觉前者就是你很生疏,后者就是你很熟练。

    以前记得TX有一道变态的面试题,30秒写一个二叉树搜索。。。
    jadetang
        11
    jadetang  
    OP
       2015-07-19 16:37:35 +08:00
    @em70 第二个面试,简历上写了,学院ACM协会干事,多次获得校级ACM的奖项。 我问个atoi,感觉很符合他的履历啊。
    em70
        12
    em70  
       2015-07-19 16:39:58 +08:00
    @jadetang

    精通JAVA你就跟他聊聊JAVA嘛,让他说他用JAVA做过什么,用了什么技术,有什么难点,是怎么解决的,真要是精通的人,问到他擅长的地方,应该滔滔不绝,两眼放光.咱就是要知道的是他擅长什么,然后判断他擅长的东西是否适合我们团队,而不是要知道他不会什么.

    我觉得你们组长说得对,你自己都不知道自己要招什么样的人.
    jadetang
        13
    jadetang  
    OP
       2015-07-19 16:42:33 +08:00
    @em70 这个点是在说,一个大三的学生,做了一个请假系统,然后就精通java了。
    wy315700
        14
    wy315700  
       2015-07-19 16:42:48 +08:00
    @em70
    这么问其实容易出问题。。。

    曾经我同学公司面试了一个人,说是内核专家,精通内核,然后讲起来是滔滔不绝,正好他们公司缺少懂内核的,然后就收了他。

    然后,然后,收了以后发现,他就会make,,,,其他一窍不通。

    还是得问一些细节技术问题。
    em70
        15
    em70  
       2015-07-19 16:44:52 +08:00   ❤️ 1
    @jadetang 你就让他去说自己玩过什么算法,干嘛要给他出题去限制他呢,反而很多真实情况没了解到. 切记,面试不是考核,不是用我们懂的东西去考别人. 而是充分了解这个人,判断他的长项在哪里,也许你擅长的东西,他不擅长,你就判断他不行,那这不是一次成功的面试.
    nomemo
        16
    nomemo  
       2015-07-19 16:46:13 +08:00
    反正我只有一道必问题,字符串是否是合法的ip地址
    em70
        17
    em70  
       2015-07-19 16:50:29 +08:00
    @wy315700
    @jadetang

    我一般是先看人的作品,针对作品提问,作品是不是作假的,我一问就能问出来,没作品我就随便聊聊,但基本就pass了,简历主要用来看联系方式.
    icylord
        18
    icylord  
       2015-07-19 16:51:56 +08:00
    这不都是很基本的问题么。
    caixiexin
        19
    caixiexin  
       2015-07-19 16:52:56 +08:00
    学校出来的没项目经验的话,考算法题蛮正常的,不过放在面试里会不会浪费时间吗?
    也许人家以为是笔试才会有的,昨晚没复习XD
    跟着老大面试过几次,基本上最后都是绕到对方熟悉的领域,这时候有些人到就会说得眉飞色舞,然后整个气氛会很和谐(前提是他们说的我们也懂- -)。有的时候从这个方面能了解到他的学习能力,独立思考的能力,自己面对难题的态度,为人处世等等,也算是个加分项。

    ps:当年校招我也好怕考算法题和逻辑题,就算学校学过,一紧张也是会脑袋空白- -
    wy315700
        20
    wy315700  
       2015-07-19 16:53:01 +08:00
    @em70

    我就是这个意思。根据一个人的反应来看简历是否属实。
    而且,搞ACM的,atoi是基本功,最简单的题,如果这还不会的话很容易让人怀疑他的简历的。
    dangge
        21
    dangge  
       2015-07-19 16:53:27 +08:00 via Android
    作为某搞过ACM的蒟弱,我表示校级ACM的奖基本上都水的不行……
    八道题能做出来三道就是奖,里面还有两道水题…
    当然,杭电那种的校级ACM应该不差……不过这种情况应该并不多见……
    jadetang
        22
    jadetang  
    OP
       2015-07-19 16:58:27 +08:00
    @dangge 我没搞过acm,不过哪些题目是ACM肯定会的啊?atoi太难了吗? reserve a linkedlist?
    Actrace
        23
    Actrace  
       2015-07-19 16:59:08 +08:00
    所以说,如果你要招一个一线码农.需要考察细节,那么请在笔试环节进行,然后加上打分,这样大家都不浪费时间.
    但是你要招高级程序员,要招技术管理人员,那么请找会坎的,不会坎的技术管理是没有一个全局观的,不论是在管理上,还是在技术上.
    就人脑而言,学的东西多了,大部分只是基本上都只是一些抽象记忆的索引而已,然后高级程序员的不同之处就在于,人家起码有索引.
    建议搞清楚以上两点再去招聘.
    caixiexin
        24
    caixiexin  
       2015-07-19 16:59:32 +08:00
    还有,如果是跟老大一起面试的话,我也不敢在旁边多嘴2333,我发现我也会追着细节问,但是老大就点到即止。
    主要还是看你跟组长平常关系怎么样- -,如果玩得好的话,面试完后找他交流下心得咯,如果不是很铁的话,还是慎言(职场关系好可怕- -||)。
    xiaocong1
        25
    xiaocong1  
       2015-07-19 17:01:46 +08:00 via Android
    其实问得太细,特别是口述的话。对一些不常用的东西,容易答不全。但是不代表那个人就不会
    cxshun
        26
    cxshun  
       2015-07-19 17:05:27 +08:00
    @jadetang 重新看了一下兄弟你的问题,先不纠结是否应该问这些问题,但你引导了,还没有思路,或者说一点思路都没有,那这个面试者能力真的不大行。
    确实这些问题如果往细了问可以引出很多东西。
    实习生这块确实不好把握,一般就他的项目让他说说在项目中遇到什么问题,学习到什么。
    Keita1314
        27
    Keita1314  
       2015-07-19 17:06:18 +08:00
    楼主是魅族的吧,校招面试写代码再正常不过了,去年百度,腾讯,网易,美团等公司校招面试都经历过现场代码的,相反魅族就没有,面试官是一个中年大叔,问了许多Java的基础问题以及一些JVM的问题,还有数据库索引,后来发了offer,只有9K,还要先去实习,就拒了,不过面试官水平还是不错的。
    jadetang
        28
    jadetang  
    OP
       2015-07-19 17:07:57 +08:00
    @Keita1314 我不是魅族的,9k是研究生还是本科生的价格?
    Keita1314
        29
    Keita1314  
       2015-07-19 17:10:41 +08:00
    @jadetang 研究生。
    jadetang
        30
    jadetang  
    OP
       2015-07-19 17:11:33 +08:00
    @Keita1314 研究生有点少了吧,而且珠海公司也少。
    mengjue
        31
    mengjue  
       2015-07-19 18:20:31 +08:00
    算法是一个程序员的基本功,如果给了提示,还是毫无头绪,那说明简历是假的。其实面试就问问基本问题,可以筛掉好多很烂的喜欢吹牛的末流程序员。
    letv
        32
    letv  
       2015-07-19 18:50:35 +08:00
    这题目不难吧?感觉要是只说思路的话,完全没问题。写代码虽然难些,但也不是做不到啊。
    rming
        33
    rming  
       2015-07-19 18:58:46 +08:00
    比起提问题,我可能更希望听听面试者喜欢什么,擅长什么
    jadetang
        34
    jadetang  
    OP
       2015-07-19 19:23:09 +08:00 via Android
    @rming 他是acm%干事,算法肯定擅长
    skydiver
        35
    skydiver  
       2015-07-19 19:35:36 +08:00
    @jadetang reserve => reverse 23333
    microget
        36
    microget  
       2015-07-19 19:45:48 +08:00
    lz没有介绍下面试的岗位简介,招人就是招合适的,不是任何开发岗位都需要算法。
    k9982874
        37
    k9982874  
       2015-07-19 20:09:44 +08:00 via iPhone
    我想知道撸主平时的主要工作是什么,有时间关注这些劳什子东西
    jadetang
        38
    jadetang  
    OP
       2015-07-19 20:21:29 +08:00 via Android
    @k9982874 数据工程师
    rming
        39
    rming  
       2015-07-19 20:28:59 +08:00
    @jadetang 😅如果他擅长打dota,能和团队里的人一起玩,我觉得会是加分项的,哈哈 打个比方
    mahone3297
        40
    mahone3297  
       2015-07-19 20:45:37 +08:00   ❤️ 1
    我觉得lz问的一点问题都没有,问题也都不是很难。。。
    有人说,可能连斐波拉契数列是什么也不知道。这有关系吗?一点关系都没有,这才正好!然后,面试关可以告诉你,斐波拉契数列的定义,这个定义也很好懂,不难。然后,考你解决问题的思路。。。
    第二个,acm,atoi不会。。。能说什么呢?lz已经根据那人的特征(acm),问那个人问题了。回答不出来,还能说什么呢?
    fgwww
        41
    fgwww  
       2015-07-19 21:14:07 +08:00 via iPad
    面试是一件非常难的事情,连韦尔奇都不过认为自己选对人的概率才80%。
    bigboyq
        42
    bigboyq  
       2015-07-19 21:34:54 +08:00 via iPad
    我忍不住上来吐槽,楼主是在拿一个框框框人,框子套下去,套的进去就是合适的,套不进去就不合适。
    我觉得面试是判断别人简历真实性的机会(人品和性格),深化下去就是根据简历内容和言谈判断培养性(有些人简历很烂,口才也很烂,但其实很有学习能力和吃苦,原因就是被之前的人带傻了,以为程序员就是要背N种算法之类。。。),然后面试可以给笔试做捡漏(比如一个MySQL专家做oracle的题目就很吃亏,但是上手会很快,笔试题目又不可能水平那么高)
    忍不住吐槽,不好意思
    junnplus
        43
    junnplus  
       2015-07-19 21:40:19 +08:00 via Android
    我想说弱校的校级acm就是个水
    breeswish
        44
    breeswish  
       2015-07-19 21:57:17 +08:00
    并不觉得楼主问的问题有什么问题…
    rwalle
        45
    rwalle  
       2015-07-19 22:01:08 +08:00
    楼主说的不都是再基础不过的题目吗
    loryyang
        46
    loryyang  
       2015-07-19 22:39:00 +08:00
    写不了代码有diao用?会说会扯然并卵
    架构师等除外
    snnn
        47
    snnn  
       2015-07-19 22:56:41 +08:00
    @junnplus Agree!
    wh1100717
        48
    wh1100717  
       2015-07-19 23:06:05 +08:00
    所以工作三四年的面试前还是需要刷一下leetocde呗?(虽然我就是这么干的...) 不过答上来的就真的优秀了吗? 这个可能需要思考一下。 面试不同level的人可能应该有不同的侧重点吧... 算了.. 继续刷题去了...
    lincanbin
        49
    lincanbin  
       2015-07-19 23:10:12 +08:00
    斐波那契数列当然是写通项公式,我都会背了。

    你要招什么人,你让他拿出作品就是了。
    br00k
        50
    br00k  
       2015-07-19 23:13:21 +08:00
    说解题思路比较好,手写代码我表示经常短路。
    owlsec
        51
    owlsec  
       2015-07-19 23:24:44 +08:00
    你们组长有问题吧。。。这些第一题斐波纳挈应该会,第二个如果写上自己参加ACM这些东西应该手到擒来啊。。。特别连讲思路都不会。。。
    loveuqian
        52
    loveuqian  
       2015-07-19 23:29:48 +08:00
    我也不会写 atoi
    而且还百度了一下看别人写的实现。。也看不明白。。。
    Andiry
        53
    Andiry  
       2015-07-19 23:38:04 +08:00 via Android
    这么简单的题都不能算是算法题了,答不上来只能说明水平稀烂
    messyidea
        54
    messyidea  
       2015-07-19 23:39:01 +08:00
    斐波那契可以用矩阵加快速幂,atoi应该也简单的。。我这种基本没获过什么奖的菜鸟都能答出来。。
    bigcoon
        55
    bigcoon  
       2015-07-19 23:50:39 +08:00
    我特么这几年白混了,我连acm是啥都不知道。。
    从人生的角度来说楼上说的都有道理,没有是非之分,因为大家的角度不同,
    LZ可能想找一个基础知识扎实一点的人,这没错啊,有的人想找一位解决问题能力的人,这也没错,
    这只是需求不一样罢了,所以LZ不用纠结了,不符合你要求的人不要也罢,主要是你想找的人是你们公司或者项目需要的人么?
    rayyang88
        56
    rayyang88  
       2015-07-20 00:53:21 +08:00
    斐波那契数列也要考虑这么多东西啊。。。楼主面试我的话我肯定跪了= =
    chengzhoukun
        57
    chengzhoukun  
       2015-07-20 01:06:29 +08:00
    也在校acm队里打过酱油,但是没参加过省级、地区级比赛,我都不好意思写到简历上
    hitigon
        58
    hitigon  
       2015-07-20 01:22:18 +08:00
    你组长好烂...
    qige023
        59
    qige023  
       2015-07-20 01:40:31 +08:00
    楼上都说的很好,我补充一点的。相对于算法而言,工作久了,越觉得一个人的责任心,好奇心,学习能力和灵活性比这些定性的算法要求要有用的多。要知道,现在计算机来说性能基本是过剩的,过早优化也是恶魔,我们需要的是能快速理解需求的基础上快速实现,对产品快速迭代。

    工作两年应该多问点项目,不要搞斐波那契了。虽然不难,但真的不觉得对于实际项目而言,有什么卵用。。。回到楼主那个斐波那契数列的二三问,说什么鬼哈希表,多线程、甚至多进程调用的,实际环境里不就一个redis就能搞定了,唉。。。
    zonghua
        60
    zonghua  
       2015-07-20 02:10:15 +08:00
    @qige023 但是发展需求自行研发的内存数据库系统呢?需不需要算法?不过刷那些算法题来所谓算法的也是无能为力吧。
    Kabie
        61
    Kabie  
       2015-07-20 02:26:50 +08:00
    每次讨论面试题总有人跳出来说什么算法面试没用。。。

    我觉得面试要你手写红黑树肯定过分了......但是就一个斐波那契……一个atoi也叫算法吗?。。。

    一个十行以内的函数都写不出。。。还能指望什么工作能力。。。
    msg7086
        62
    msg7086  
       2015-07-20 03:24:02 +08:00
    一个连斐波那契数列都写不出的人竟然还可以胜任软件开发这样的工作岗位?
    楼上觉得这么问不妥的同学们你们到底是在什么样的环境下工作的?
    还是说我们的应届生已经不堪到要放低标准到这个程度才行了?
    msg7086
        63
    msg7086  
       2015-07-20 03:27:54 +08:00
    做个对比。我这边排名100名开外的三流大学,本科毕业生最起码的要求是能够编写Linux上的USB内核驱动(操作系统课,必修),能够手算常用算法的复杂度(算法课,必修),能够在C下手写变长数组、简单的树和堆栈队列(数据结构课,大一必修)。

    这样学完出来的水平不一定能找到很好的工作,必须要特别优秀的才行。
    shenyi26
        64
    shenyi26  
       2015-07-20 03:34:13 +08:00
    总比拿会不会翻墙来面试人的傻逼高端
    Andiry
        65
    Andiry  
       2015-07-20 04:25:13 +08:00
    @msg7086 为什么OS的作业是写USB驱动?写个调度器或者内存分配器都比驱动这种依葫芦画瓢,毫无技术含量的东西有意思得多了。
    chinajik
        66
    chinajik  
       2015-07-20 04:32:28 +08:00
    不搞竞赛的.. 我觉得这些算法真的扯得比较远..
    我是有幸初/高中参加过 NOIP 的..
    回去见原来带队的老师, 他说现在校队都只从理科实验班里面选了..
    别为难这些学生了, 很多都是兴趣或者行业前景来就业的, 放他们条生路吧..
    不会工作中慢慢磨练就好了..
    他要是要1w 2w 的月薪那这个水平当然要有的..
    你要是几 k 问问能不能干活, 三观是否端正就好..
    chinajik
        67
    chinajik  
       2015-07-20 04:44:31 +08:00
    @jadetang

    跟你说个实例,我们互联网公司, 校招回母校的招了个 ACM 学生, 大学用的 c+
    公司第一语言是 java教他, 搞个文件上传搞不定说看 java 不爽巴拉巴拉..
    算法真的不 care.. 一个公司如果一月千万进账真不缺这种人.. 怕的就是眼高手低的.
    现在很多公司拼业务的, 你硬要这种算法去拼, 真的要搞死.
    楼主是确实可能不知道要招什么样的人, 你问的内容决定招进来的干啥, 做业务的自然不需要拼算法, 能前后端都写最好,
    如果是做偏运维就多懂点 linux,
    写中间件开发那就算法要熟.

    我自己是写业务的..对接个借口, 真的那点算法复杂度真的没多想, 跑通就不错了...大量的都是负载监控脚本
    chinajik
        68
    chinajik  
       2015-07-20 04:49:39 +08:00
    中国劳动力廉价的很..
    我们那边, 那种大卖场里面卖衣服的销售月薪都是6k 一个月..
    有时候看一些应届生几k 也是干得津津有味..
    态度只要端正, 需要的真就是个机会..
    以后的年轻人必定比我们更加牛逼, 现在已经很多初中都能写网站的.
    有些时候冲劲一来了, 挡都挡不住..
    能做事,好相处,多些包容和机会,不要去打击他们.
    这个行业才能兴荣..
    chai2010
        69
    chai2010  
       2015-07-20 05:22:45 +08:00
    @jadetang 可以尝试计算下 第 1000 项 Fibonacci 是多少. 最好纯 c 语言手写代码
    msg7086
        70
    msg7086  
       2015-07-20 06:08:42 +08:00 via Android
    @Andiry 你说的这些都是课后作业啊。又不是没做过…
    jadetang
        71
    jadetang  
    OP
       2015-07-20 08:40:35 +08:00
    @bigboyq 我忍不住上来吐槽,楼主是在拿一个框框框人,框子套下去,套的进去就是合适的,套不进去就不合适。
    ----- 面试不就是这样吗,我拿职位要求这个框子框人,有什么问题?

    我觉得面试是判断别人简历真实性的机会(人品和性格),
    ----- 他说他搞过ACM,还得过奖,atoi类似于acm中的hello world的水平,他答的不好,我自然怀疑他简历有夸大的成分,这也没什么问题吧?
    exch4nge
        72
    exch4nge  
       2015-07-20 08:58:55 +08:00
    我觉得楼主问的并没有什么不妥,都是些基本的题目,斐波那契那题用递归的话,没几行就能写出来,搞ACM的atoi都不会那就真水了。

    你跟组长好像欠缺沟通,你俩共同面试的话,至少得制定个大概分工,确定招人的水平,以及大概的题目难度之类的。
    smithtel
        73
    smithtel  
       2015-07-20 09:09:54 +08:00
    恩,其实是你组长不会。
    safilar
        74
    safilar  
       2015-07-20 09:22:39 +08:00
    @jadetang 问斐波拉契数列值 ,就是考动态规划啊!绝壁不是考递归。回答递归也没什么意义
    safilar
        75
    safilar  
       2015-07-20 09:25:54 +08:00
    @jadetang 另外斐波拉契数列值多线程考的是什么。他的中间结果是固定只存在读的情况,又不存在重复计算的问题。
    jadetang
        76
    jadetang  
    OP
       2015-07-20 09:29:24 +08:00
    @safilar 中间结果,计算出来的时候,也要写进去吧?
    tabris17
        77
    tabris17  
       2015-07-20 09:33:27 +08:00
    叫人写斐波拉契数列不是侮辱人么?

    你好歹让人写个FFT算法啊
    jadetang
        78
    jadetang  
    OP
       2015-07-20 09:43:02 +08:00
    @tabris17 23333333333
    66beta
        79
    66beta  
       2015-07-20 09:43:57 +08:00
    楼主处世不深啊,大三学生做过了一个课后题自称精通,就还信人家了?
    jadetang
        80
    jadetang  
    OP
       2015-07-20 09:44:51 +08:00
    @66beta 其实一开始我是不相信的。我就问个算法题,看看他acm那一栏有没有水分。
    tabris17
        81
    tabris17  
       2015-07-20 09:46:13 +08:00
    @safilar 斐波拉契数列要什么动态规划呀,编译器直接就尾递归优化了,转换成循环也是分分钟的事情啊
    mhycy
        82
    mhycy  
       2015-07-20 09:59:40 +08:00
    借楼求问,到底该写精通还是写略懂。。囧
    jadetang
        83
    jadetang  
    OP
       2015-07-20 10:03:48 +08:00
    @tabris17 首先,java是没有尾递归优化的,其次,斐波拉契数列 f(n) = f(n-1) + f(n-2)是没有尾递归优化之说的吧,求教一下。
    jadetang
        84
    jadetang  
    OP
       2015-07-20 10:04:25 +08:00
    @mhycy 看你掌握吧,如果你说你精通,但是一个简单的问题,都不知道,那还不如说掌握。
    tabris17
        85
    tabris17  
       2015-07-20 10:08:11 +08:00
    @jadetang

    斐波拉契数列的尾递归写法

    int Fibonacci(int n, int a, int b) {
    if (n<=2) {
    return b;
    }
    else {
    return Fibonacci(n-1, b, a+b);
    }
    }

    我的意思是,可以尾递归的都能很方便地转换成循环表示。另外Scala支持尾递归的嘛
    geew
        86
    geew  
       2015-07-20 10:09:13 +08:00
    我觉得看岗位需求而定吧 要是你们招的岗位侧重于需要算法相关的东西那就问咯 如果只是普通的业务之类的东西 其实问问工作上的问题比较好 不过我觉得算法的东西每个程序员基本都要懂一些吧 起码有自己的思路才好
    sakeven
        87
    sakeven  
       2015-07-20 10:16:53 +08:00
    @jadetang 斐波拉契数列可以用矩阵快速幂来求啊。。。lg n的算法。。。
    wind3110991
        88
    wind3110991  
       2015-07-20 10:20:11 +08:00
    这两个都不会写还做程序员- -,我觉得你没错啊
    DT27
        89
    DT27  
       2015-07-20 10:20:33 +08:00
    什么事斐波拉契数列....ACM、stoi又是什么鬼。。。 31l 口中的“末流程序员”路过。。。
    jetyang
        90
    jetyang  
       2015-07-20 10:26:23 +08:00
    支持楼主,建议你们leader改成单人面试,这样就不会尴尬了
    ChenYounG
        91
    ChenYounG  
       2015-07-20 10:43:48 +08:00
    感觉我在转向程序员的道路上。。一篇灰暗。。。
    meteor
        92
    meteor  
       2015-07-20 10:57:17 +08:00
    又是面试Java
    serverlet 应该叫 servlet
    ant_sz
        93
    ant_sz  
       2015-07-20 10:59:56 +08:00
    @cxshun 我觉得 atoi 这种东西还是值得考察的。并不是说考 atoi 是因为以后用得着,而是因为写这个可以考察面试者思考问题的思路。atoi 是一个典型的并不需要很多算法知识,但是需要思维特别缜密的函数。我觉得这个在工作中是很有用的,你写一个函数,不能说就常见的输入类型可以处理,遇到比较edge的case就挂了。思维不够缜密的话会经常写出这种有bug的代码,所以 atoi 我觉得是一个好题。
    cxshun
        94
    cxshun  
       2015-07-20 11:10:43 +08:00
    @ant_sz 确实,这是一个比较好的考查一些边界情况的题目,可以看面试人员在考虑一些问题的时候是否全面。
    pi1ot
        96
    pi1ot  
       2015-07-20 12:31:39 +08:00
    你这个组长有问题。
    winking
        97
    winking  
       2015-07-20 12:42:17 +08:00   ❤️ 1
    支持楼主。atoi只能算再基本不过的编程题,哪有什么复杂的算法。

    另外,我一直认为,无论再怎么优化面试流程,如果不写代码,面试结果的准确性偏差是很大的。

    可以这么说,面试代码写不好,可能误筛掉一些人才(如google的那个例子),但是更容易识别出大量的水货。
    面试代码写得好,基本上招进来的人不会太离谱。
    这也是为什么google/ms/amazon等公司坚持面试写代码的原因。
    angetchao
        98
    angetchao  
       2015-07-20 12:48:57 +08:00
    网上算法一大堆,还问这种没什么技术含量的东西,开发软件重要的是开发什么功能,而不是一堆数组索引算法。楼主专业点问开发什么软件需要什么功能,那些功能尚未被别人开发。
    linxy
        99
    linxy  
       2015-07-20 13:27:06 +08:00
    我也支持LZ,像这样简单的一些东西,如果是一个科班出身的程序员,在课程上都会讲到的。都是一些必知必会的常识性的问题。
    更何况像是LZ面的人,简历上写的如此厉害。
    canautumn
        100
    canautumn  
       2015-07-20 13:39:09 +08:00
    感觉面试者不是想简单了就是智商堪忧。斐波那契数列不是用循环就很简单吗,这不应该是一些编程教材学到循环的时候的例子么。当然,要说从这里出发考递归也可以,recursion再加上Memoization都可以考,用斐波那契都是最简单的例子,然后用循环解法从1开始算其实就是动态规划,只不过这个太简单了以至于不像动态规划了。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:50 · PVG 05:50 · LAX 13:50 · JFK 16:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.