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

2015-09-25 00:03:22 +08:00
 honam

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

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

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

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

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

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

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

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

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

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

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

比如最近我看了一些汇编基础知识,也可以说是平常工作不会用到的,但在需要深入分析一些问题的时候,确实帮助了我的理解。我相信算法也是这样,会帮你更深入理解写出的每行代码。
xunyu
2015-09-25 08:19:32 +08:00
数据挖掘就是玩算法,看 paper
sivacohan
2015-09-25 08:50:16 +08:00
如果做数据挖掘,做推荐系统。跑不了要看算法。
就算有库实现了,工程上想要用,基本也得自己重写一遍。
theJian
2015-09-25 08:52:47 +08:00
acm 弃坑现实习,基本没碰过算法
yonka
2015-09-25 08:56:49 +08:00
看技术层次和技术追求了,光写 CRUD 或者满足于光写 CRUD 自然用不着...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/223492

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX