我是一位拥有15年以上经验的程序员。 从高中开始的第一年,我在算法上学习和工作很多。 在我毕业之前,我一直都在学习并对它充满热情。 毕业后,我开始出国学习,走了研究道路。
但是,工作3年后,我更喜欢做产品/软件而不是研究。 我转向技术/工程而非算法。 但是,我个人认为,对于开发人员来说,理解算法仍然很重要。 而且,我认为您可能不了解Google或Facebook而无法通过面试!
> Photo by Fabian Grohs on Unsplash
1. HackerRank
从初级到高级,从开发人员到招聘经理,该网站在编程界都是非常有名的。
> hackkerrank.com
Hackerrank有许多算法,难度从低到高,以及各种算法和数据结构(甚至是SQL)。 您将编写代码,直接运行并查看结果,或查看讨论以了解人们如何解决它。
在我的采访过程中,也有一些公司让我来这里进行测试(算法+多项选择+论文)。 因此,您可以来这里做更多练习并习惯它。
2. TopCode
> https://www.topcoder.com/challenges/
TopCoder是最早可以相互竞争的程序员的在线"竞技场"之一。 它提供了算法挑战的列表,您可以使用其代码编辑器在线进行操作。 单轮比赛每月在特定时间举行几次,编码员相互竞争,以最高分最快地解决挑战。
在TopCoder上排名靠前的用户是非常优秀的程序员,并且经常参加许多编程竞赛。 排名最高的人将拥有自己的博客" PETR MITRICHEV编写的ALGORITHMS WEEKLY",他们可以在其中撰写有关代码竞赛,算法,数学以及任何喜欢的东西的文章。
3. Geeksforgeeks
如果您在执行算法时遇到麻烦,在Google上寻找解决方案后,您可能会多次看到该页面。
> https://practice.geeksforgeeks.org/
这个geekforgeeks页面看起来有点……很丑,这些练习的分类不是很好。 但是,它有许多常见算法练习的解决方案。 每个解决方案包括许多不同的方法,以及每种方法的复杂性/内存。 这是非常有趣和有益的阅读。
因此,有时您可以在主页上看到此页面/解决方案示例的流行算法!
4. Leetcode
另一个受欢迎的算法培训网站:Leetcode。 在此问题上的数量不亚于hackerrank,有3个主要难度级别,分别是Easy / Medium / Hard(某些简单的问题非常困难)。
> https://leetcode.com/
当我去算法面试时,经常有人问我一些简单的问题,用中级来评估能力,而困难是针对Facebook / Google面试。
与其他页面相比,此页面也可以很好地衡量您的性能/运行时代码,以查看您的代码运行快速还是慢速,是否可以优化。
每日编码问题
观看CS Dojo的Youtube频道时向我介绍了该页面-一位Google员工辞职以担任YouTube员工。
> https://www.dailycodingproblem.com/
与其余页面不同,此站点没有作业列表。 相反,您输入电子邮件,他们每天都会发送给您1种算法来尝试。
这些也是Easy / Medium,像Amazon / Google这样的公司用来采访候选人。 如果您购买了高级套餐,将获得解决方案。
Exercism.io
如果其他页面要练习算法,那么练习就是学习编程的好地方。
> https://exercism.io/
关于锻炼的练习很多,但是这些练习对算法的要求不是太重,但是对使用编程语言的要求却很重:
- 使用if / else循环。
- 日期处理,字符串处理
- 方法分离,班级组织
- 如何处理错误,编写异步代码
我使用此网站来了解有关Golang和Elixir的更多信息。
如果您已经编程了一段时间,想学习一种新的语言,学习一种新的思维方式,那就去运动吧!
总结
在本文中,我分享了6个超酷的网站来练习算法和学习编程!
我个人认为您不需要学习太多,如果想在面试之前进行练习,请访问Skilled / Hackerrank / Leetcode。 或者,如果您需要学习新的语言,请选择运动。