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

有良好的数据结构和算法基础

  •  
  •   gaoyadianta · 2017-05-21 14:12:59 +08:00 · 6668 次点击
    这是一个创建于 2742 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一般这种要求指什么啊,大家有没有稍微具体点的解释啊,比方说哪些书的内容,或者哪些算法的内容,好多招聘需求这么写
    54 条回复    2017-05-23 08:21:08 +08:00
    huanghua123
        1
    huanghua123  
       2017-05-21 14:14:15 +08:00
    意思就是能写二分查找就行。
    gaoyadianta
        2
    gaoyadianta  
    OP
       2017-05-21 14:19:21 +08:00
    @huanghua123 求不闹,正经解释
    Asan
        3
    Asan  
       2017-05-21 14:21:50 +08:00 via Android
    事实上是他们都不知道这条要求是什么意思
    gaoyadianta
        4
    gaoyadianta  
    OP
       2017-05-21 14:23:49 +08:00
    @Asan /(ㄒoㄒ)/~~好惨
    huanghua123
        5
    huanghua123  
       2017-05-21 14:44:11 +08:00
    @gaoyadianta 正经的就是这样。。面了美团,网易等公司,都让写二分查找,最多再让你说下快速排序。
    zetary
        6
    zetary  
       2017-05-21 14:46:16 +08:00 via Android
    也许是有 oi 或者 acm 经历…
    misaka19000
        7
    misaka19000  
       2017-05-21 14:55:01 +08:00
    看岗位吧,不同岗位要求不一样
    linhua
        8
    linhua  
       2017-05-21 14:58:36 +08:00 via Android
    反转二叉树
    kindjeff
        9
    kindjeff  
       2017-05-21 15:09:12 +08:00
    虽然总是看见类似上面几楼的说法,但是为什么我遇到过的笔试题都比快排 /二分查找难写啊~
    lechain
        10
    lechain  
       2017-05-21 15:27:43 +08:00
    其实有时候我也有这种困惑,虽然我还在读书,不过有时候会去想自己能否达到那些招聘要求上写的东西,

    话说 拿过 OI 省一 ACM 省二, 读完一遍 CSAPP 的算有良好基础的吗? QWQ
    guokeke
        11
    guokeke  
       2017-05-21 15:33:58 +08:00
    @kindjeff 什么样的题目啊?
    wenmingvs
        12
    wenmingvs  
       2017-05-21 15:37:14 +08:00   ❤️ 13
    基础算法基础,我的理解是:
    1. 八大排序,三大查找
    2. 常见树的形式与树的增删查改
    3. 图的遍历方式与最短路径算法

    以上 3 种,熟知空间复杂度和时间复杂度,并且能手写出基本场景的代码。
    chenyu0532
        13
    chenyu0532  
       2017-05-21 15:47:20 +08:00
    12 楼正解,面试的时候能快速手写出来
    woshixiaohao1982
        14
    woshixiaohao1982  
       2017-05-21 16:21:49 +08:00
    @chenyu0532 面试能讲清楚数据库索引的类型就 不错了,才那么点时间,还手写,,哈哈
    yidinghe
        15
    yidinghe  
       2017-05-21 16:25:39 +08:00 via Android
    能搞懂红黑树就算很牛的人了我觉得。
    sangmong
        16
    sangmong  
       2017-05-21 16:32:45 +08:00
    mark
    rosu
        17
    rosu  
       2017-05-21 16:35:22 +08:00 via Android
    @kindjeff 能稍微讲一下吗?谢谢~
    Shura
        18
    Shura  
       2017-05-21 17:05:13 +08:00 via Android
    @woshixiaohao1982 b 树需要讲那么久吗?
    unoyx
        19
    unoyx  
       2017-05-21 17:14:44 +08:00
    刷 leetcode 就行了。小公司刷完 easy,一二线互联网刷完 mid,成功人士刷完 hard。
    不过,你要考虑面试不一定出原题……
    Tunar
        20
    Tunar  
       2017-05-21 17:25:43 +08:00 via Android
    找找大学课本,刷 leetcode
    woshixiaohao1982
        21
    woshixiaohao1982  
       2017-05-21 17:31:17 +08:00
    @Shura 谢谢,索引类型有红黑树 Hash 索引 B+树
    woshixiaohao1982
        22
    woshixiaohao1982  
       2017-05-21 17:33:57 +08:00
    @Shura 每种索引类型都是有自己 适用场景的,例如 16 进制的 UUID 就适合 hash 索引 而不是 B+树,每种索引类型不一样,10 分钟能讲清楚 3 中索引的大概数据类型实现,还有不同的使用场景 就不错了,还有 20 分钟跟面试 扯一下自我介绍,或者面试官提问之类的
    woshixiaohao1982
        23
    woshixiaohao1982  
       2017-05-21 17:34:54 +08:00
    @Shura 我上次面试国泰君安的外包,开发经理还问我 TCP 结束连接 有几次握手呢,不过我 TCP/IP 协议详解 ,看了之后忘了
    woshixiaohao1982
        24
    woshixiaohao1982  
       2017-05-21 17:37:24 +08:00
    实际上 经典基本的数据结构与算法,无非就是算法导论或者算法第四版 上那些算法,能搞懂 80% 搞清楚各个算法的适用场景 其时间复杂度,就已经算个半吊子合格程序员了,搞懂这些东西的好处就在于,你以后去读什么数据库原理 编译原理 操作系统原理的时候就不会懵逼了,不会突然蹦出来 此处采用红黑树实现,然后你带着 100 个黑人问号 去搜索红黑树的问题了
    woshixiaohao1982
        25
    woshixiaohao1982  
       2017-05-21 17:41:22 +08:00
    对于绝大部分业务场景来讲,不懂算法 其实也没什么 ,毕竟大部分工作 无非是找几个会写代码的码农把砖搬完,就算你一个动态规划 能够解决一个公司 价值上百万的业务逻辑,有什么用?专门搞那一块的自然有专门的算法工程师去搞,普通程序员 对算法 重在理解跟运用,在不同的业务场景下,知道哪个算法数据结构是最适用的 就已经算半个合格了
    gaoyadianta
        26
    gaoyadianta  
    OP
       2017-05-21 18:13:56 +08:00
    看了回复,我要补的课还很多
    alcarl
        27
    alcarl  
       2017-05-21 18:56:07 +08:00
    算法是面试用的吧。。。。。专注业务实现的工作中还是看知识面,其实就是 google。。。。。
    hanzichi
        28
    hanzichi  
       2017-05-21 19:45:00 +08:00
    话说面试问到最难的就是快速排序了,难道因为我面的是前端?
    formulahendry
        29
    formulahendry  
       2017-05-21 19:52:49 +08:00
    我本科找工作那时候(四年前)的行情:八千块找以下招不到能正确写出二分查找的程序员。 不知道现在的行情怎么样了。
    ittianyu
        30
    ittianyu  
       2017-05-21 19:58:14 +08:00
    @gaoyadianta 面试前默写几天就好,不用太费心。大一那会被学长骗去搞 ACM,什么 数论、几何、深搜广搜、排序查找、贪心、动态规划。天天刷题,最巅峰的时候能熟练默写 二叉树、n 中排序、队列、栈等实现。后来幡然醒悟,干开发去了。2 年多没碰,现在根本基本写不出来,可能稍微对思维有点作用,然而工作基本用不上,早忘了。if (全部忘了) 完全没用
    面试的时候也碰到过问 TCP 原理的,我有句...不知当讲不当讲。
    ittianyu
        31
    ittianyu  
       2017-05-21 19:59:14 +08:00
    @formulahendry 现在 4k 能招到搞过 ACM,github 有 800+星,博客 5w+ 阅读量的实习生。
    wl9739
        32
    wl9739  
       2017-05-21 20:25:08 +08:00   ❤️ 9
    我的一次真实面试经历:

    Q:“熟悉快速排序算法吗?”
    A:“熟悉”
    Q:“那好,请你解释一下快排的时间复杂度 NlnN 是怎么计算出来的。”
    A:“不好意思,刚才您问的什么?”
    Q:“解释一下快排的时间复杂度 NlnN 是怎么计算出来的。”
    A:“前面一句。”
    Q:“熟悉快排么?”
    A:“不熟悉”
    formulahendry
        33
    formulahendry  
       2017-05-21 20:33:56 +08:00
    @ittianyu 我说的是全职员工。我们当时实习大多都是只有 3K 左右。
    ittianyu
        34
    ittianyu  
       2017-05-21 20:44:52 +08:00
    @formulahendry 不能这么个算法,4 年前北京放假多少,现在房价多少,在比较一下实习工资涨了没有。
    zjddp
        35
    zjddp  
       2017-05-21 20:58:52 +08:00
    正在看剑指 offer,不知道 v2er 对这本书评价怎么样
    wenmingvs
        36
    wenmingvs  
       2017-05-21 21:01:25 +08:00 via iPhone
    @zjddp 经典中的经典,面试时候掌握上面的足够了。
    acoldfox
        37
    acoldfox  
       2017-05-21 22:12:10 +08:00
    写 php 很少写都忘差不多了
    formulahendry
        38
    formulahendry  
       2017-05-21 22:15:46 +08:00
    @ittianyu 所以我一直说的是四年前的行情呀。我并没有说现在的行情怎么样。实习和全职员工的工资没有可比性。 那时有些同学在大摩的实习工资一天 50,而最后转正的话,全职员工的工资又是多少呢。
    20015jjw
        39
    20015jjw  
       2017-05-22 04:14:56 +08:00 via Android
    Recursion / dp
    Graph search / tree search / topological
    Graph operation / tree operation 参考 number of islands 和反转二叉树
    String operation 参考 longest palindromic substring / longest xxx substring
    Bits operation
    Heap / Stack / Queue 参考 implement heap with Stack 和反过来 以及 trapped rain water

    我觉得差不多了
    Matrixbirds
        40
    Matrixbirds  
       2017-05-22 09:40:48 +08:00 via Android
    @wl9739 hhh 好多人都是知道实现…(多半是死记忆),根本不知道原理就认为自己真的具备了计算机科学的『基础』能力…
    gaoyadianta
        41
    gaoyadianta  
    OP
       2017-05-22 10:00:52 +08:00
    @alcarl 我感觉你理解的不对,你这种态度,基础能力包括最后的综合能力,可能不如那些基础好的
    gaoyadianta
        42
    gaoyadianta  
    OP
       2017-05-22 10:13:28 +08:00
    @ittianyu 这么厉害了,小年轻实力好恐怖
    gaoyadianta
        43
    gaoyadianta  
    OP
       2017-05-22 10:20:50 +08:00
    @20015jjw 你说什么?...
    Nagisa1992
        44
    Nagisa1992  
       2017-05-22 11:04:04 +08:00
    @wl9739 233333
    PhilC
        45
    PhilC  
       2017-05-22 11:05:37 +08:00
    @wl9739 哈哈哈哈哈哈哈
    cloverii
        46
    cloverii  
       2017-05-22 11:11:44 +08:00 via Android
    @wl9739 您是 Q 还是 A 啊 233
    cloverii
        47
    cloverii  
       2017-05-22 11:13:57 +08:00 via Android
    @wl9739 怪不得这个描述这么熟悉…我是在你博客底下留言那个 从你博客末尾那张图看 恕我直言 你根本不会排序
    wl9739
        48
    wl9739  
       2017-05-22 11:41:54 +08:00
    @cloverii 你要这么说的话,那抱歉了。那篇博客写的确实有问题,证明不严格(数学已经忘得差不多了),末尾那张图是网上找的。确实是误人子弟。我还是删了吧。。。
    Chrisplus
        49
    Chrisplus  
       2017-05-22 12:29:00 +08:00
    leetcode 上 medium 和 easy 的题可以秒,hard 题能做,大概是这个样子
    zhangsen1992
        50
    zhangsen1992  
       2017-05-22 13:28:36 +08:00
    @huanghua123 我面百度,也考二分查找。。。
    20015jjw
        51
    20015jjw  
       2017-05-22 15:02:10 +08:00
    @gaoyadianta 面试的时候的算法基础啊
    gaoyadianta
        52
    gaoyadianta  
    OP
       2017-05-22 18:18:27 +08:00
    @20015jjw 这东西,真的就 TM 面试有用吗?
    20015jjw
        53
    20015jjw  
       2017-05-23 03:56:22 +08:00 via Android
    @gaoyadianta 反正我没在工作中写过太复杂的算法 但是理解 hash 怎么工作什么的可以帮助你更好的写代码
    Suddoo
        54
    Suddoo  
       2017-05-23 08:21:08 +08:00
    @Chrisplus 我 leetcode 上 easy 的题目很多不会,还能再抢救一下吗?/大哭
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2794 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:34 · PVG 10:34 · LAX 18:34 · JFK 21:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.