Always Be Coding

2017-12-18  本文已影响13人  MontyOak

原文链接:https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2

具体建议:

  1. 练习,练习,再练习!代码写的越多,获得大就越多。心里有明确大目标,尝试某些新的领域(可能是自己没有用过的技术),对自己设定一个小小的目标。Github是一个不错的管理平台。
  2. 至少掌握一门多范式语言。掌握一门语言不仅是知道它的语法,更重要的是通过大量的代码练习和相关文章的阅读,知道语言背后的故事(或者说是陷阱)和行业所推荐的最佳实践。原作者推荐的语言有:Java,C#,C++,PHP,Python,Ruby。
  3. 了解复杂度的概念。这里通常是指时间复杂度。常见的排序方法时间复杂度必须熟知,这里有一份清单。其它需要了解的算法还有迪杰斯特拉,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.)这里有一篇推荐文章
  4. 造轮子。用最基础的语句实现语言内置的某些常用数据结构。包括动态数组,链表,栈,队列,环形队列,哈希表,集合,优先队列,二叉搜索树(红黑树,AVL)。
  5. 解决基本问题。熟练解决基本编程问题。推荐网站有LeetCodeTopCoder。有选择的去强化递归,模式匹配,贪婪,动态规划,图算法。
    6.让编程变得简单。编程前明确目标,编程后保证代码可用。白板编程和线上编程都应该被反复练习。白板编程注意事项

原作者的几个建议:

  1. 掌握C,C++,Java,PHP,Python,Ruby中至少一门,了解Scala,Haskell,Lisp中至少一门。
  2. 熟知常见数据结构,动手去实现当中的某些,了解它们常见操作的时间复杂度
  3. 解决编程问题,一些教程 清单或者清单
  4. 将学习成果以实际项目展示出来。github上有实际的项目。
上一篇下一篇

猜你喜欢

热点阅读