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

程序员们,你们平时在工作中用到算法的情况多吗

  •  
  •   refresh · 2015-08-06 21:51:15 +08:00 · 10994 次点击
    这是一个创建于 3404 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我指的是狭义的算法,简单的算法我觉得不能算是真正的算法。比如说弄个递归,替换,左右交换之类的。
    我自己平时遇到算法的情况比较少,多数是处理业务/结构/逻辑/策略/规则等。
    44 条回复    2018-05-05 03:17:47 +08:00
    Ouyangan
        1
    Ouyangan  
       2015-08-06 22:05:49 +08:00
    java , 多是业务逻辑 . 看多了博文坚信一点算法是程序的灵魂 , 不甘紧紧做个码农
    Ouyangan
        2
    Ouyangan  
       2015-08-06 22:06:04 +08:00
    仅仅...
    cxe2v
        3
    cxe2v  
       2015-08-06 22:54:51 +08:00
    狭义的算法用得不多,因为研究这个的其实应该算是科研工作者了
    df4VW
        4
    df4VW  
       2015-08-06 23:00:21 +08:00
    狭义的很少,大部分都交给data mining的搞了
    test0x01
        5
    test0x01  
       2015-08-07 00:03:32 +08:00 via Android
    从大型电信级系统到嵌入式都开发过很久,算法很少用,必竟算法一般比较固定,通常有现成库什么的。更复杂的其实是业务逻辑,特别是电信产品这些高并发的实时系统,一个呼叫几十上百条结点间消息,加上节点内部消息什么的,那才叫搞死。但大数据处理这种得另算,算法对性能影响非常大,做这个就得玩算法了
    mjoseph
        6
    mjoseph  
       2015-08-07 00:04:53 +08:00
    所以。。。我一直不知到。。为毛前端后端非得那么多的算法面试。。。然后现实已经被bug和feature击溃
    Andiry
        7
    Andiry  
       2015-08-07 00:15:24 +08:00
    什么叫狭义的算法?红黑树算不算?一致性哈希?Paxos?
    cmonday
        8
    cmonday  
       2015-08-07 00:27:20 +08:00
    @Andiry 如果是需要自己实现红黑树或者一致哈希,肯定算了。Paxos好像更像是协议而不是算法?
    fox0001
        9
    fox0001  
       2015-08-07 00:27:38 +08:00 via Android
    相比算法,设计模式用得更多。鄙人从事什么管理系统开发
    cmonday
        10
    cmonday  
       2015-08-07 00:29:03 +08:00
    @mjoseph 因为面试很短,别的面试方法也很难衡量工程能力,考算法算是退而求其次,至少能看出来你会写程序会思考
    qw7692336
        11
    qw7692336  
       2015-08-07 00:29:30 +08:00 via Android
    基本不会自己写,但是需要了解一些实现,对读代码也有帮助
    dcoder
        12
    dcoder  
       2015-08-07 00:31:59 +08:00
    @mjoseph
    以 google 为主的大公司带坏头
    iyaozhen
        13
    iyaozhen  
       2015-08-07 00:52:11 +08:00
    我只想说书到用时方恨少呀。

    有时候为了解决一个问题,搞出很多莫名其名的方案。但最后发现都是有成熟的、经过验证的“算法”。
    wkdhf233
        14
    wkdhf233  
       2015-08-07 01:37:19 +08:00
    算法最优是追求,但现实是你能把需求实现了不出bug,谁管你最不最优
    Andiry
        15
    Andiry  
       2015-08-07 02:01:35 +08:00
    @cmonday 自己实现红黑树这种还真心少见。毕竟是轮子一类的东西
    ch3rub1m
        16
    ch3rub1m  
       2015-08-07 02:02:07 +08:00
    说实话面试算法用得很少,都有现成库,就算做datamining或者deeplearning也算不上狭义的算法,更多是概率论和机器学习。
    pandachow
        17
    pandachow  
       2015-08-07 02:03:06 +08:00
    用,也需要自己写。

    (不过我的职位就是算法。。。好了,我可以匿了。。
    msg7086
        18
    msg7086  
       2015-08-07 02:14:09 +08:00
    我面试都考基础算法,比如简单的字符串修改什么的。
    连基础算法题都过不了的话,我怎么相信你能敲出业务逻辑来?
    OpooPages
        19
    OpooPages  
       2015-08-07 07:11:51 +08:00 via Android
    楼上说的对,面试短短的时间不可能让你写出个业务来,一般考考基础知识,算法就是基础之一。
    vietor
        20
    vietor  
       2015-08-07 07:27:55 +08:00 via Android
    了解算法的价值在于"需要的时候能够用上"。我主要用在一些特定优化上,有时用现有代码,有时自写。
    hackerwgf
        21
    hackerwgf  
       2015-08-07 08:35:08 +08:00 via iPhone
    完了,按照楼主说的不算简单的算法,那我就真的没用过算法了…
    loggerhead
        22
    loggerhead  
       2015-08-07 08:51:14 +08:00 via iPhone
    不多,但是 书到用时方恨少
    initialdp
        23
    initialdp  
       2015-08-07 08:51:49 +08:00
    很少用,印象中只在一个嵌入式设计中应用过二叉树。
    tao1991123
        24
    tao1991123  
       2015-08-07 09:02:09 +08:00
    算法在于优化程序更好运行。但是现实是求能跑就好不要出bug
    finalsatan
        25
    finalsatan  
       2015-08-07 09:19:32 +08:00
    确实不多。
    em70
        26
    em70  
       2015-08-07 09:23:24 +08:00
    算法用得比业务逻辑多的,那叫科学家. 而程序员主要工作应该是工程师成分多一些.
    Tedko
        27
    Tedko  
       2015-08-07 10:52:32 +08:00 via Android
    得写autocomplete。。。这得有前缀树吧
    go4fun
        28
    go4fun  
       2015-08-07 13:09:21 +08:00 via iPhone
    逻辑多,算法少。不过因为我的产品涵盖了机器学习的一些内容,所以这方面的算法运用和改进会稍微多点,但只占整个产品的5%。
    orangleliu
        29
    orangleliu  
       2015-08-07 13:26:40 +08:00
    少的可怜
    azhao
        30
    azhao  
       2015-08-07 13:35:46 +08:00
    算法能力和逻辑智商成正比
    逻辑智商就是所谓的"潜力"

    不是说不会算法就不够聪明,而是没有办法证明你聪明
    这和考上清华北大不一定很强,但大多数都很强
    考不大学的不一定很差,但大多数都很差

    工作中遇到的问题不定是算法问题,但很多问题是用了算法,会更好的解决
    Cloudee
        31
    Cloudee  
       2015-08-07 13:42:58 +08:00
    我觉得很多算法不一定会写,不过得知道有那么个东西,适用的场景和性能如何。这样在开发上很多方向上的问题不容易错
    kepenj
        32
    kepenj  
       2015-08-07 14:00:30 +08:00
    有别于 “自己创造”和“用别人的”
    marffin
        33
    marffin  
       2015-08-07 15:35:43 +08:00
    算法基础越好,用到算法的机会越多。不会算法的人找不到需要用到算法的工作,自然就觉得没需求。

    随便说几个:
    分布式系统的基础——选举算法,没有zookeeper可以用的时候,自己会写一个对付对付么?
    搜索引擎的基础——反向索引、jump list、索引压缩,知道了以后至少能看懂Xapian或者Elasticsearch在干什么
    星际二以及XBox天梯的玩家匹配算法——TrueSkill,其实原理不复杂,平常自己公司的乒乓球赛用的就是这个算法的简单实现

    其实只要数据量稍微大一点,性能有瓶颈了,想着优化了,对你的算法基础知识的考验就来了。
    ufo5260987423
        34
    ufo5260987423  
       2015-08-07 15:55:43 +08:00
    我做数据分析相关的工作,本身是做NLP和人工智能的。偶尔还要做下图片处理什么的。

    (⊙v⊙)嗯算法用的不少。
    imcoddy
        35
    imcoddy  
       2015-08-07 16:45:19 +08:00
    赞同 @marffin 的说法。
    实际的情况还是和工作的内容相关吧,一般的业务更看重的是不要出 bug,但数据量到一定程度的时候,算法的优劣会体现得很明显。
    darkbill
        36
    darkbill  
       2015-08-07 17:24:33 +08:00
    @pandachow 用,也需要自己写。

    (不过我的职位就是算法。。。好了,我可以匿了。。

    +1

    我的职位也是算法,各种控制算法,用于各种工业现场。。。
    socrates
        37
    socrates  
       2015-08-07 18:11:16 +08:00
    现在库很多,所以很多需要用到算法的地方直接用lib就行了,不过明白算法的时候,会知道lib里面的实现是不是适用
    liujiangbei
        38
    liujiangbei  
       2015-08-07 18:13:26 +08:00
    算法更多的是看你的思路,并不是真正的要去算法
    realpg
        39
    realpg  
       2015-08-07 18:19:19 +08:00
    一般日常来说,一个大项目顶天用三五次 真正会有成就感的解决了一个问题的思路
    其他都不算啥算法

    一般也就做个网站、业务系统,用不上那么深奥的
    laoyuan
        40
    laoyuan  
       2015-08-07 21:12:49 +08:00
    我现在正在斗鱼直播用Python 做算法题!我编了8年PHP一个算法都没用过~
    http://www.douyutv.com/laoyuan
    Mark24
        41
    Mark24  
       2015-08-08 06:27:24 +08:00 via Android
    好像没那么深奥
    Feiox
        42
    Feiox  
       2015-08-08 09:42:19 +08:00
    如果你是在公司负责写业务逻辑,算法 ~ 额,我是基本用不上。。。
    但如果你是写一些比较抽象的类库,那基本上算法很多啊。比如写 DSL 的时候,基本要完成一个简单的递归下降分析器。另外,我也用过各种红黑树、选举算法等
    或者,在写数据分析?哈哈,全是算法的调用。你要知道算法的大概实现、功能,才能用 的好。。
    yibuyisheng
        43
    yibuyisheng  
       2015-08-09 00:02:07 +08:00
    前端程序员一枚,基本没啥算法,各种方法都是前辈总结好的,直接按照那种思路写就好了。
    ToT
        44
    ToT  
       2018-05-05 03:17:47 +08:00
    recursive call, priority queue, binary search, parse expression string 好像就用过这么多。大部分是 design pattern 和 refactor code
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2569 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:55 · PVG 10:55 · LAX 18:55 · JFK 21:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.