V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gaoyadianta
V2EX  ›  程序员

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

  •  
  •   gaoyadianta · May 21, 2017 · 7422 views
    This topic created in 3267 days ago, the information mentioned may be changed or developed.
    一般这种要求指什么啊,大家有没有稍微具体点的解释啊,比方说哪些书的内容,或者哪些算法的内容,好多招聘需求这么写
    54 replies    2017-05-23 08:21:08 +08:00
    huanghua123
        1
    huanghua123  
       May 21, 2017
    意思就是能写二分查找就行。
    gaoyadianta
        2
    gaoyadianta  
    OP
       May 21, 2017
    @huanghua123 求不闹,正经解释
    elepant
        3
    elepant  
       May 21, 2017 via Android
    事实上是他们都不知道这条要求是什么意思
    gaoyadianta
        4
    gaoyadianta  
    OP
       May 21, 2017
    @Asan /(ㄒoㄒ)/~~好惨
    huanghua123
        5
    huanghua123  
       May 21, 2017
    @gaoyadianta 正经的就是这样。。面了美团,网易等公司,都让写二分查找,最多再让你说下快速排序。
    zetary
        6
    zetary  
       May 21, 2017 via Android
    也许是有 oi 或者 acm 经历…
    misaka19000
        7
    misaka19000  
       May 21, 2017
    看岗位吧,不同岗位要求不一样
    linhua
        8
    linhua  
       May 21, 2017 via Android
    反转二叉树
    kindjeff
        9
    kindjeff  
       May 21, 2017
    虽然总是看见类似上面几楼的说法,但是为什么我遇到过的笔试题都比快排 /二分查找难写啊~
    lechain
        10
    lechain  
       May 21, 2017
    其实有时候我也有这种困惑,虽然我还在读书,不过有时候会去想自己能否达到那些招聘要求上写的东西,

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

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

    Q:“熟悉快速排序算法吗?”
    A:“熟悉”
    Q:“那好,请你解释一下快排的时间复杂度 NlnN 是怎么计算出来的。”
    A:“不好意思,刚才您问的什么?”
    Q:“解释一下快排的时间复杂度 NlnN 是怎么计算出来的。”
    A:“前面一句。”
    Q:“熟悉快排么?”
    A:“不熟悉”
    formulahendry
        33
    formulahendry  
       May 21, 2017
    @ittianyu 我说的是全职员工。我们当时实习大多都是只有 3K 左右。
    ittianyu
        34
    ittianyu  
       May 21, 2017
    @formulahendry 不能这么个算法,4 年前北京放假多少,现在房价多少,在比较一下实习工资涨了没有。
    zjddp
        35
    zjddp  
       May 21, 2017
    正在看剑指 offer,不知道 v2er 对这本书评价怎么样
    wenmingvs
        36
    wenmingvs  
       May 21, 2017 via iPhone
    @zjddp 经典中的经典,面试时候掌握上面的足够了。
    acoldfox
        37
    acoldfox  
       May 21, 2017
    写 php 很少写都忘差不多了
    formulahendry
        38
    formulahendry  
       May 21, 2017
    @ittianyu 所以我一直说的是四年前的行情呀。我并没有说现在的行情怎么样。实习和全职员工的工资没有可比性。 那时有些同学在大摩的实习工资一天 50,而最后转正的话,全职员工的工资又是多少呢。
    20015jjw
        39
    20015jjw  
       May 22, 2017 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  
       May 22, 2017 via Android
    @wl9739 hhh 好多人都是知道实现…(多半是死记忆),根本不知道原理就认为自己真的具备了计算机科学的『基础』能力…
    gaoyadianta
        41
    gaoyadianta  
    OP
       May 22, 2017
    @alcarl 我感觉你理解的不对,你这种态度,基础能力包括最后的综合能力,可能不如那些基础好的
    gaoyadianta
        42
    gaoyadianta  
    OP
       May 22, 2017
    @ittianyu 这么厉害了,小年轻实力好恐怖
    gaoyadianta
        43
    gaoyadianta  
    OP
       May 22, 2017
    @20015jjw 你说什么?...
    Nagisa1992
        44
    Nagisa1992  
       May 22, 2017
    @wl9739 233333
    PhilC
        45
    PhilC  
       May 22, 2017
    @wl9739 哈哈哈哈哈哈哈
    cloverii
        46
    cloverii  
       May 22, 2017 via Android
    @wl9739 您是 Q 还是 A 啊 233
    cloverii
        47
    cloverii  
       May 22, 2017 via Android
    @wl9739 怪不得这个描述这么熟悉…我是在你博客底下留言那个 从你博客末尾那张图看 恕我直言 你根本不会排序
    yuPD97Yeed4QM245
        48
    yuPD97Yeed4QM245  
       May 22, 2017
    @cloverii 你要这么说的话,那抱歉了。那篇博客写的确实有问题,证明不严格(数学已经忘得差不多了),末尾那张图是网上找的。确实是误人子弟。我还是删了吧。。。
    Chrisplus
        49
    Chrisplus  
       May 22, 2017
    leetcode 上 medium 和 easy 的题可以秒,hard 题能做,大概是这个样子
    zhangsen1992
        50
    zhangsen1992  
       May 22, 2017
    @huanghua123 我面百度,也考二分查找。。。
    20015jjw
        51
    20015jjw  
       May 22, 2017
    @gaoyadianta 面试的时候的算法基础啊
    gaoyadianta
        52
    gaoyadianta  
    OP
       May 22, 2017
    @20015jjw 这东西,真的就 TM 面试有用吗?
    20015jjw
        53
    20015jjw  
       May 23, 2017 via Android
    @gaoyadianta 反正我没在工作中写过太复杂的算法 但是理解 hash 怎么工作什么的可以帮助你更好的写代码
    Suddoo
        54
    Suddoo  
       May 23, 2017
    @Chrisplus 我 leetcode 上 easy 的题目很多不会,还能再抢救一下吗?/大哭
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2598 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 95ms · UTC 06:10 · PVG 14:10 · LAX 23:10 · JFK 02:10
    ♥ Do have faith in what you're doing.