巩固
在微软工程院的实习是我研究生阶段的一个非常非常非常重要的转折点:
- 做出了一个还说的过去的小项目。
- 期间百度实习面试受挫,痛定思痛之下阅读了大量的程序设计书。
- 微软的实习经历成为了我之后简历上为数不多的亮点之一(本屌一没成绩,二没论文,三没ACM)。
这里就不说1和3了(和本文题目不搭边),重点说说 2。
由于当时组内没有特别多的项目,我负责的那一小块又提前搞定了,mentor 便很慷慨的扔给我一个 Kinect 和一部Windows Phone 让我研究,研究嘛,自然就没有什么 deadline,于是我就很鸡贼的把时间三七开:七分倒腾 Windows Phone,三分看书与经典论文。
然而一件事打断了这段安逸的生活。
百度实习面试
基友在人人发百度实习内推贴,当时自我感觉牛逼闪闪放光芒,于是就抱着看看国内 IT 环境+虐虐面试官的变态心理投了简历,结果在第一面就自己的师兄爆出翔:他让我写一个 stof(字符串转浮点数),我磨磨唧唧半天也没写出完整实现,之后回到宿舍赶快写了一个版本发到师兄的邮箱,结果对方压根没鸟我。
这件事对我产生了很大的震动——
- 原来自己连百度实习面试都过不去。
- 原来自己还是一个编程弱逼。
- 原来自己还是一个算法菜逼。
痛定思痛,我开始了第二个”五年计划”,三七开的时间分配变成了七三开:七分看书,三分WP。而这一阶段的重点从原理(Principle)变成了实现(Implementation)——Talk is cheap, show me the code。
1《Elements of Programming》
由于一直觉得名字里带 “Elements of” 的都是酷炫叼炸天的书,所以我几乎是毫不犹豫的买了这本 《Elements of Programming》(中译本:《编程原本》),事实上这本书里的代码(或者说 STL 的代码)确实是:快,狠,准,古龙高手三要素全齐。
- 豆瓣评分: 8.2
- 购买链接: 京东
- 推荐指数: 五颗星
2《C Interfaces and Implementation》
百度面试被爆出翔的经历让我意识到另一个问题,绝大多数公司面试时都需要在纸上写 C 代码,而我自己却很少用 C(多数情况用 C#),考虑到自己还没牛逼到能让公司改变面试流程的地步,我需要提升自己编写 C 代码的能力(哪怕只是为了面试)。一顿 Google 之后,我锁定了 《C Interfaces and Implementation》——又一本关于如何写出狂炫酷帅叼炸天的C代码的奇书,这里套用下 Amazon 的 评论:Probably the best advanced C book in existance。
- 豆瓣评分: 9.0
- 购买链接: 京东
- 推荐指数: 五颗星
严格来说上面两本书都不是传统的算法书,因为它们侧重的都不是算法,而是经典算法的具体实现(Implementation),然而这正是我所需要的:因为算法的原理我能说明白,但要给出优雅正确简练的实现我就傻逼了,哪怕是 stof 这种简单到爆的 “算法”。
依然是以前的傻逼学习方法:反复研读+一遍又一遍的把代码抄写到本子上,艰难的完成了这两本书后,又读了相当数量的编程实践(Programming Practice)书籍,自我感觉编程能力又大幅提升,此外获得新技能——纸上编码。这也成为了我之后找工作面试的三板斧之一。