关于工作后算法的使用,你真会经常用吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
honam
V2EX    程序员

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

  •  
  •   honam 2015-09-25 00:03:22 +08:00 6980 次点击
    这是一个创建于 3672 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    以前做算法设计的= =||
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5495 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:17 PVG 15:17 LAX 00:17 JFK 03:17
    Do have faith in what you're doing.
    ubao 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