• 请不要在回答技术问题时复制粘贴 AI 生成的内容
honam
V2EX  ›  程序员

关于工作后算法的使用,你真会经常用吗?

  •  
  •   honam · Sep 25, 2015 · 7304 views
    This topic created in 3884 days ago, the information mentioned may be changed or developed.

    出来工作一年了,做 Java web 的,感觉所做的项目跟算法没太大关系。你们呢,是否也有这样的感觉,现在连一个快排也写不出了。。。那问题来了,为啥大公司对算法要求那么高呢?什么职位使用算法最多?

    37 replies    2015-09-26 08:52:54 +08:00
    matthewgao
        1
    matthewgao  
       Sep 25, 2015
    坦白的说,我这 3 年里从来没写过任何算法,只是在用,因为各种库都包含各种算法,需要自己写的时候我还没碰到,我也不自信我能比库里实现的还好
    YouXia
        2
    YouXia  
       Sep 25, 2015 via Android   ❤️ 3
    看职位,我接触到的搜索,存储等相关对性能要求比较高的会用到。
    此贴提到的数据结构和算法很多都用过:
    http://stackoverflow.com/questions/500607/what-are-the-lesser-known-but-useful-data-structures
    比如哈希,跳表, BloomFilter ,后缀树等等,然后为了某些特殊需求也要实现一些算法,比如压缩相关的 S9 , S16 , PForDelta 等等。

    至于为什么面试要求算法,主要原因是,应届生基本啥都不懂,这是最有效的面试手段。
    Andiry
        3
    Andiry  
       Sep 25, 2015 via Android
    不用算法的只能算码工,离程序员还有距离
    matthewgao
        4
    matthewgao  
       Sep 25, 2015 via Android
    @YouXia 我很好奇 你是说用,还是自己实现?
    YouXia
        5
    YouXia  
       Sep 25, 2015 via Android
    @matthewgao

    也有自己实现,也有用的。比如上面提到的压缩算法,源代码里是普通实现,然后为了性能,就得把源代码搞懂,修改为并行指令集方式。

    当然基础的东西肯定不会让你自己实现了(一般神牛们都实现过了),但是许多时候需要看别人论文来实现算法或架构,或者需要优化代码,基础知识都不扎实,会比较吃力的。
    kingcos
        6
    kingcos  
       Sep 25, 2015 via Android
    同问。。。数据结构学的好吃力。。。
    就我这资质还是不加入 acm 了吧。。。
    em70
        7
    em70  
       Sep 25, 2015 via Android
    计算机软件有两个主要用途
    1.将传统数据数字化
    2.人工智能
    算法使用得多不多,取决于你的项目对人工智能需求是否旺盛。
    zonghua
        8
    zonghua  
       Sep 25, 2015 via iPhone
    算法造砖块预制件
    然后只能做堆砌的人,然觉也就这样了。
    msg7086
        9
    msg7086  
       Sep 25, 2015
    程序 = 数据结构 + 算法。

    平时写的程序,除了数据结构部分以外,都可以称之为算法。

    算法就是解决问题的过程。比如输入用户 ID ,输出用户所有的文章,这个也属于算法。

    至于非常复杂的算法,本来日常开发中就用得不多。考算法也不是让你把算法背下来,而是考你解决问题的思路。日常开发中也要解决很多问题,如果你算法题能够自己想出来解决掉,那么日常开发里你也会有这个能力去解决问题。
    RiceNoodle
        10
    RiceNoodle  
       Sep 25, 2015
    大公司只是用算法来简单粗暴的区分程序员的水准
    就高考,粗暴但是有效。
    Tedko
        11
    Tedko  
       Sep 25, 2015
    实习就用了。。。
    binux
        12
    binux  
       Sep 25, 2015
    现实中,很多时候是在想怎么把问题抽象成能用算法解决,而不像面试题一眼就能抽象出来
    然后,各种算法,代价实现,时间,空间复杂度统统比较了一遍。

    每天问题抽象,想算法抓破头啊!
    bbx
        13
    bbx  
       Sep 25, 2015
    是不需要用,但是用的时候就傻眼了。。。
    jianzong
        14
    jianzong  
       Sep 25, 2015 via iPhone
    我感觉,学很多知识,譬如计算机基础知识、数据结构、算法、数学,都不是为了拿来即用。而是学习了这些知识会改变了你对程序的看法和角度。从这个意义来说,只要从事编程工作,我相信就是每天都会用到。

    能写一个 working
    zerh925
        15
    zerh925  
       Sep 25, 2015
    看你怎么定义“ algorithm ”咯
    我现在做机器视觉,基本上都是和算法打交道。
    虽然 OpenCV 常用算法都有,但是很多时候都要改源码才能满足需求。
    jianzong
        16
    jianzong  
       Sep 25, 2015 via iPhone
    我感觉,学很多知识,譬如计算机基础知识、数据结构、算法、数学,都不是为了拿来即用。而是学习了这些知识会改变了你对程序的看法和角度。从这个意义来说,只要从事编程工作,我相信就是每天都会用到。

    写出一行 work 的代码,和了解这行代码背后运作原理、以及分析为什么要这样写、会导致什么样的问题,是两个不同的层次。

    比如最近我看了一些汇编基础知识,也可以说是平常工作不会用到的,但在需要深入分析一些问题的时候,确实帮助了我的理解。我相信算法也是这样,会帮你更深入理解写出的每行代码。
    xunyu
        17
    xunyu  
       Sep 25, 2015 via Android
    数据挖掘就是玩算法,看 paper
    sivacohan
        18
    sivacohan  
    PRO
       Sep 25, 2015 via Android
    如果做数据挖掘,做推荐系统。跑不了要看算法。
    就算有库实现了,工程上想要用,基本也得自己重写一遍。
    theJian
        19
    theJian  
       Sep 25, 2015
    acm 弃坑现实习,基本没碰过算法
    yonka
        20
    yonka  
       Sep 25, 2015
    看技术层次和技术追求了,光写 CRUD 或者满足于光写 CRUD 自然用不着...
    blue7wings
        21
    blue7wings  
       Sep 25, 2015
    这是一种基本计算机素质,就像你一个计算机的去看些数学书,人文书,短期有没有用?看不出来,但时间长了一个人的眼界就不一样了啊...
    ----一个二维数组排序都写不出来的程序员的感悟(哭)
    mengzhuo
        22
    mengzhuo  
       Sep 25, 2015 via iPhone   ❤️ 1
    游戏业务也需要

    物品掉落里各种概率计算 二项分布 泊松 随机算法
    二分加速搜索
    LRU 来做属性计算缓存, cuckoo filter 保存兑换码
    eycfsjd
        23
    eycfsjd  
       Sep 25, 2015
    后端算法还是用的挺多的
    akagi
        24
    akagi  
       Sep 25, 2015
    重写不推荐,尤其是复杂的算法。不过该用记忆化搜索的用普通递归就……
    wshcdr
        25
    wshcdr  
       Sep 25, 2015
    有时候会用到哦
    theworldsong
        26
    theworldsong  
       Sep 25, 2015
    书到用时方恨少.
    matthewgao
        27
    matthewgao  
       Sep 25, 2015
    @YouXia 恩 和我认为的差不多,我曾经面试过摩根,我就对他们所指的算法有分歧,他们竟然认为 STL 里 for_each 也算算法。。。我认为这就是个工具, C++11 都可以用 for(auto& itr: vec)
    matthewgao
        28
    matthewgao  
       Sep 25, 2015
    @xunyu 实际上在搞的是数学
    s7lx
        29
    s7lx  
       Sep 25, 2015
    因为你只是堆代码的。 写个搜索热词提醒给我看看 。 这种撕逼怎么能少了 @wklken
    songco
        30
    songco  
       Sep 25, 2015
    以前做存储, 搞 paxos, 看起来简单, 实现起很麻烦. 后来的 Raft 就好多了. 不过这个也可以叫协议.

    当年组里来了一个应届生说他一个下午就能写出来.... 也不想想 google 的 chubby 都搞了多久.
    songco
        31
    songco  
       Sep 25, 2015
    大部分情况下, 知道有这么个算法可以解决什么问题就可以了, 遇到了在详细研究.
    maemolee
        32
    maemolee  
       Sep 25, 2015
    觉得数据结构很复杂的样子,这个假期要抽时间看看了 www
    xiaosha009
        33
    xiaosha009  
       Sep 25, 2015
    用的也不多,用的也不难,因为 java 很多东西都封装了,没必要自己写。只是算法可以锻炼一个人的思维,以后再技术上的发展还是需要算法的。程序员厉不厉害还是可以通过算法来看出来的
    chinawrj
        34
    chinawrj  
       Sep 25, 2015
    几乎不用。用现成的。知道算法是怎么回事就行了。
    hienchu
        35
    hienchu  
       Sep 25, 2015
    如果是偏向应用开发的,真正写算法的机会并不多,因为现有的库已经足够好,如果基础算法真的成为瓶颈,也不是随手写一个就能解决的吧。不过懂算法还是很必要的,作用常常都是潜移默化,就好比你学了那么多年的语文,不一定要写小说当作者,但是对于你学习其他知识的阅读理解以及沟通是十分必要的,但你却很少意识到其实语文学习有帮到你。
    deepreader
        36
    deepreader  
       Sep 26, 2015
    同意 @binux 大大的观点。
    foxkiller
        37
    foxkiller  
       Sep 26, 2015
    曾经每天花一半时间是在研究数学和算法的飘过。。。

    以前做算法设计的= =||
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4934 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 95ms · UTC 01:06 · PVG 09:06 · LAX 18:06 · JFK 21:06
    ♥ Do have faith in what you're doing.