Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
420 views
in Technique[技术] by (71.8m points)

好像只有面试的时候考算法,但是在实际工作中算法几乎用不到?

算法在实际工作中的用处,我工作快3年了,对数据的查询是从数据库查询。但是对数据的排序等操作基本用不到像什么插入或者快速排序算法,难道算法只有在面试的时候有用吗?

最近一直在学算法,但是学了之后发现在实际工作中用不到。。。。。。,很矛盾!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

你在学算法?你都学什么算法了?插入排序??你学插入排序当然会用不到了!
你要是学快排的话,抱歉,库都实现好了。

你学不实用,或者成熟的算法,当然很难用到了。前者根本用不到,后者已经被别人实现好了。

对于常见算法,最重要的是理解:它的时间复杂度、空间复杂度、功能特点等。然后呢,你就可以学点实现不是那么多的算法(比如 skiplist 啊,hyperloglog 啊,bloom filter 啊之类的。有些语言糙,连最大堆和 btree map 都没有,你需要的时候也可以去实现一个。当然前提是你知道你需要什么。

你自己的背景说得太少了,所以我不好举例。就说数据库查询吧,你知道 hash 索引和 btree 索引的差别吗?

至于面试。那是刚毕业的人,没什么实战经验,所以才会考算法这种学校里学的东西吧。不然面试会针对你应聘的工作内容来问的。当然那些大公司都很需要懂算法的人,创业公司就不怎么需要了。

再补充一点:会算法不等于会编程。很多人认为算法好就能写出好程序,are you kidding me?算法好的确能写出高效的程序,但是程序又不止高效这一方面。一个优秀的程序需要:

  • 效率足够好

  • 良好的可读性 / 可维护性

  • 可扩展性

  • 良好的用户界面(不管它是 GUI、TUI 还是命令行或者配置文件)

  • 足够的支持性文档

  • 良好的兼容性

  • 易与其它程序配合工作


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...