由《编程之美》想到的

来源:互联网 发布:apache php ubuntu 编辑:程序博客网 时间:2024/04/27 20:49
由《编程之美》想到的
昨天下班,约了搜狐的同学,一起去海淀图书城淘宝。
目标就是MS的这本《编程之美》,这本书名字比较吸引人,副标题叫做:微软技术面试心得
在dangdang上的评价颇高,上市一月,就冲上了榜单首位,可见MS在诸位IT民工心目中地位之高。
(如果我将来去谷歌上班,我也写一本GOOGLE面试心得,必可大赚特赚,呵呵)

回想上班两年来,勤奋程度和买书积极度基本成正比。
毕业伊始,买书颇多;最近两月,卖书不少。前两周,刚以超低价位卖了一本《C#高级编程》第四版,原价100多,全新,售价30。
回顾买书的History,刚毕业时,大多数书都是C++ Primer,Begining C# Object这样偏重于语言层次的书籍;后来开始玩转设计模式,看的书也变成了《GOF》《深入浅出MFC》《。NET应用程序框架》这样的模式框架一类;再后来由于工作需要,开始接触系统级别,《WIN32多线程》《LKD》《ULK》这样书也翻了几页;再后来精研C++,Effective系列成了我最喜欢的书籍,上班在城铁上读了好多。最近比较青睐于数据结构算法方面,《算法分析与设计》《Programming Pearls》占据了案头,奈何工作繁忙,平时没有时间读书。只能六日闲暇时,抽空学习。

回顾读书的历程,就是工作学习的一段经历,也是我从一个Windows平台的C#程序员,到Win32的C/C++程序员,到Linux下的C++程序员的转型过程。(没有一点看不起Windows程序员的意思,术业有专攻,仅仅是工作需要而已)。

刚才看《编程之美》,作者提到,MS的面试就是要找出懂得“编程之美”的人来。什么是编程之美呢?
按照我的理解:好的程序应该是简洁,正确,可维护,可扩展,高效的集合体。
在面试中,我们不一定能够完全的写出具备上述特点的优秀代码。
但是最起码的几点是
1.编程风格
2.各种情况考虑全面
3.内存的管理
4.思维逻辑条理清晰

除了上述几点之外,在面试中,其实interviewer最想看到的就是:
1.你碰到未知问题时解决问题的思路,面试的过程就是考察你解决问题的思考方式
2.查找资料能力,搜索引擎,MSDN, ...
3.编写代码,调试代码,测试代码的能力,因此写代码时(不论是在电脑上,还是在白板上,微软和谷歌都喜欢让candidate在白板上边画边写),一定要找一个case自己先跑一遍,然后考虑各种特殊,边界情况。

最后要分享的一个面试技巧就是跟interviewer的沟通,最好你没想到一个方法或做一个步骤的工作,都要说出来,一般来说,面试官都会给你一些善意的提示。或者是你们可以就某一算法收敛性,复杂度做进一步讨论。

编程之美这本书,本来我想像effective c++一样当作手册来翻阅,看过几页后,才发现这本书应该仔细阅读研究,最好对应算法导论。
首先应该把每一道题目自己先模拟面试环境做一下,然后再看分析和答案。这样比较有收获。


PS:最近看见不少优秀的高效代码,决定建立自己的程序库,MyToolKit收集一些巧妙的高效优质代码,来复用。
所有代码都用C++类中的static函数来包装,方便使用。最好加进公司的CVS服务器里面,放在common目录,打成.a文件,不知老大是否允许。
回想上班这几年,跳槽不少,真正写过的精品代码,基本没有,积累ToolKit库也是个人的一笔财富。
原创粉丝点击