在应届生眼中:非算法程序员,刷题的意义

1. 专业素养提升

当你到初公司上班,可能会有以下这两种困境。其一,企业开发相对于在校项目实践存在非常大的区别。企业项目开发需要开发人员配合公司的技术支持,业务需求,开发要求以及结果要求。而你在校的项目实践大部分都以简单的技术搭建,随性的功能实现,并不能顺应业务的未来发展,这种开发的结果对于公司而言,可直接忽略掉。其二,公司用到的技术对于你来说是陌生的。那就意味着你过往在学校的项目经验对公司来说作用并不大,此时你的竞争力在于你所培养强大的自学能力,以及各方面的专业素养

对于刷算法的人来说,可以存在这样的优势。如果你可以噼里啪啦的把算法题目刷得很溜,至少说明你是一个敲码很细心,很耐心,有想法的人,进一步体现你在解决问题的能力,自学能力,逻辑条理能力的方面也不会太差。公司很大程度会为这样的素质花钱去培养。

当然,这里对刷题的定义,并非对于算法专业户刷题党而言,而是非算法从事者,简单工作党花时间刷题的意义。你不需要花太多的时间去刷题,更不必要在太难的题目上斟酌,可以借鉴一下他人的题解达到学习的效果,因为除去工作时间,你未必负担得起这样的时间消耗。量不需要多,一天有1-3题都是可以的了,重要在于在刷题中形成自主学习的过程。下面结合一道算法题(题源来自LeetCode),简单做一个自身在大学刷题例子:

在应届生眼中:非算法程序员,刷题的意义_第1张图片

  1. 查阅相关资料,明确二叉树的基本理论——>特点,创建,定义,基本操作
  2. 获得节点求差,明确二叉树的遍历各种方法及其特点——>中序遍历为节点升序排列,则相邻两数差最小
  3. 中序遍历可以由递归实现——>递归函数的定义,设计,使用
  4. 最小值计算方法——>例Java:Math.min(root.val - prev.val, res)方法 
  5. 整理上述过程,推理实现过程
  6. 编写逻辑代码,测试用例

在解决问题的过程中,需要耐心的对二叉树的实现基本原理,及其各种遍历方法的执行过程以及特点,还有递归函数的实现做了进一步的学习。把学习到的知识支持转化为题目的解题思路,再细心的推理实现过程,最后转化为逻辑代码以及测试所有案例。这样在解题的过程中所形成的自主学习体系会不断循环。

2. 编码能力提升

通过刷题可以学习到更多的算法和数据结构,并不是一味的for while if else,并且渐渐的更熟悉他们的使用方法以及应用场景。完成逻辑代码并不意味着可以通过系统所有的评测,不断的评审自己编写的代码,进一步达到完善。通过之后还有必要借鉴一下他人的题解,学习别人好的解题思路和实现方法,也看一下槽点多的代码,自省有没有类似的槽点。无形中提升了自身编码水平和代码评审水平。

3. 面试心仪公司

当然自认为足够牛的你,可以参加ACM国际大学生程序设计竞赛,如果你能获得金奖或者银奖,甚至成为ACM的获奖常客,或者通过蓝桥杯大学生程序设计竞赛获得国家级一等或者二等奖,会有优秀的企业向你抛来橄榄枝的。

更为实在的,当你面试心仪企业时起码你还可以通过算法笔试。

 

以上仅为个人在大学时期(包括实习)对刷题的一些理解。

你可能感兴趣的:(算法)