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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    当年组里来了一个应届生说他一个下午就能写出来.... 也不想想 google 的 chubby 都搞了多久.
    songco
    songco
    Sep 25, 2015
    31
    大部分情况下, 知道有这么个算法可以解决什么问题就可以了, 遇到了在详细研究.
    maemolee
    maemolee
    Sep 25, 2015
    32
    觉得数据结构很复杂的样子,这个假期要抽时间看看了 www
    xiaosha009
    xiaosha009
    Sep 25, 2015
    33
    用的也不多,用的也不难,因为 java 很多东西都封装了,没必要自己写。只是算法可以锻炼一个人的思维,以后再技术上的发展还是需要算法的。程序员厉不厉害还是可以通过算法来看出来的
    chinawrj
    chinawrj
    Sep 25, 2015
    34
    几乎不用。用现成的。知道算法是怎么回事就行了。
    hienchu
    hienchu
    Sep 25, 2015
    35
    如果是偏向应用开发的,真正写算法的机会并不多,因为现有的库已经足够好,如果基础算法真的成为瓶颈,也不是随手写一个就能解决的吧。不过懂算法还是很必要的,作用常常都是潜移默化,就好比你学了那么多年的语文,不一定要写小说当作者,但是对于你学习其他知识的阅读理解以及沟通是十分必要的,但你却很少意识到其实语文学习有帮到你。
    deepreader
    deepreader
    Sep 26, 2015
    36
    同意 @binux 大大的观点。
    foxkiller
    foxkiller
    Sep 26, 2015
    37
    曾经每天花一半时间是在研究数学和算法的飘过。。。
    哦
    以前做算法设计的= =||
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1863 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 747ms · UTC 15:20 · PVG 23:20 · LAX 07:20 · JFK 10:20
    ♥ Do have faith in what you're doing.