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

社招还会问 “请手写选择排序算法” 吗?

  •  
  •   Registering · 2015-04-03 17:21:11 +08:00 · 12979 次点击
    这是一个创建于 3529 天前的主题,其中的信息可能已经有所发展或是发生改变。
    昨晚看到一个在线写简历的网站,感觉不错,撸了一个,抱着被鄙视的心发给了一家创业公司的android岗位,今天下午收到面试通知,,去年毕业,这是第一次社招,

    有点疑问请教一下

    1,应该不会问”请手写选择排序算法“ ,,,吧,,,不想花时间去记这些仅用于查阅即可的东西
    2,没了


    工作经验有点少,有两个公司项目经验,两个项目(算两个?),,都比较一般,

    心里没啥底,清明纠结要出去玩,还是好好准备面试,,,
    52 条回复    2015-04-07 08:32:51 +08:00
    nicegoing
        1
    nicegoing  
       2015-04-03 17:26:16 +08:00 via Android
    我也要面试了,在线简历网站,求楼主分享。
    LukeXuan
        2
    LukeXuan  
       2015-04-03 17:27:12 +08:00
    虽然说查询即可 但是总需要算法常识的
    LukeXuan
        3
    LukeXuan  
       2015-04-03 17:27:49 +08:00
    虽然说查询即可 但是总需要算法常识的
    而且一般都是手写快排吧。。。
    msg7086
        4
    msg7086  
       2015-04-03 17:34:18 +08:00   ❤️ 1
    @LukeXuan 手写快排我没这本事,但是手写并排还是应该会的。
    Registering
        5
    Registering  
    OP
       2015-04-03 17:39:03 +08:00
    LukeXuan
        6
    LukeXuan  
       2015-04-03 17:39:58 +08:00
    @msg7086 为什么呢 我会quick sort但是不会merge sort
    Mirana
        7
    Mirana  
       2015-04-03 17:41:11 +08:00
    算法基础好的人会拿到更好的offer的
    zhanglp888
        8
    zhanglp888  
       2015-04-03 17:41:55 +08:00
    我曾经花了很长时间,去看算法什么的,后来就都忘了,再后来,连他们的名字也都忘了
    应该会有跟我一样的人吧?
    Registering
        9
    Registering  
    OP
       2015-04-03 17:48:02 +08:00
    @zhanglp888 +1 ,,可能需要反复去看看或者应用到,,才会娴熟于心吧
    chengzhoukun
        10
    chengzhoukun  
       2015-04-03 17:59:37 +08:00 via Android
    @zhanglp888 +1 所以经常搞算法竞赛的有优势
    binux
        11
    binux  
       2015-04-03 18:28:12 +08:00
    虽然我忘了算法的实现和名字,但是我可以推导一个出来。
    FrankFang128
        12
    FrankFang128  
       2015-04-03 18:30:36 +08:00 via Android
    如果实在找不到你有什么亮点,我会问的。
    liuhaotian
        13
    liuhaotian  
       2015-04-03 18:31:40 +08:00
    大概原理知道就算怎么写忘了总能写出来的吧
    @msg7086 我只会二分的快排 / 随机化快排,归并不会
    imlinhanchao
        14
    imlinhanchao  
       2015-04-03 18:57:05 +08:00
    筆試,手寫C++ string類
    bruce
        15
    bruce  
       2015-04-03 19:05:36 +08:00
    写。
    tobeyouth
        16
    tobeyouth  
       2015-04-03 19:12:30 +08:00
    会...
    过往的面试经历里,会考手写算法的大概占总数的一半以上吧。
    还有一些比较细致的,会在你写完之后,跟你一起 review 你的代码。

    最后,我是一个工作中基本没用过各种算法的前端... 囧
    limbo0
        17
    limbo0  
       2015-04-03 19:19:00 +08:00
    基本会快排就可以了,其他的话确实平常不怎么用
    mcfog
        18
    mcfog  
       2015-04-03 19:52:48 +08:00 via Android
    面试官自然有这么问你的权利
    你也有一票否决这样问的面试官的公司的权利
    xcv58
        19
    xcv58  
       2015-04-03 20:00:55 +08:00 via iPhone
    我不觉得这有什么不对,你写完还可以跟他讲讲 标准库 里实现的排序算法的优劣。
    jun4rui
        20
    jun4rui  
       2015-04-03 20:05:13 +08:00
    真理解了,写一个不难啊
    233
        21
    233  
       2015-04-03 20:43:19 +08:00
    现在不知道了,同届研究生毕业那年华为,百度运维校招都是手写起泡排序。。。
    如果你能正确写出个优化后的基本就80%了
    sndnyang
        22
    sndnyang  
       2015-04-03 20:54:43 +08:00
    @233 研究生毕业? 招运维? 还是招开发? 开发写冒泡排序? 虽然不是说冒泡太简单, 真想写出各种小bug 还是很容易的。
    我还以为 写快排 和 图、树的算法会更多呢——很多算法我记得清原理(二分图和最大流到现在都认真看过), 但要我从空白写到全对, 估计得花半个小时以上来调试——
    vbs
        23
    vbs  
       2015-04-03 21:12:17 +08:00
    才毕业一年,还是会问基本的
    但绝不会让手写红黑树。。。
    233
        24
    233  
       2015-04-03 22:10:28 +08:00
    @sndnyang 华为那个是开发,百度是运维。
    和招聘的职位有很大差别。
    但每年量最大,钱相对少的那一批,基本对技术没啥要求。
    phoeagon
        25
    phoeagon  
       2015-04-03 22:16:57 +08:00
    手写selection很容易好吗!又不是让你手写timsort
    Ulu
        26
    Ulu  
       2015-04-03 22:25:31 +08:00
    北美这边面试排序如果写,一般就让你写归并排序或者快排。
    dreamtrail
        27
    dreamtrail  
       2015-04-03 22:26:14 +08:00
    我觉得能手写个排序是最基本的技能吧。。
    zhicheng
        28
    zhicheng  
       2015-04-03 22:43:12 +08:00 via Android
    谁敢让我写快排,我就让他写个朴素贝叶斯过滤器。其实不是说楼上几位在吹,我实话告诉你,除了背下来一天以内不参考其他人的代码写出完全正确的快排基本是不可能的。
    noanti
        29
    noanti  
       2015-04-03 22:49:11 +08:00 via Android
    达到能随手写出伪码的程度就不用怕。伪码写了对面试官也不会计较语法上的错误。
    shiny
        30
    shiny  
       2015-04-03 22:50:40 +08:00
    只不过都是在为了面试而练习的算法罢了。
    noanti
        31
    noanti  
       2015-04-03 22:51:20 +08:00 via Android
    @zhicheng 我认识的都不知多少个了。
    tb4649120073rs
        32
    tb4649120073rs  
       2015-04-04 00:23:48 +08:00
    前几天徒手写了个快排,更多只是检查代码能力吧,毕竟算法本身还是很简单的。
    Lamian
        33
    Lamian  
       2015-04-04 01:14:44 +08:00
    看到这么多人说排序写不出来,我就放心了
    wph95
        34
    wph95  
       2015-04-04 01:29:42 +08:00 via iPhone
    @zhicheng 认真搞过竞赛的…尤其是noip的…起码一半都会裸写快排
    notcome
        35
    notcome  
       2015-04-04 02:50:44 +08:00 via iPhone
    表示手写快堆并排毫无压力,但是经常忘了什么是冒泡和选择还有插入,选择好像是
    let (max, rest) = selectMax in max:(selectSort rest)

    哦我全想起来了。
    feetbig
        36
    feetbig  
       2015-04-04 04:34:38 +08:00
    在北美找工作这是必备技能。。
    sandideas
        37
    sandideas  
       2015-04-04 07:30:27 +08:00 via Android
    手写冒泡我是会。。
    快排,知道原理,给我时间说不定能写出来。但是写不出来的概率更大,因为就连c语言都有qsort。。所以真心没动力写
    zhicheng
        38
    zhicheng  
       2015-04-04 08:30:59 +08:00 via Android
    @noanti @wph95 如我说,已经背下来了。这就像写字,我知道怎么写,有些天天写的忘不了。但是有些经常不写的就忘了。
    Admstor
        39
    Admstor  
       2015-04-04 09:10:47 +08:00
    我觉得这个写不出来没啥,你写一下你的思路也是可以的
    正常的技术面试官看到你能写出思路,说不定更加分
    sndnyang
        40
    sndnyang  
       2015-04-04 09:16:55 +08:00
    @233 也是, 我毕业那年(本科), 华为研发技术一面就让我写了个链表, 排序都没写, 百度运维 笔试直接挂了(有学长发邮件说有运维岗内推,结果没报技术岗)。
    rwalle
        41
    rwalle  
       2015-04-04 09:40:57 +08:00 via Android
    真是奇怪了,为什么有些人写不出快排还感到很自豪。。
    pezy
        42
    pezy  
       2015-04-04 09:42:37 +08:00
    没准就会遇到,其实挺简单的,20行代码自己走一遍吧: https://gist.github.com/pezy/0dc42e10e678cf01ff17
    ipconfiger
        43
    ipconfiger  
       2015-04-04 11:38:11 +08:00
    说点不好听的,冒泡这种级别的“算法”,基本上简单到就算是忘了,花10分钟就能重新推导出来,如果做不到,基本上也不指望这个段位的程序员能正确实现什么稍微复杂一点的业务逻辑了。
    xiaoboost
        44
    xiaoboost  
       2015-04-04 11:51:13 +08:00
    手写快排无压力……
    都是当年背过的……
    tb4649120073rs
        45
    tb4649120073rs  
       2015-04-04 12:28:14 +08:00
    @zhicheng 真的不需要呗... 基本原理就那么简单,怎么写出来反而是看代码功底吧?
    advancedxy
        46
    advancedxy  
       2015-04-04 13:01:07 +08:00
    @pezy 结果没用 3-way partition... 而且你的算法对于全部相同的元素的排序你的算法是O(n^2)的...
    mornlight
        47
    mornlight  
       2015-04-04 16:39:43 +08:00
    如果我去面试笔试,大概之前会花点时间把这种常考的基础题过一遍。
    原理当然能理解,但长时间不写就忘了哪个是哪个了
    NetFly
        48
    NetFly  
       2015-04-04 18:00:09 +08:00
    一般来说...让手写算法比较少..我面试的话...主要还是看给你一个需求...你的思路是什么样的...一个算法...如何设计到你理解是最优的...有个思路就ok了
    Syec
        49
    Syec  
       2015-04-04 23:40:35 +08:00
    以前刷题那段时间各种排序手写分分钟,现在让我写个绝对够怆
    geeti
        50
    geeti  
       2015-04-06 01:45:22 +08:00
    对算法要求低一些的可能会问,但最多就是个快速排序啥的,麻烦的不会让你写。
    算法要求高的,比如google,facebook,默认你知道,考察算法时不会问这种教科书的东西
    sm0king
        51
    sm0king  
       2015-04-06 17:52:23 +08:00   ❤️ 1
    其他公司不知道,按照我们公司的情况,只要知道快排的思想,写错什么的完全无所谓,但你得知道什么是快排,思想是什么
    ps:就算你写错了我怎么知道?!因为我都不会仔细看,更不会去测试一下对不对。
    但我最讨厌那种根本不回答的,然后扯出一大堆理由,或者自以为自己很牛爱答不理的那种,嗯,我见过自以为很牛,然后被我同事打脸的。
    Registering
        52
    Registering  
    OP
       2015-04-07 08:32:51 +08:00
    @sm0king 回复点赞!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2764 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:39 · PVG 20:39 · LAX 04:39 · JFK 07:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.