出来工作一年了,做 Java web 的,感觉所做的项目跟算法没太大关系。你们呢,是否也有这样的感觉,现在连一个快排也写不出了。。。那问题来了,为啥大公司对算法要求那么高呢?什么职位使用算法最多?
1
matthewgao 2015-09-25 00:34:58 +08:00
坦白的说,我这 3 年里从来没写过任何算法,只是在用,因为各种库都包含各种算法,需要自己写的时候我还没碰到,我也不自信我能比库里实现的还好
|
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 等等。 至于为什么面试要求算法,主要原因是,应届生基本啥都不懂,这是最有效的面试手段。 |
3
Andiry 2015-09-25 00:49:17 +08:00 via Android
不用算法的只能算码工,离程序员还有距离
|
4
matthewgao 2015-09-25 00:49:26 +08:00 via Android
@YouXia 我很好奇 你是说用,还是自己实现?
|
5
YouXia 2015-09-25 00:54:58 +08:00 via Android
@matthewgao
也有自己实现,也有用的。比如上面提到的压缩算法,源代码里是普通实现,然后为了性能,就得把源代码搞懂,修改为并行指令集方式。 当然基础的东西肯定不会让你自己实现了(一般神牛们都实现过了),但是许多时候需要看别人论文来实现算法或架构,或者需要优化代码,基础知识都不扎实,会比较吃力的。 |
6
kingcos 2015-09-25 00:57:00 +08:00 via Android
同问。。。数据结构学的好吃力。。。
就我这资质还是不加入 acm 了吧。。。 |
7
em70 2015-09-25 01:00:00 +08:00 via Android
计算机软件有两个主要用途
1.将传统数据数字化 2.人工智能 算法使用得多不多,取决于你的项目对人工智能需求是否旺盛。 |
8
zonghua 2015-09-25 01:07:42 +08:00 via iPhone
算法造砖块预制件
然后只能做堆砌的人,然觉也就这样了。 |
9
msg7086 2015-09-25 01:25:10 +08:00
程序 = 数据结构 + 算法。
平时写的程序,除了数据结构部分以外,都可以称之为算法。 算法就是解决问题的过程。比如输入用户 ID ,输出用户所有的文章,这个也属于算法。 至于非常复杂的算法,本来日常开发中就用得不多。考算法也不是让你把算法背下来,而是考你解决问题的思路。日常开发中也要解决很多问题,如果你算法题能够自己想出来解决掉,那么日常开发里你也会有这个能力去解决问题。 |
10
RiceNoodle 2015-09-25 02:08:50 +08:00
大公司只是用算法来简单粗暴的区分程序员的水准
就高考,粗暴但是有效。 |
11
Tedko 2015-09-25 02:20:42 +08:00
实习就用了。。。
|
12
binux 2015-09-25 02:50:59 +08:00
现实中,很多时候是在想怎么把问题抽象成能用算法解决,而不像面试题一眼就能抽象出来
然后,各种算法,代价实现,时间,空间复杂度统统比较了一遍。 每天问题抽象,想算法抓破头啊! |
13
bbx 2015-09-25 04:24:47 +08:00
是不需要用,但是用的时候就傻眼了。。。
|
14
jianzong 2015-09-25 08:15:20 +08:00 via iPhone
我感觉,学很多知识,譬如计算机基础知识、数据结构、算法、数学,都不是为了拿来即用。而是学习了这些知识会改变了你对程序的看法和角度。从这个意义来说,只要从事编程工作,我相信就是每天都会用到。
能写一个 working |
15
zerh925 2015-09-25 08:18:26 +08:00
看你怎么定义“ algorithm ”咯
我现在做机器视觉,基本上都是和算法打交道。 虽然 OpenCV 常用算法都有,但是很多时候都要改源码才能满足需求。 |
16
jianzong 2015-09-25 08:18:34 +08:00 via iPhone
我感觉,学很多知识,譬如计算机基础知识、数据结构、算法、数学,都不是为了拿来即用。而是学习了这些知识会改变了你对程序的看法和角度。从这个意义来说,只要从事编程工作,我相信就是每天都会用到。
写出一行 work 的代码,和了解这行代码背后运作原理、以及分析为什么要这样写、会导致什么样的问题,是两个不同的层次。 比如最近我看了一些汇编基础知识,也可以说是平常工作不会用到的,但在需要深入分析一些问题的时候,确实帮助了我的理解。我相信算法也是这样,会帮你更深入理解写出的每行代码。 |
17
xunyu 2015-09-25 08:19:32 +08:00 via Android
数据挖掘就是玩算法,看 paper
|
18
sivacohan 2015-09-25 08:50:16 +08:00 via Android
如果做数据挖掘,做推荐系统。跑不了要看算法。
就算有库实现了,工程上想要用,基本也得自己重写一遍。 |
19
theJian 2015-09-25 08:52:47 +08:00
acm 弃坑现实习,基本没碰过算法
|
20
yonka 2015-09-25 08:56:49 +08:00
看技术层次和技术追求了,光写 CRUD 或者满足于光写 CRUD 自然用不着...
|
21
blue7wings 2015-09-25 09:07:47 +08:00
这是一种基本计算机素质,就像你一个计算机的去看些数学书,人文书,短期有没有用?看不出来,但时间长了一个人的眼界就不一样了啊...
----一个二维数组排序都写不出来的程序员的感悟(哭) |
22
mengzhuo 2015-09-25 09:47:03 +08:00 via iPhone 1
游戏业务也需要
物品掉落里各种概率计算 二项分布 泊松 随机算法 二分加速搜索 LRU 来做属性计算缓存, cuckoo filter 保存兑换码 |
23
anexplore 2015-09-25 10:29:56 +08:00
后端算法还是用的挺多的
|
24
akagi 2015-09-25 10:41:42 +08:00
重写不推荐,尤其是复杂的算法。不过该用记忆化搜索的用普通递归就……
|
25
wshcdr 2015-09-25 10:52:17 +08:00
有时候会用到哦
|
26
theworldsong 2015-09-25 11:37:24 +08:00
书到用时方恨少.
|
27
matthewgao 2015-09-25 13:50:29 +08:00
@YouXia 恩 和我认为的差不多,我曾经面试过摩根,我就对他们所指的算法有分歧,他们竟然认为 STL 里 for_each 也算算法。。。我认为这就是个工具, C++11 都可以用 for(auto& itr: vec)
|
28
matthewgao 2015-09-25 13:51:17 +08:00
@xunyu 实际上在搞的是数学
|
30
songco 2015-09-25 15:52:29 +08:00
以前做存储, 搞 paxos, 看起来简单, 实现起很麻烦. 后来的 Raft 就好多了. 不过这个也可以叫协议.
当年组里来了一个应届生说他一个下午就能写出来.... 也不想想 google 的 chubby 都搞了多久. |
31
songco 2015-09-25 15:53:13 +08:00
大部分情况下, 知道有这么个算法可以解决什么问题就可以了, 遇到了在详细研究.
|
32
maemolee 2015-09-25 15:56:28 +08:00
觉得数据结构很复杂的样子,这个假期要抽时间看看了 www
|
33
xiaosha009 2015-09-25 16:03:05 +08:00
用的也不多,用的也不难,因为 java 很多东西都封装了,没必要自己写。只是算法可以锻炼一个人的思维,以后再技术上的发展还是需要算法的。程序员厉不厉害还是可以通过算法来看出来的
|
34
chinawrj 2015-09-25 16:19:30 +08:00
几乎不用。用现成的。知道算法是怎么回事就行了。
|
35
hienchu 2015-09-25 17:01:26 +08:00
如果是偏向应用开发的,真正写算法的机会并不多,因为现有的库已经足够好,如果基础算法真的成为瓶颈,也不是随手写一个就能解决的吧。不过懂算法还是很必要的,作用常常都是潜移默化,就好比你学了那么多年的语文,不一定要写小说当作者,但是对于你学习其他知识的阅读理解以及沟通是十分必要的,但你却很少意识到其实语文学习有帮到你。
|
36
deepreader 2015-09-26 04:46:12 +08:00
同意 @binux 大大的观点。
|
37
foxkiller 2015-09-26 08:52:54 +08:00
曾经每天花一半时间是在研究数学和算法的飘过。。。
哦 以前做算法设计的= =|| |