有良好的数据结构和算法基础 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
gaoyadianta
V2EX    程序员

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

  •  
  •   gaoyadianta 2017-05-21 14:12:59 +08:00 7193 次点击
    这是一个创建于 3131 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一般这种要求指什么啊,大家有没有稍微具体点的解释啊,比方说哪些书的内容,或者哪些算法的内容,好多招聘需求这么写
    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     Solana     5280 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 75ms UTC 08:46 PVG 16:46 LAX 00:46 JFK 03:46
    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