内容简介:[译] Google 工程师告诉你如何提高数据结构和算法能力
我上过两种课程, 一种是数据结构, 另一种是算法设计。因为种种原因,两科都有很多知识无法衔接。 想提高知识水平和解决问题的能力 有什么好方法可以弥补当中残缺的部分呢?
当我复习一些专题的时候,其实我知道一部分。这使得学习起来就更困难了, 如果我跳过一些章节,然后我就会卡在一些地方, 用这种学习方法我觉得我真的不适合。
Google工程师 Robert的 回答:
我在Google招聘,面试应届毕业生时经常遇见这种问题, 数据结构和算法——数据结构和算法是最重要的学科。但是在计算科学这门课程中学到的知识远远不够。不是说学生读错书了(参阅下方我的建议)或者教授教给的资料有误,归根究底是学生们缺乏对课程的理解。
巩固数据结构和算法的关键是记住每个Big-O值和缓冲成本,而不是详细的捡查能考虑到的每一个数据结构和子表单。如果你习得这种知识真的是很棒又会让人印象深刻,但是这种知识却用之极少, 无论怎样,在工作过程中永远不可能让你执行红黑树节点删除算法。在确定二进制搜索树是解决问题的关键解决方案之后, 你就可以完全放松了, 因为这就是你经常要用的技能。
所以, 不要试图记住所有的东西, 相反, 从最基本的开始, 只学做两件事:
-
可视化数据结构,直观的理解数据结构是什么样的。使用它是什么感觉,它是如何既抽象又真实的存在您的电脑内存里。这就是你能做的唯一也是最重要的事,可视化数据结构有助于您 通过最复杂的平衡树堆栈最简单的队列。在你的大脑里想象并画出来,不论你要做什么都要很直观的去理解这种结构。
-
学习如何在你的代码里灵活的运用不同的数据结构和算法,对于学生来说这就比较难, 因为要解决的问题是学生从未接触过的知识。没关系, 你以为你不能控制数据结构, 直到你遇见一个真正的问题,发现性能问题的解决办法是用hash。即使你是一个学生, 你最应该注重的还是是学习, 而不是一些繁琐的细节, 而实践时:什么时候用Hash?什么时候用树?什么时候用最小值堆是确解决方案?
我在面试Google 工程师时问过的问题之一是二进制搜索树的潜在解决方案(等等)。比较不错的面试者可以在几分钟之内将二进制搜索树放在正确的路径,然后在10-15分钟之内解决剩下的问题,并清除其他的路障。偶然的机会我找到一个不错的面试者, 他可以直观的理解树, 并可视化我提出的问题。他可能会在一些复杂性操作精确的算法出现失误,但是他可以不停顿的回应路障因为搞懂了树的可视化。
至于书,有, 但是只有一本:《算法导论》由Cormen,雷瑟尔森莱维斯特,斯坦著,另外因CLRS闻名
如果你想要其他文本,具体的语言、更多的示例, 我推荐Robert Sedgewick的 C++ 算法或者 Java 算法,如果适用性的话, 我比较喜欢CLRS文本, 其实你还可以找到更好的学习工具。
译文原文: http://www.shivonzilis.com/machineintelligence
欢迎关注微信公众号,第一时间,阅读更多有关云计算、大数据文章。
原创文章,转载请注明: 转载自Itweet的博客
本博客的文章集合:
http://www.itweet.cn/blog/archive/
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 算法与数据结构之递归算法
- Python 数据结构与算法 —— 初识算法
- js实现数据结构及算法之排序算法
- 数据结构和算法面试题系列—递归算法总结
- 数据结构和算法面试题系列—随机算法总结
- 数据结构与算法——常用排序算法及其Java实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
.NET框架程序设计
(美)Jeffrey Richter、(美)Francesco Balena / 李建忠 / 华中科技大学出版社 / 2004-1 / 54.00元
Microsoft.NET框架为简化开发与卫联网无缝连接的应用程序和组件提供了强大的技术支持,如ASP.NET Web窗体、XML Web服务以及Windows窗体。本书的目的在于展示.NET框架中公共语言运行库存的核心内容。全书由两位广受尊敬的开发者/作者完成,并假设读者理解面向对象程序设计的基本概念,如数据抽象、继承和多态。书中内容清楚地解释了CLR的扩展类型系统,CLR如何管理类型的行为,以......一起来看看 《.NET框架程序设计》 这本书的介绍吧!