[转者(http://www.douban.com/group/topic/7585608/)注: 徐宥目前是计算机专业的 Ph.D.,导师Yixin Chen,本科毕业于南大数学
系。这篇文章是其应出版商之邀而写的一篇回忆录,详细介绍了其大学之前及大学四年
的生活,包括他找工作,考研和出国的经历。从中可看到他大学刚开始时情绪在自卑和
自负之间的波动,中期看不到前方时的迷茫和收获季节的忙碌。他一直在踏踏实实努
力,最终从一个在数学系都不怎么拔尖的学生成长为一个计算机牛人,当机遇到来时自
然没有错过。我想这篇文章对很多人会有一些启发意义,所以转载在这里。原文地
址:http://blog.youxu.info/2009/08/06/my-undergraduate-year ]
(应博文视点的几位编辑之邀, 总结了我大学本科的一些经历. 博文视点的新书<我是一只小小鸟>八月即将出版, 收录了我和其他将近20位的大学经历和感悟. 本文特别欢迎读者留言, 编辑说将选择一部分读者留言和这篇一起放到书中去)
虽然标题是”我的大学”,但大学中的一切,其实都和大学前的经历和学习习惯有关。因此,我还是从我小学时的一件对我以后人生,包括大学影响巨大的事情说起吧。
数理化和好老爸
我的小学是在农村里和爷爷奶奶度过的。我的父母住在小镇上,两人平时都要工作,没空照看我和我弟弟。所以,我只有周末和放假才到镇上,和父母弟弟在一起。四年级升五年级那个暑假,我到了镇上,和父母在一起。因为一起抓鱼钓虾的玩伴都在老家,百无聊赖的我开始乱翻父亲的书橱,找书看。某天,我翻出了一本叫做《平面几何一题多解》的书,那是本封面很好看的书。我把整本书翻下来,每个汉字我都认识,但每个符号我都不懂。好奇的我于是问父亲,这个书讲的是什么呀,怎么从来没见过这些奇怪的符号呢? 他就告诉我说,书里讲解的这个东西,叫平面几何。他接着问我说,“平面几何是个很有趣的东西,你想不想学呢?” 我说,当然想啊。那时的我,其实只是一个好奇的小学生,迫切想知道这个书中的图画和符号的意思。我肯定不会想到,这个很随意的决定,改变了我其后的整个人生。
听了我肯定的回答,我父亲立即从书橱里层(我家书太多了,书橱太小,书橱里书分里层外层,外层的书挡住了内层的书脊,我从来都不知道里面还有宝贝)变戏法一般的翻出了本《数理化自学丛书–平面几何》。对于我父亲这一代人来说,《数理化自学丛书》是代表着知识,荣耀和梦想的。我感觉他翻出这本书的时候的动作是虔诚的,但当时的我并不知道我父亲在这套书上寄托的希冀和梦想。我只记得他告诉我,当年这套书,用去了他大半个月工资。就这样,从五年级开始,我就在父亲的指点下,开始蹒跚前进学习《平面几何》。从一开始不知道什么叫 “证明”, 需要他一字一句帮我厘清逻辑关系,到后来全是自学不需要他教,我很快就喜欢上了自学这种学习方式,每天自己看书并且做八道题。暑假过完后,我就回到了爷爷奶奶的老家。父亲让我继续自学,并且布置我一周做八道题。我在爷爷奶奶家,每天放学回来不做家庭作业也不看动画片,就赶紧做一道几何题。做几何题的妙趣,是不融入其中的人不能理解的。比起小学里的抄生字,抄课文这种作业,做几何题是脑力和体力的双重享受。当时,我周围没人可以讨论切磋,全靠自己。遇到不会的题目,我只能自己冥思苦想,或者熬到周末和父亲讨论,因此,常常被一道难题从周一折腾到周日。好在这套书是粉碎四人帮后出的第一版,当年学生的数学水平比不上现在的学生,而这本书又是以自学为主要切入点,所以题目相对也简单,我冥思苦想几天后大体上也能想到解题思路。因此,我能够常常体验百思得解的愉悦感。我觉得,这种时常拜访的愉悦感,让我很早就开始相信独立思考的力量。
每个周末,父亲都用吱吱作响的自行车带我到镇上洗澡理发,然后批改上周我做的几何题。在自行车上的时候,他常常信马由缰,随口说些说些初中物理和初中代数知识,比如看到船就说浮力,看到马就说做功,看到三角形就说余弦定理等等。我也就半懂不懂的听,有时候插几句话,有时候能睡着了,没有丝毫的压力和拘束。很早就被中学数学物理知识装备的一个小学生是可怕的,我那时候觉得知识就是力量,因此我一定要用自己的数学物理知识做一台柴油机,我很自信的认为我懂得做柴油机和机动车的一切知识,说不定还能做出第二类永动机。我爸爸屡次告诉我不可行,而我反过来一直屡次告诉他,你是个没有理想的人。我爸爸不愿意打消我的理想,只是扔给我更多的书,希望能够打击我制造柴油机和永动机的热情,而我的知识理想,在读了更加多的书以后,变得更加的坚固了,我相信,学习知识是我人生第一重要事,有了知识,虽然不一定能做柴油机,但一定能做更多强大的事情。同时,我通过学习几何和其他的一些父亲扔给我的书,开始对自己的学习能力有了自信,我相信,找书自学是学知识的好方法,同时,把题从头到尾做一遍是很好的自学方法。
所以,我带着三个理念进入了大学,第一是什么东西都可以自学,第二是慢即是快,笨笨的做一遍题是学习的捷径;第三是知识理想主义,知识就是力量。而读书学知识能够消除蒙昧,掌握改变世界的力量,所以是一件快乐的事情。
大一,极端自负和极端自卑
我的高考成绩还很不错,高中还拿了一个数学联赛一等奖,所以,我是带着对自己数学知识(为了准备数学竞赛,我看了很多闲书,有很多就是大学数学系的教材)和学习方法的自信满满,和对南大数学系这个相对不好的选择的遗憾和自卑(当时的高考分数可以填报更加好的学校或更加喜欢的专业)来到大学的。当时我的心理状态可以用八个字概括: 极端自负,极端自卑。 这种心态,一直笼罩了我上大学的头两年,而且总是以一季度为周期,在两极之间交替变化。我在学期开始往往很自负,到期中考试左右很自卑,然后再自负,再自卑,不断反复。
在我看来,极端自负这个心态,其实不是因为自信,而是因为极端自卑生出的应激反应–为了掩盖自卑,只好用自负来掩饰。为什么我极端自卑呢,大体来自两个方面,一个是我的成绩排名在高中都是很前的,但是到了大学就 20 名开外了。尽管我觉得自己的数学水平很不错,考试却总是不怎么样,觉得考试考不出真水平。另一个是觉得自己没有在一个自己满意的系。我喜欢动手的工科,当时我觉得比起计算机系和电子系这样的“牛” 系,数学系并不“牛”。可即使在不牛的系,我都不能做到前10,更别说看上去更加牛的计算机系了。为了掩饰这种这种自卑,就自然生出了极端自负。那时候,我上课根本不听讲,理由是“书上的东西太简单了”。为了证明自己智商还可以,我总是坐在最后一排,显示自己并不热心于老师讲课。我这样持续了两年, 以至于到最后, 我连班上每次都坐在前面的几个同学的名字都不知道。这样的心态明明是错的,我却缺少一个很好的动因来改变它。
不过最原始的三个理念还是在的,我告诫自己即使不听讲,也不能浪费时间。所以,我把听课做作业上节省下来的时间,用在了看喜欢的计算机书和学习编程上了。于是,整个大一大二,我凭借着简单的自学的理念,开始了两件事情,敲 《Thinking in Java》(TIJ) 和 《The TeXbook》 上的没一个样例。
敲 TIJ 的机缘其实很简单,我是在软件学院听课的时候看到他们教 Java, 但是他们用的 《Java 大学教程》太贵了,我舍不得买。 我在网上搜了一圈,发现 《Thinking in Java》是一个免费的英文电子书。 于是,我就在数学系的机房,每天下午和晚上,开着一台计算机,屏幕上放着这个电子书,再用我的很土的笔记本,运行着未注册的 JCreator, 一个字母一个字母的敲 TIJ 上面的程序。我很偏激的认为拷贝粘帖的程序记不住,所以每个字母都自己手敲。 就这样,花了一个学期,居然就把所有的程序敲完了,基本上 Java 的方方面面,我也了然于胸了。
敲完 Thinking in Java 之前没几天,我们就期末考试了。那一次考试的试题是 LaTeX 排版的,而不是手写的。 我考试的时候就问监考老师这玩意怎么排版出来的,因为我知道 Word 这个软件做不到这个效果。监考老师除了对我不认真考试表示不满外, 还算仁慈,告诉了我 LaTeX 这个名词。 寒假里,我就买了一本 LaTeX 教程。然后,突然认识到,原来 TeX 居然是我最热爱的 Knuth 的杰作,于是我就疯狂的开始学 TeX。 我的方法还是一样, 敲例子。 记得 TeXbook 上有一个程序, Knuth 让大家自己照着敲入计算机, 然后还很幽默的说,实验证明,只有很少的人会按照他说的敲入这个程序,而这部分人,却是学 TeX 最好的人。看到这里我会心一笑,觉得自己的方法原来也不算笨。从此,一字不漏敲入一本书的程序成了我推荐别人学习语言的最好办法。 我后来大四又敲了 A Byte of Python,前段时间又敲玩了 The Awk Book,都是不到一个月瞬间从初学者成为细节很熟悉顺手拈来使用者。顺着这个方法,大二我把 《组合数学引论》 和上海交通大学出版的一本 《离散数学》 上的题目都做一题不漏做完了。当时选者两本书也没有特别的目的,就觉得这东西应该是计算机的数学基础。这些积累,在大四全部都显现了出来。
我个人认为, 《Thinking in Java》 和 《The TeXbook》都算得上是理论和实践结合的精品书,是经典的英文原版书。我一上来就读了这两本书,阅读品味就上升了不少,而且变得“崇洋媚外”了,任何时候都以英文原版书为第一选项了。也因为此,虽然我自学的过程中没有高人指点,但自学最重要的一个环节—选书–的盲目性就大大减少了。我记得那时候我看得最多的书就是华章引进的书,黑封面的,我们图书馆里有将近半书架,如果一一细读,穷尽四年是看不完的。但华章的书也不是本本经典,我那时候开始注意选择,细读开头十几页后,基本能决定这个书该不该看。所以即使当时没人指点,全靠自学,读的书还算过得去。那时候南大计算机系的教材,有的我看,有的我觉得不适合自己,就找替代品了。我觉得选书这个事情上,因为有前两本书的标杆,我少走了不少弯路。从这两本书开始,我疯狂的读书就开始了。南大的浦口校区的硬件条件并不好,唯一有空调且可以上自习的地方恰好图书馆。因此我每个暑假,基本上都是很早就过去占位,晚上很晚回去睡觉。我对小说等其他书也不感兴趣,就整天看自己觉得好的计算机书和数学书,做笔记。某天,我开始了一个雄心勃勃的计划:读完 TP312 书架。
大二,而今迈步从头越
大一大二基本上就是在不断的心态波动中前进。我学会了 Java, 也做了不少题,但是考试成绩一直不是很好,因此我比较苦闷,迫切的想要改变这种状态,我的想法是,要么转系,要么好好学习数学。但是转系阻力重重,我又不愿意耐心去学习数学,所以我一度非常纠结。但是大二下学期,我遇到了两个对我人生产生影响的两个人,这两个人让我从正弦曲线般的心态沉浮中跳了出来,让我一下子变得目标坚定了。
第一个人是我的同学以及非常好的搭档,现在在 IBM 工作的李获鼎,另一个是我的叔叔。他们让我变得沉稳,消除了原有的浮躁,学业和心态都走向了正轨。
大二上学期要结束的时候,我们数学系的学生会主席就说,在下次数学系搞的文化节上,要弄一个叫做 模拟股市 的软件,让大家来炒股。我那时候觉得挺简单的,也特自信,就说,明年我来搞吧。后来我记不得是我找获鼎还是他找我了,反正两个人决定一起搞。 寒假他在家自学 JSP, 我就在家看 JDBC 和 SQL。 开学没多久,我们就开工了,他负责写前端 JSP, 我写 Java Bean。两个人编程比一个人好多了, 可以相互看代码,而且可以轮流工作,克服浮躁感。我写程序比较粗线条,基本上功能有了,细节就不管了。他比我认真细致多了,前端一个表格的宽度和颜色都要调好久。在他的影响和“胁迫”下,我做事情也变得细致起来,因为我不细致,他的前端就没法正常工作。那时候他也是一边写一边学,对着书一行一行的敲JSP,态度比我敲 TIJ 时候还认真。和他在一起工作了 20 天,把玩具项目写完后,我也变得踏实起来。做完了模拟股市这个小程序,玩这个系统的同学都挺喜欢的,我的自信心也就有了,心态也平稳了,态度也踏实了,自然地,自卑心理就没了。随着自卑的消失,极端的自信也消失了,简单的说,我心态变得正常了。这时候,虽然还有点小迷茫,我开始思考以后干什么的问题了,听课,做作业也比以前认真不少,成绩也上去了不少。
和我叔叔不能算是遇到,算是再发现吧。我叔叔是个很有冒险精神的人,具有不折不扣的企业家精神。 我非常小的时候, 他帮人家修电视, 然后迅速就搞了计算机,买了我们全市第一台 486。搞了很多年计算机以后, 又自学了单片机,以写汇编为乐。我对叔叔一直的映像是“善于抓住机会”, 倒没有把他和 “耐得寂寞” 很紧密的联系在一起。所以大二升大三的暑假,当我在看 8051 单片机的指令的时候,我叔叔突然告诉我说,他现在就是做这个的,还立即送了我一个编程器,你可以想象我那时候因为惊讶眼睛瞪得比灯泡还大。我那会儿,已经被 Linux 内核折腾得不行了,觉得汇编更加难。若是要在资源受限的系统上做出工业级强度的东西,我觉得就更加远超过我能力范围了。而叔叔,完全半路出家,通过自学,一个人,几年时间,就把这条路走通了。他现在写的汇编程序,运行在千家万户的水表中,完全是积累出来的硬功夫。我叔叔给我的震撼是巨大的,因为我一度怀疑过自己的自学能力,觉得有些事情,我永远没法做,就像童年想做的柴油机一样,只是幻想。我叔叔给了我一剂强心针。
有获鼎和我叔叔这样两个踏实勤奋的人的影响,我也一改以前轻浮的习惯,给自己定了三个简单的要求: 1. 更加多看书,看好书,并且一定一定要做笔记 2. 多编程 3. 开始背 GRE 单词。 就这样, 我就开始了疯狂学习的大三。
大三,深度迷茫和深度积累
大三是我看书最多,思考最多,积累最多的时候。大三我并没有做任何其他事情,主要就是沉稳冷静的做事情,用不断的做事情看书和思考,压抑心底深处的对前途的迷茫。其实整个大三,我都不知道自己要干什么,在干什么,只知道就像一个运动员一直往前奔。大三我们班很多同学都开始准备 GRE 了,我也就跟风准备 GRE。说实话,当时我捧起红宝书的时候,出国的动机并不强烈。那时候我并没有对美国和中国在各方面的差距有清晰的认识,且过于小看环境对人的影响。潜意识中,我想读计算机,但是考研比出国转计算机要简单多了,学长也告诉我,申请计算机专业很难,我们数学系也鲜有先例。因为正方面没有很强的激励,反方面又觉得困难重重,我就不是太把出国当回事,除了背背单词,我把主要的精力放在了读计算机书上。我专门扫荡 TP.312 (计算机理论和编程)那个分类,同时看了很多英文原版书。TP312 中的大部分书,我都是囫囵吞枣的看,做一些总结性的笔记;只有少数几本,如《计算机程序设计艺术》,《编程珠玑》这几本书,是认认真真看的。这时候的我已经没有时间,或者说耐不下性子一条一条做题了,只能浏览一些题。即使这样浏览,也让我在后来大四的工作面试中占了很多优势。
我有一个从高中就开始的习惯,就是把每天胡思乱想的东西记在一个笔记本上,算是思维快照。我还常常翻回去自省,看看过去和现在的变化。大一大二的时候,这本笔记本上记载着的是和生活和感情有关的琐碎小事,或者宏大空泛的目标和叙事。而大三记录下的内容明显具体起来,比如这周看完了什么书,下周去图书馆借什么书等等。现在我回看这些记下的文字,明显就可以发现,我写下的这些计划之间是没有很具体的头绪的,这些要做的事情后面,并没有一个明确的线索串起来,而是向无头的苍蝇一样到处尝试,到处碰壁。举例来说,我的笔记本里清楚的记下某周要看操作系统,可是下周还没看完操作系统的时候,又记下这周不看操作系统了,看编译原理。就这样,好似饥饿的狗熊在掰玉米棒子,看上去很勤奋的在掰,掰下来,啃两口,扔掉。当时我也能感觉到,知识饥饿感永远在那里,永远填不满。不过,我又总觉得前方应该有那么一个玉米棒子,能够填满自己的饥饿感,所以就一直向前奔跑。其实这种奔跑,不管多勤奋多刻苦,因为不够深入踏实,永远都是事倍功半的。好在我在不求甚解的同时,很注意整理自己的既得知识,写在小本子上。后来我到大四的时候,写论文也好,考研和找工作也罢,很多知识我都是临时突击的,好在有这么一本小本子,我可以按图索骥的去深入强化当时无头苍蝇般乱看的一些书。如果用搜索引擎的工作原理打一个比方,我觉得我大三疯狂的读书和学习,就好比是在建索引,等大四要搜索结果的时候,就再也不需要每本书全文检索了,直接按照本子上的索引找到当时看的书。
踏实和勤奋这两个从我叔叔和获鼎身上借来的优秀品质,加上取之不尽的TP312书架和背不完的单词,使我并没有被深度迷茫拉入自信和自卑的反复中,相反,随着这些积累越来越多,我变得越来越自信了,虽然这种对积累的自信尚未被现实验证过。
大四,书到用时
大三的迷茫让我不确定以后的方向,未被现实验证的自信又让我蠢蠢欲动,所以,我就自然的产生了“赌一把”的心态。 如果以赌博为喻,我就是在所有的盘口上都了下注,要不全输光,要不总能赚,而我相信至少能赢一盘。
所以,大四甫一开始,我就拟了一个时间表,自信满满地想要在考研,找工作和出国的三条战线上都有所突破。我设想 11 月之前弄完出国材料,并且把简历弄漂亮,顺带找工作。1 月前寄材料,套磁,准备考研,4月前搞定一切,等 offer。 5-6 月我就写写论文,然后周游中国了,等我周游回来,至少三个机会让我碰到一个吧,我就从了那个就行了。从这个狂妄的计划中可以看到当时的我的自信,不过我这个自信倒是有一定根据的,因为我研究了考研的模拟题和找工作的不少案例,我当时想,好好准备,应该可以上南大,工作应该可以进腾讯,出国我没底,所以我也想用前面两个来保底。
大四只有一门课,所以我就四处乱跑,乱逛。学校有国际会议,我就跑去和老外搭讪;鼓楼有关于佛教的演讲,我也跑去听;IT 公司的宣讲会和笔试,遇到好的我就去参加参加。如果没事,我就上自习,继续读鼓楼图书馆的书。就这样,我遇到了一个又一个的机会,基本上不管成功失败,都算是有付出就有回报,当然运气成分也不少。
10月左右,微软(MSN)来我们学校面试。这是我第一次面试,很紧张,前一天看书看到1点多,第二天午觉就睡过了一点,加上箱子里唯一的一件衬衫皱巴巴的完全不能穿,所以干脆就穿着拖鞋和 T 恤冲去了。面试的人很友好,面试也很顺利,有的同学还在等第二轮的时候,我的四轮就结束了。我当时的感觉是,微软的面试题太简单了,除了问我南京市新街口周边有多少辆车外,其他题目都是中规中矩的计算机面试题。面试出来之后,我和一个软院的同学在食堂讨论题,他说,题怎么这么难啊?我就很奇怪,说,这些题《编程珠玑》上不都有的么? 后来我才知道,其实看过《编程珠玑》的人,不是我想像的那么多。我也是在书架上乱翻才偶然看到《编程珠玑》。在 2005 年的时候,没有Web 2.0 和社会化推荐,我的世界,就只有面前的书架那么大,我幸运的在那么大的书架上遇到了几本经典书,并且细读了,吸收了。
很快,微软给了我一个在上海做测试的职位。 当时我一心要去北京,就不大喜欢上海这个职位,就没要这个 offer。不过有了这一轮,我也知道面试怎么回事了,这次面试,更加强化了我的自信,于是,我又开始比较狂妄了,觉得自己能进当时互联网中最热的,宣称招 50 个李开复博士的关门弟子的公司, Google 中国。
找工作还没全展开的时候,我就要准备考研报名了。我选择了北大生物系的生物信息学专业。其实这是一个让我可以到北京的小聪明,而不是一个全面慎重思考的结果。当时我看到,这个专业只招两个人,而且试题是和计算机系一样,于是我想,除了我这样的一门心思想去北京的,哪个人会绕这么大一个弯子去学生物而不去学计算机呢?其实我自己也不敢挑战计算机系,因为我知道难度太大了,但是我又很想到北京去,就想了这个暗度陈仓的办法。我当时还想, 考上了,要是不爽,读一年俺就退学找工作。2005 年末的大环境和现在是不一样的,那时候 Web 2.0 的呼声很高,让我觉得搞创业比读研有前途多了。 不管怎样,我自认为很小聪明,就报名了,当然考完才知道,就为了这两个名额,有40多个人来考。
我要感谢当时同系的两个同学苗文建和王琨,他们都是准备考北大计算机,即和我考同样的试卷。他们资料很全,我就和他们一起上自习,蹭他们的看。大四我买书花钱很快,到了考研这时候是真的舍不得花七,八十块钱买自己看不上的辅导材料和教材,所以就借他的看。那时候考研的教材是北大的 《操作系统》和 《离散数学》。其中操作系统的教材,行家都知道这本教材参考了不少 Tanenbaum 的,我也看过 Tanenbaum,就不大愿意再买一本。前面我提到过,我大一大二做过一本离散数学教材上所有的习题,所以离散数学我没化太多精力。至于政治,我是经历过3+X 高考的人, 基本上考过政治的人都知道,考好考差和复习不复习无关,至于和什么有关我就不在这里多说了,总之就那么几句话翻来倒去的,命题套路很容易掌握,比揣摩圣意的命题者更加聪明,对于受过大学教育的考生,是个很简单的事情。我最后成绩还不错,考了个专业总分第一,其中数学完全是离散数学的功底,考了个 136, 英语也是靠准备 GRE 托福的底子,考了差不多80。政治也差不多 80,专业课运气很好,正好 90 分搭线,就这样糊里糊涂的考上了。
考研这个事情,我至今觉得运气远大于真正的付出,结果也非常出乎我的预料。记得结果刚出来,同学帮我查分的时候,我根本不相信自己考这么好,还放话说如果考这么好,请全宿舍吃饭(我记得兜里面当时只有200块钱,根本没法请人吃饭,后来还是借钱请客的)。考研结果出来之后,迷茫的我得到了一个非常好的保底,我就比较得陇望蜀了。其实在当时我的心里,我并没有认真想过以后要具体干什么,只是隐隐约约觉得要不去北京,要不就去美国。有了北大这个机会,我就调高了自己的心理标杆,定下了两个大的,具体的目标,或者说是圣杯,一个是进 Google 中国, 一个是到美国名校读计算机,有了考研这个保底,在2月份过完年,我就不慌不忙的认真准备这两件事情了。
我10月份的时候给 Google 投了一份简历,很快在11月份就被拒了。 而我的搭档李获鼎在签了 IBM offer 的第二天,却收到了 Google 的面试邀请(我相信凭他的实力,如果晚一天签约, 现在就在 Google了)。我听了之后觉得很奇怪,按说我们两个,做的项目是一样的, 学得科目也一样的,写的简历互相也看过,都差不多的,我被拒了,他被邀请了,这个好像不大对。 我心里的不服气,反应在行动上,就是每天上网看 Google 中国最近又招了几个人,怎么招的。那时候互联网上盛传的故事是一个人给李开复用很多不同的邮箱发邮件,以保证简历能够万无一失到达,结果瞬间被录用了。这个故事的内容和合理性放在一边,我对故事主人公的精神很感兴趣。我觉得我也可以再试试,说不定坚持就是胜利。正好那个时候,Google 的一些副总裁到北大有个宣讲活动, 说好了现场接受简历的。 我从当时在北大的女友那里得到了这个消息,回来把简历梳理了一下,让她帮打出来,又交了一次。这一次,简历直接交给了某个副总裁,成功了!几周后,HR 就给我打电话,安排机票和宾馆,让我去 Google 面试。
面试的过程平淡无奇,题目不是《编程珠玑》上的,就是《计算机程序设计艺术》上的,再不然就是网上贴出来的。我个人感觉,面试题就那么多,多做做基本上就了然于胸了。我从找工作一开始,就做了个有心人,每天都上网看面试题。这次面试前,我又把《编程珠玑》这些书复习了一遍。同时我知道自己在面向对象编程方面很欠缺,又看到有面试过的人说面向对象也考,就顺带看了《设计模式》。我还比较有心,花了几个晚上,捣鼓了一个移植于 Mac 的,基于 MVC 的可以当场演示的 Java 小游戏,面试当天我还给面试官演示了这个小游戏的架构和用到的设计模式,这样,我感觉,自己面向对象开发方面的弱点就让这个小游戏的演示给弥补了,面试官也一致说好玩。 很快,四轮面试就结束后, HR 把我带着去见李开复。李开复博士是个风趣的,或者说很善于观察人的人。他见到我的第一句话竟然是半调侃的 “小伙子, 我们 Google 不能解决北京户口啊”,我承认当时的确穿得很民工,因为网上说Google 是个很随意的公司,我是继续以凉鞋装备和鸟巢一样的头发去面试的。我也做了一些功课,所以谈话总的来说还比较和谐。说了一会儿后,我就抛出了为什么 Google 拒我一次又让我再面试这个问题,他说这事情还很罕见,要是我再网申,基本上简历是不可能的浮出水面的, 因为数据库里面已经有标记了,不过我这样二进宫算是精神可嘉。这时候我才回忆起面试的一个MM手上拿的简历,的确是我第二次提交书面简历的复印件,而不是网申的打印版,可见还是坚持再投一次好。(这个坚持,我也是和搭档李获鼎学到的, IBM 二面就有拒他的意思, 他要求 HR 再给一次终面的机会,终面刚结束,HR 就和他握手恭喜他加入 IBM 了,所以面试这个事情,坚持到最后的才是胜利者)。 当天和李开复谈完出来,HR 冲我笑笑,握握手,说,就你和他谈得时间最长。我基本上知道, 这个事情成了。
出国的事情也没闲。我觉得直接靠寄材料申请计算机希望渺茫(我先前直接申请了几家数学和计算机,都是拒信飞飞),所以我就押宝在套磁上。另外,我觉得得弄篇论文才能让材料有分量,就回忆以前乱读的一些论文,再找看有没有最新的值得跟的工作。就这样不着边际的乱找,还真的就碰到了一个感兴趣的题目,一个不大成熟的想法,和一个正在征稿的会议。于是,迅速的写论文。凭着数学功底,编程功底,和 LaTeX 熟练程度,几天敲玩了文章主要部分,然后就是不断的改,不断的语法检查,写程序,做实验。总的来说我运气很好,7天之后,压着截至日期,把文章交出去了。 2006 年的 LNCS 还是被 SCI-E 索引的,那时候我觉得自己一个本科生独立弄篇论文还是挺不容易的,很得意,于是拿着新的简历,一边准备考研,一边套磁。
我现在的导师 Yixin Chen 是一个非常杰出的年轻教授(科大少年班出身),我和他套磁的时候,他是刚刚从事教职,因此很需要学生。我之前也发了几封信,到了 4.15 左右的时候,他的另一个原来录取的学生因为某些原因去不了了,所谓就和我说,我可以过来。 那时候我还在等 Google 的 offer, 我的导师说, “Google 的 offer 不难,你读了书以后可以拿美国 Google 的 offer ,我也拿过。而来美国读书的机会就这么一次”。 那时候我想问题并没有现在这么深刻,加上比较想去北京,因此一直犹豫不决,还在催 Google 的 HR 快发 offer, 心想你们哪个 offer 先到我就从了哪个算了。我爸爸,我叔叔都不含糊,一个一个的轮番教育我。然后加上我导师说了上面这番话,我就毫不犹豫的答应了,说我一定过去。于是,我告诉 Google 的 HR, 我不去了。 就这样,我所有的自己认真谋划认真准备的路都没有走, 反而最后通过误打误撞和套磁的路,选择了美国。
其他闲话
总的来说,面试也好,考研也好,写论文写好,之所以能够比较顺利,我觉得都是大一大二一个键一个键敲出来的,也是大三一本书一本书读出来的。我写这篇文章的时候, 把相关的前因后果放到了一起,是为了解释有些事情的前因后果。 不过我不想给读者一个误解,即我恰好运气特别好,一路直行没有任何弯路。相反,我觉得我走了不少弯路,但是我很高兴走这些弯路。比如说,我上大学的时候,很多精力花在了做数论题上,《现代数论经典引论》这本书的习题我差不多一题一题都做完了,但是我出国申请学习数论没拿到中意的 offer, 现在也不从事相关的研究,所以这些积累至今没看到有什么直接的作用;我一度认为自己要做一个电子工程师,我大一大二还旁听了电子系的模拟电路,数字电路,还混到电子系实验室学 ARM 开发板,但是现在这些除了吹牛外也没什么作用,学到的一点皮毛也还给老师了。我是个兴趣很广泛的人,看过的杂书,做过的笔记,最后有用的,我觉得有十分之一就已经很好了。大学的时候,为了让自己精力不耗散,我限定自己每次借书,一定要保证四本计算机/数学,外带一本社科人文书,还有一本任意的书,而且那四本一定要做笔记精读。因为这样,我才能够最终没把有限的人生耗费在无限的浅尝辄止上。
即便这样,如果纯按照现在需要的知识看,我在“没用” 的东西上浪费的时间还是很多。不过我倒不愿意称这些为浪费, 在我看来,成长路径中有很多的偶然,没人知道在一些关键时候需要什么样的知识储备,所以踏实地多储备一些是好事。我在大四的经历和其他的一些经历都告诉我,以前通过看书,自学,彻底的弄懂的一件知识,会在某个不经意的时候,突然被用到。这时候对当年积累的庆幸和再发现的快乐,就像蓦然回首见到灯火阑珊处的秋水美人一样,是没法用文字描绘的。另外,我有个切身的教训,就是要踏实的积累。我读书涉猎很广,很多东西我都能大概知道怎么回事,但是就是学得不深刻,所以即使当时花了很多力气,需要的时候还要花大功夫重头捡起。 所以我的教训就是,与其两个半瓶水,不如一个满瓶水。 这个道理用在读书上就是说,一本好书读两次要胜过两本好书各读一次。要是大学能重新来过一次,我会少读一些书,多读透一些书,这可能是我觉得当年猛读书的唯一遗憾。
小时候我嗜书如命,我爸爸老是担心我会成为一个不懂人事的书呆子。大学中的我,几乎天天泡在图书馆,可以说是个不折不扣的书呆子。其实除了读书外,我的大学生活的其他方面也是很快乐的。我有非常玩得好的同学们;靠着帅哥室友们的魅力,我还常常和他们一起,和联谊寝室那些青春活泼的姑娘们打球,打牌。我还谈了一次恋爱,让我对感情的事情有了深刻的认识,这些事情,交替的穿插在我这个书呆子平淡无华的大学四年,让我的大学生活如此美好,但这些细碎的星星点点的人生经历,都不足为外人道了。
我就在自学和读书,乱读和乱逛中,过完了我的四年。博文视点的编辑和我约稿的时候,我就已经读了这个系列其他作者的一些文章, 很多作者都写了我没有的很多经历,很让我羡慕。自学和积累始终是我大学的一条主线,我也写不好那些支线的事情,因此文章平淡少趣味,只希望读者海涵了。我是个不合格的学生,我差不多忘了不少任课老师,忘了我的学号,忘了班上不少美丽的女同学的样子,却没有忘记某个夏天的中午,汗流浃背的我冲进图书馆,跳入一阵凉爽的书香;以及某个春天,我在草坪上读书入了迷,喷水龙头把我后背全打湿了还浑然不觉。这就是我的大学。