记一次惨痛的编程考试经历

一次惨痛的编程考试经历

最近一个月,一直在刷leetcode来准备公司的上机编程考试,平均每天刷3道题左右,主要是中等题型,偶尔也刷困难题.
按照题目的类型在刷,如分治,递归回溯,二叉树,dfs,bfs,dp,前缀和这些.自以为准备的很充分,结果还是挂了.
心中的郁闷可想而知,俗话说,”大痛者必有大志”,从成长型思维来看,还是很有必要总结一下失败的经验的.
先来回顾一下考试题目:
1.一道系统设计题目,主要考查如何组织代码实现不同的排序策略,整体上比较简单,也做出来了
2.一道深度优先遍历题目,本来以为能轻松做出,可是没有AC,也一直没有想出原因,也因此而挂了
3.二维前缀和+合并区间,只想到了用二维前缀和,后面合并区间没有优化,造成超时

其中第2题还一直怀疑用例有问题,一直没有发现代码中的bug.直到几天后,才发现问题.代码其实仔细推敲就会发现不符合题目要求,没有考虑清楚  
叶子节点的情形.

总结了下失利原因有以下几点:

  1. 准备考试要首先搞清楚考的是什么?算法一般不会考太难的,重点还是在于有没有好的编程习惯.编程习惯包括如何审题分析线索,如何设计用例,如何调试,如何熟练的使用语言等.
  2. 体会到了测试驱动开发的重要性,如何根据题目设计有效的用例和考虑清楚所有边界条件.
  3. 之前刷题只注重有没有解题思路和题目的难度上,用例不过也是直接看失败用例,造成思维逻辑有漏洞
  4. 完全没有练习如何对照题目的限制条件设计用例,如何调试代码验证符合预期,一味地追求刷题数量,忽略了本质.
  5. 做题不纯粹是速度,更重要的是准确,如果代码有bug和没有代码是一样的.