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

面试时常考的二叉树、红黑树、各种排序算法真的有筛选作用吗?

  •  1
     
  •   lincanbin · 2015-08-19 18:07:28 +08:00 · 15633 次点击
    这是一个创建于 1546 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如说,你们理解二叉树,花了多久?
    理解快排,花了多久?

    现在大家都知道各大公司面试就是这个套路了,如果花费的时间不多,那么考察的这种东西,真的有筛选作用吗?

    64 回复  |  直到 2019-04-15 17:21:39 +08:00
        1
    lincanbin   2015-08-19 18:08:15 +08:00
    啊对,面试还常考链表吧。
        2
    helone   2015-08-19 18:10:38 +08:00
    我觉得没多大用,还不如出点问题,考察下解决问题的思路
        3
    wy315700   2015-08-19 18:10:59 +08:00
    成本,
        4
    zylll520   2015-08-19 18:12:17 +08:00
        5
    blacktulip   2015-08-19 18:14:22 +08:00   ♥ 11
    有,能排除短期记忆力不行的人
        6
    sandideas   2015-08-19 18:15:04 +08:00 via iPhone
    有些人你把快排掰开了给他,他也会说自己看不懂。。就像期末实验答辩,老师只要能实现就行,舍友找我要了代码就准备去了。我说我跟你讲一下,你去改一下吧。他说他不懂。只要能运行就行。。
        7
    wy315700   2015-08-19 18:16:46 +08:00   ♥ 2
    面试不是考试,不需要考虑公平性,不需要兼顾不同的人的实际情况。

    面试不是目的,目的是招聘。
    面试需要做的是,利用最少的代价,为企业招聘到合适的人。
    中间可能有误判,但是面试算法无疑是成本低并且误判率低的一种方法。
        8
    oott123   2015-08-19 18:31:52 +08:00
    [:doge:] 至今不会红黑树
        9
    yakczh   2015-08-19 18:42:05 +08:00
    四六级高考对说英语有用吗?

    面试只是给筛选找个理由而已,这个活 5 个人能干,现在只招 1 个,你说咋办?
        10
    20150517   2015-08-19 18:58:54 +08:00 via Android
    连学点这个的能力都没有,怎么保证你能学好公司的其他东西?
    考这个不是为了证明你会这个,只是为了证明你有能力去学习
    否则不面试这个就听大家吹自己多牛比,怎么分出真假?
        11
    lincanbin   2015-08-19 19:04:57 +08:00
    @20150517 我的意思是,面试为什么会考这种花一点时间就可以学会的东西?
    这样有用?
        12
    letv   2015-08-19 19:06:45 +08:00
    红黑树的删除一直看不懂。。。
        13
    maemual   2015-08-19 19:07:29 +08:00   ♥ 1
    @lincanbin 你觉得花一点时间就能学会,但是对于很多人,花好些功夫都学不会。同时,也还有好些个人,根本不想花这一点时间去学这些东西。这样就把这么一波人给过滤掉了。
        14
    br00k   2015-08-19 19:20:42 +08:00
    问题是我每次看了,懂了.时间久了又忘了...
        15
    banri   2015-08-19 19:22:07 +08:00   ♥ 1
    多大仇,吓的我一前端都去看算法了

        16
    jsyangwenjie   2015-08-19 19:26:08 +08:00
    连学个二叉树都学不会,这学习能力。。
        17
    xiaohanqing   2015-08-19 19:31:33 +08:00
    当然有,理解算法的思想。可以看出一个人的有没有专研的兴趣。
        18
    fgwww   2015-08-19 19:35:13 +08:00
    那么你觉得应该怎么面试?聊聊天?
        19
    lincanbin   2015-08-19 19:35:18 +08:00
    @jsyangwenjie 请仔细看题
        20
    lincanbin   2015-08-19 19:37:26 +08:00
    @fgwww 稍微深入一点的吧,例如图像处理的巴特沃斯滤波器之类的。
        21
    chengzhoukun   2015-08-19 19:41:48 +08:00
    Google 、 Microsoft 都是这么考的,说明是有效的。
        22
    yoa1q7y   2015-08-19 19:48:19 +08:00
    @banri 这是什么书?
        23
    otarim   2015-08-19 20:02:54 +08:00
    @yoa1q7y 数据结构与算法 JavaScript 描述
        24
    banri   2015-08-19 20:07:41 +08:00
    @yoa1q7y
    @otarim

    正解
        25
    yoa1q7y   2015-08-19 20:17:30 +08:00
    @otarim 多谢
        26
    zonghua   2015-08-19 20:26:45 +08:00
    有用,因为这些我都不会。等以后熟悉程序开发之后确实要自己好好理解一番。
        27
    artwalk   2015-08-19 20:32:55 +08:00
        28
    lincanbin   2015-08-19 20:37:02 +08:00
    @zonghua 真正到了程序开发,只有极少数情况会需要知道这些东西的原理……
        30
    dacapoday   2015-08-19 20:50:42 +08:00
    @lincanbin 这是数字信号处理的基础吧,太偏了,滤波器一大串呢,面试能讲完?
        31
    fszaer   2015-08-19 22:01:18 +08:00
    有些公司实际上就是有这种需求
    像我上一份实习,进去做的的事情,即使完全没有基础,我估计稍微培训一下也几乎都能做,而那个公司需不需要大神我不知道,但是这种初级劳动力一直很有需求,所以他们的招聘只是筛选出那些不需要太费劲调教的初级劳动力而已,并不需要问题有多难

    然后,就像应试教育, xx 速成一样
    即使你把难度提得很高,过一段时间,又会跑出来针对这种难度面试题解的速成攻略,答题套路
    这种速成攻略,答题套路自然又降低了区分度,
    而且还加了一个可能过于关注“难题",基础反而不好的问题

    那么该怎么办?继续提高难度来加大区分?
        32
    linux40   2015-08-19 22:04:19 +08:00 via Android
    我们可以来考证明。。。。
        33
    likuku   2015-08-19 22:15:32 +08:00
    面谈 5 分钟,足够决定是否继续聊还是直接送客。
        34
    xfwduke   2015-08-19 22:24:12 +08:00
    面试认真的能上半小时就不错了
    如果有一个人给面试官的感觉和你差不多, 但是他能搞定标题里面的那些
    那么, 有很大概率是下面几种情况
    1. 他不如你聪明, 但是会的比你多. 所以他更努力, 因为花的时间多
    2. 你们花的时间差不多, 但是会的比你多, 所以他更聪明
    3. 他玩的时间比你还多, 单是居然会的比你更多, 所以.....

    并不是说 100%是上面这样, 只是从面试那么短的时间, 这样选择搞砸的概率最小
        35
    sinxccc   2015-08-19 22:26:30 +08:00
    知道这些数据结构和它们的复杂度,知道什么场景该用什么哪个;说得出常用的数据结构和算法后面的原理,我觉得是必须的,这个是程序员的基本功。

    能在面试时间里实现出来,这个是锦上添花但不是决定性的因素。两个差不多水平的候选者,一个能半个小时在白板上撸出个红黑树,一个撸不出,公司当然会选前者。
        36
    uleh   2015-08-19 22:29:47 +08:00
    平时用不到,但是可以筛选出聪明又努力的人
        37
    ljcarsenal   2015-08-19 22:30:32 +08:00
    @banri 高端
        38
    bugeye   2015-08-19 23:34:38 +08:00
    滤波器设计楼主比得过 EE 的吗?人家是靠滤波器吃饭的哦,连反馈奇点问题没有数学解只能靠经验设计都可以告诉考官。你觉得考官听得懂吗?
        39
    lincanbin   2015-08-19 23:37:05 +08:00
    @banri

    我一直有些不太习惯这种缩进方式
        40
    ecnelises   2015-08-19 23:48:25 +08:00
    @lincanbin 我也觉得,有一种脸歪了的感觉……
        41
    jruif   2015-08-20 02:06:08 +08:00 via iPhone
    @banri 多看点算法,前端也是程序员
        42
    xmoon   2015-08-20 03:02:42 +08:00
    @lincanbin
    if (){
    }else{
    }

    我们是一样的习惯吗 2333
        43
    xuhaoyangx   2015-08-20 03:21:40 +08:00 via iPhone
    @xmoon 必须这样,不这样也改成这样
        44
    paulagent   2015-08-20 05:09:15 +08:00
    有没有用是公司说的算,大部分科技公司都这么干,说明还是有效果,或者说至少没有找到比这个更好的方法。

    如果你有更好的办法,当然可以在你公司或者部门招人时试试,如果效果很好,比如能招到合适的人还节省成本,节省时间。公司就会推广到其他部门,甚至其他公司也会效仿。进而取代旧的
        45
    Andiry   2015-08-20 05:24:38 +08:00
    @lincanbin 二叉树至少程序员用得上。你考个滤波器有毛用?
        46
    MrGba2z   2015-08-20 05:26:32 +08:00
    我赞成一个说法是:

    这些东西才能给一个普通人获得工作的机会
        47
    minfzhon   2015-08-20 06:49:53 +08:00 via iPhone
    可以变着花样考,个人觉得还是能考察基础和潜力的
        48
    chinawrj   2015-08-20 07:57:47 +08:00
    作用有两种:
    1.真的需要算法人才,不过这个算法太 low 了吧
    2.实在不知道考什么,总得考点什么吧。
        49
    Rothschild   2015-08-20 08:57:30 +08:00
    @lincanbin 装啥,程序员考滤波器蛋疼?不过就是 ee 专业基础课的东西而已, 你就听说过 Butterworth 觉得高大上是吧...
        50
    lincanbin   2015-08-20 09:09:16 +08:00 via Android
    @Rothschild 这只是图像处理的内容,不算程序设计的范畴?
        51
    gaocegege   2015-08-20 09:15:39 +08:00
    动态规划表示不服
        52
    Rothschild   2015-08-20 09:42:00 +08:00
    @lincanbin 拿一个分支方向问非专业方向的有卵用, 无论 cs 还是 ee 范围都太大了,你聊图像处理,怎么不多问问嵌入式 ?让你去当 hr 招聘,老板得先把你开了
        53
    lincanbin   2015-08-20 10:00:56 +08:00 via Android
    @Rothschild 我只是举例,我的意思是,只问一些大部分人都知道要考的东西的话,是不是有些缺乏筛选性。
        54
    ototsuyume   2015-08-20 10:41:16 +08:00   ♥ 1
    觉得简单的话可以去试试 facebook , facebook 面试考的算法非常简单,连 dp 都几乎不考,大部分都是基本的数据结构,然而就是一堆人做不出来或者做不到 bug free 或者写的代码不够简洁过不了
        55
    airqj   2015-08-20 11:32:48 +08:00
    一般来说 问这种问题的
    都是不怎么打算学习算法的人...
        56
    akira   2015-08-20 12:01:30 +08:00
    门槛
        57
    wind3110991   2015-08-20 14:41:15 +08:00   ♥ 1
    其实我个人感觉,做应用和搞算法完全是两个概念的人种吧,考察这些东西的更多是大公司搞算法图形或者技术储备的。如果是找一般搬砖的,找做产品做应用的人,确实考这些没有什么用,不如问问他会不会从客户角度去设计东西。但是如果是做研究和钻研高难技术的人,这些就不得不会了。

    原谅我想用 NBA 举个例子:

    做应用的人就像中锋,一个不在比赛里经常投远球的中锋;做算法的人是后卫/小前锋;

    搞应用然后去做算法很难,搞算法然后来做应用很容易。毕竟你不能要求姚明去打控球后卫,但是你可以看到詹姆斯从后卫打到中锋。

    就算在比赛里不会经常投球,但中锋不能在训练的时候放弃投篮这一项,当然你可以完全放弃,成为一个纯搬砖的篮板怪兽---比如罗德曼,以自己的特长去发展,当然,这并没有错;

    但是要成为一个超级中锋,应有投篮的精度直接影响了自己的直接价值,想想奥尼尔在生涯里罚丢了多少个罚球 = =,但是就算差,训练的时候也必须有这方面的训练。

    所以综上,现代程序员需不需要算法能力这个话题确实存在争议,不过,我还是觉得,对于中国的大多数程序员来说,他们都不希望 “需要算法能力” 成为阻挡他们写出点好东西的阻碍。

    毕竟,这是在中国。
        58
    xionghengheng   2015-08-20 16:03:40 +08:00
    人多是主要原因

    早就了各种恶心的筛选方法
        59
    tsstss123   2015-08-20 18:44:21 +08:00
    可以筛掉这个都不打算学会的人...
        60
    bk201   2015-08-20 20:11:07 +08:00
    看到底要招什么样的人,等级低一点的就顺便问问这个,等级高的可能更深入一些。一些都是为了尽快找到需要的人。
        61
    tushiner   2015-08-20 22:16:45 +08:00 via Android
    我是做开发的工具语言是 js ,无论是前端视图或单页应用,还是后端业务逻辑,算法和数据结构是经常用到的。我就奇了怪了,那些整天折腾这工具那引擎这框架那语言特性的究竟是为了什么。我入行这么多年,到今年才觉得 ES5 已可以作为事实标准,但 html5 和 css3 只能作为 xhtml 和 css2 的支援,而这些哥们已经把那些特性玩的滚瓜烂熟了。
        62
    hitmanx   2015-08-21 10:59:21 +08:00
    红黑树自己独立完整地实现过一遍的可能在 V2EX 不到 1%,普通的二叉树什么的就简单多了
        63
    Kathymomo   2015-08-21 11:11:24 +08:00
    群主。。
        64
    ly529   212 天前
    有人能解释下,红黑树里的红、黑是什么吗
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4060 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 76ms · UTC 09:25 · PVG 17:25 · LAX 01:25 · JFK 04:25
    ♥ Do have faith in what you're doing.