原文链接:https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2
具体建议:
- 练习,练习,再练习!代码写的越多,获得大就越多。心里有明确大目标,尝试某些新的领域(可能是自己没有用过的技术),对自己设定一个小小的目标。Github是一个不错的管理平台。
- 至少掌握一门多范式语言。掌握一门语言不仅是知道它的语法,更重要的是通过大量的代码练习和相关文章的阅读,知道语言背后的故事(或者说是陷阱)和行业所推荐的最佳实践。原作者推荐的语言有:Java,C#,C++,PHP,Python,Ruby。
- 了解复杂度的概念。这里通常是指时间复杂度。常见的排序方法时间复杂度必须熟知,这里有一份清单。其它需要了解的算法还有迪杰斯特拉,Floyd-Warshall,旅行推销员,A*,布隆过滤,广度优先遍历,二分查找,多路合并,冒泡/选择/插入排序,原地快排,桶排序,索引排序等等。(原文是
Dijkstra’s, Floyd-Warshall, Traveling Salesman, A*, bloom filter, breadth-first iterative search, binary search, k-way merge,bubble/selection/insertion sort, in-place quick sort, bucket/radix sort, closest pair and so on.
)这里有一篇推荐文章 - 造轮子。用最基础的语句实现语言内置的某些常用数据结构。包括动态数组,链表,栈,队列,环形队列,哈希表,集合,优先队列,二叉搜索树(红黑树,AVL)。
- 解决基本问题。熟练解决基本编程问题。推荐网站有LeetCode,TopCoder。有选择的去强化递归,模式匹配,贪婪,动态规划,图算法。
6.让编程变得简单。编程前明确目标,编程后保证代码可用。白板编程和线上编程都应该被反复练习。白板编程注意事项
原作者的几个建议: