抛开面试——学习健壮代码
出于在找工作的原因,最近我也随大流看了一下《剑指offer》这本书。其实一开始我对于这种“应试书籍”的看法是很不屑一顾的,觉得这种面向面试编程的方式并不长久,大量的算法题的训练会消磨人对于编程的兴趣。后来随着我在leetcode上体验了不到一百道题目之后,自己对于算法题的看法也开始改观。不得不说,通过算法题的训练,自己开始更加关注程序的鲁棒性,开始注重边界条件,开始思考如何设定分支条件、合并分支条件,让代码更加简洁。(前提是不以AC为最终目的,而是去解答中学习每道题最优的写法)。
《剑指offer》这本书,我觉得某种程度上还是被低估了,很多同学只是盲目地刷这本书上的题目。其实我认为这本书最为精髓的地方还是在于他对思路的整理。当我们面对一个问题的时候,应该从哪个方向去思考,然后一步步朝着最优解的方向去逼近。这个思路其实与我理解的软件开发的大方向也是契合的。这就是《剑指offer》这本书带给我最大的启发。
这本书中我印象最深的有两点:
1、不要着急写代码。写满错误的代码和纸和一张白纸没什么区别(甚至还浪费了一张纸~)。在编码之前,先要有解决方案。这是很重要的一点,学习到这一点之后,我在解决问题的时候,一般都会在纸上画一画,形成一个比较明确的思路。
2、学会分解问题。大多数有意思的问题,我们都没办法一眼看出来答案。学会把一个复杂问题拆分成很多小问题,再慢慢逼近答案。这也是解决问题的一个通则。
总之,我对于《剑指offer》这本书还是很喜欢的,其实很多好书都有很高的阅读价值,只是因为读者的浮躁才让这本书的价值没有充分展现。这本书我读了一半就因为时间原因不得已停下来了,在时间相对充裕一点时,我还是会好好把这本书看完的。(以一道道算法题组织这本书的方式,导致章节之间还是比较独立的,到时候续上也方便,哈哈)
ps: 一波《算法》+《算法导论》+《编程珠玑》大礼包还等着我呢(算法还是有味道啊~)