今天早上看到微软的拒信,打击很大。但是,仔细想想又是理所当然。因为,三面的时候两道很基本的编程题,竟然导致时间不够,进而在写第二道题目的时候时间紧张,乱写一通,结果不仅边界没有考虑,还破坏了原数据。仔细想想,如果我是微软的HR,看到这么一个不安全的接口实现,也不敢要我了吧。
可能是因为自己对这些大公司的面试经验还少,还有可能是自己对于编程的认识还有问题。我发现大公司在要求你写一个基本函数的时候,基本上是要求你考虑到所有常见的基本异常都能进行处理,当然功能正确完整是第一位的,还有要有良好的编程习惯,不如说变量命名要准确,风格统一,缩进也要标准。
写代码的时候,最好对于功能的实现的基本流程有个框架。然后,再分部分充实细节。
昨天就是败在一道简单的循环处理问题上了。静下心来想想,还是编程之美上的一些知识很有用。如果当时自己能冷静下来,把这三个要素考虑清楚了,就不用出那么大的漏洞。
对于一个循环,
1)首先,要有一个循环不变式,即满足这个条件的才进行循环。
2)其次,终止条件,在什么时候循环结束。
3)最后,循环的范围是不是收敛,能够顺利结束。
写完之后,或者写之前,最好对于接口设计几个简单的,但是能测出特殊情况的测试用例,看接口能否正常处理。
失败能促使人前进,以后自己要培养良好的编码习惯。首先,要明确功能分工,抽象出接口。然后,在细化接口,等思考描述清楚接口实现的思路之后,再动手编码。然后,对于每个接口,再使用一些特殊的测试用例看能否正常处理。