学习算法最佳方法

发布时间:2018-11-06 作者:jason

我假设您使用谷歌作为进入四巨头(Facebook,谷歌,微软,亚马逊)的象征。

公司在面试期间对以下5个因素进行评估

1.编码技巧。

2.对基础数据结构和算法的了解和理解。

3.解决问题的能力(和白板练习)。

4.能够设计大规模分布式系统。

5.文化契合和人际交往能力

通过有意识地在上述所有类别中提高自己的水平,您可以极大地提高您被Google聘用的机会。让我们详细看看这些因素

1.编码技巧:

你必须精通编码。更好地编写代码的最简单方法就是编写代码。用你最喜欢的编程语言编写很多代码。您在编程语言中的舒适程度有助于您专注于面试的其他部分。面试官可以快速找出您对某种编程语言的熟练程度。如果您编写很多代码,那么您知道的每种语言都会有细微差别。这里有一些例子

1.声明并传递二维数组。

2.字符串操作函数,例如Splice,Substring等。

3.数学函数,例如Math.floor,Math.round等。

这并不意味着您应该记住所有库函数。我只是说,当你编写很多代码时,这些东西大部分都是你自然而然的。您不必在每一步都暂停。

2.对基础数据结构和算法的了解和理解:

刷新数据结构和算法。修改Big-O以获取最常用的算法。没有人会要求你逐字逐句地实现算法,但最好记住这样的事情

1.Merge Sort和Quicksort之间有什么区别。在哪种情况下哪一个更好?

2.什么是稳定的?

3.什么是堆?

4.什么是HashTable以及常见的碰撞解决技术是什么?

5.什么是PreOrder,InOrder,PostOrder,LevelOrder遍历?

6.什么是广度首次遍历和深度优先遍历?

这不是一个全面的列表,但如果您在回答上述问题时遇到困难,则需要学习或修改数据结构和算法。

如果您正在寻找学习数据结构的资源(特别是对于Javascript),请查看Javascript中的数据结构,包括可视化和实践练习。

3.解决问题的技巧(和白板练习):

开始练习并解决编码问题。从基本的开始,然后逐步解决更高级的问题。您不应该花费超过30分钟来解决任何问题。更好的是,练习在白板上解决问题。

作为一种资源,我会推荐使用交互式可视化的Coderust 2.0:更快的编码面试准备来准备编程访谈。它有Java,Python,C ++,Javascript和Ruby等源代码的80个问题。

4.设计大规模分布式系统的能力:

如果编码可以帮助您获得选择,您的设计技能将决定您的薪水和水平。重点是学习分布式系统的基础知识,然后学习如何根据提供给您的约束来设计大规模分布式系统,这一点非常重要。如果以下主题对您来说陌生,您必须学习和练习

1.容量规划,

2.无状态服务器,

3.SQL与NO-SQL

4.分布式队列

5.Blob存储

6.一致性模型(强一致性与最终一致性)。

同样,它不是一个全面的列表,但如果你正在努力解决这些问题,你会在面试中挣扎。我建议看Grokking系统设计访谈,以获得系统设计基础知识和设计Instagram,设计Youtube,设计优步等问题的详细概述。

5.文化契合和人际交往能力:

你必须在团队中工作。公司希望雇用团队合作的工程师。他们会问你关于你和你的团队或你的经理有分歧的棘手情况的问题。您对如何处理此类情况的回答可以说明您的个性。在面试之前尝试记住这些情况。

改善这一点的最佳方法是成为一名优秀的团队合作者。你不仅要讲很好的故事,而且你现在的同事很乐意为你写一篇推荐信(许多顶级公司都要求)。


息息.AI生活.更简单 xixi生活

©2016-2018 成都轻雨科技有限公司 Made in chengdu

蜀ICP备 17039669号-1

更多ai生活 请关注息息公众号