我觉得大部分人都差不多,算法该忘记的都会忘记;平时在工作中,我们用到的时候,会回头再看看,然后捡起来。但你笔试、面试的时候,可不能忘了,有一些基础的算法,还是应该记住的。 工作中涉及到的算法很多,我以游戏里面,随便举两个例子: 1、各种排行榜,各种排序算法,肯定是用到的 2、自动寻路算法 下面是专业回答 算法这个东西,不仅局限于数学模型,不是只有算法导论里边的才是算法;更宽泛的看,解决需求的方案、思路,都可以称为算法。 随着高级语言的流行,写代码变得更加容易,你不需要关心排序算法,你也不需要关心散列表的实现,照样写出过得去的业务逻辑;这些基础数据结构、基础算法,官方库或者第三方早就帮你实现好了。也就是所谓的轮子不需要重复制造,只管造汽车吧。 那么我们为啥还要学算法课呢? 作为一名程序员,如果只停留在知其然的境界,那么无论写上五年还是十年代码,能力始终就是半瓶醋;真正牛逼的程序员,对自己的程序可以了解到每个字节,当然,这个我也达不到^_^ 不了解底层细节,不明白运行原理,这种情况堆砌出来的代码,很可能有严重的潜在bug。比如服务器程序,要求对性能敏感,要求健壮稳定,要求易于扩展,要求快速定位;如果服务器崩溃在一堆库函数里边,怎么办呢? 所以轮子不必重复制造,但制造原理还是要知道。 第二个,关于学过就忘。没必要恐惧,这些东西,我一样会忘,除非天天用到这些算法,反复强化记忆;实际工作中很少有这种情况,所以用的时候,再把他捡起来就可以了;前提是学的时候真正理解了,后面再捡才不费事。 第三个,关于工作遇到问题。举例,db里有数百万行user数据,当user登录游戏进程时,游戏进程需要从db中拉取user的数据,问题是游戏进程所在的物理机内存有限,怎么办?那么我就想到可以用lru或者lfu来解决,lru的具体实现未必记得住,但要知道lru的作用、应用场景。这些要慢慢积累。 以上,都是个人看法,权做参考。 您听懂了一点么? 问答社区地址: http://ask./
欢迎加入QQ群:540040862,与我们随时互动 扫码关注我们:qbhere(前辈在这儿) |
|