医学跨考计算机研究生10周年

一. 背景

1.1 跨考路漫漫,文体两开花

2004年6月,高考惨败,以100分之差去了与中科大只有一字之差、一街之隔的医科大。在宣读完“健康所系,性命相托”的圣神誓言后,我成为了一名光荣的医学生。学医3年后,明白了“日久生情”是对人而言的,对医学知识,我始终未能产生兴趣,总觉得“卫主任”不如“卫工”听的顺耳。

2007年10月,在只学过《医用高等数学》和《三级网络技术》的前提下开始准备跨考计算机系。我本科是双非的安医大,目标院校为双一流的中科大,未考虑过第2志愿。选择中科大,因为她是名校,更看重的是学生的实力,不会有太多暗箱操作;同时作为合肥人,一直觉得科大是最好的学校,并不比清北差,选择科大也是为了圆高中时的梦想。

2009年4月28日,导师在《硕士研究生录取意向书》签字,标志着我跨考计算机研究生的成功,为一年半的努力画上了圆满的句号。从此,我正式放弃学医,翻开了新的篇章,开始踏上计算机的不归路。

掐指一算,距今已经整整10年了,曾经的小鲜肉变成了老腊肉,还把自己的肚子搞大了。10年间,移动互联网从无到有,大数据、云计算、人工智能等各种概念被热炒,一夜暴富的神话在“标题党”媒体上层出不穷,“高薪”也成了很多人对互联网的第一印象。

也许你也怀揣着“高薪”或“改变世界”的梦想,无奈所学专业与计算机毫无关系,跨考计算机成了“抢银行”之外的不二选择。知乎上每天都有人问跨考计算机的问题,即使互联网的“优化”潮也丝毫未能阻挡同学们想成为码农的热情。于是,计算机类的考研在2019年彻底爆炸了。

跨考的过程是辛苦和寂寞的,路上会碰到很多小怪,你需要不断地打怪升级才有机会遇到并“打败”最后的大boss,该如何打败小怪?即使跨考成功,比起科班出身的同学,跨考生在理论知识和编程实战上都是有欠缺的,读研阶段应该如何弥补?

10年间,计算机考研408的课程没有任何变化,本文将会结合我的跨考经验提出一些建议;此外,本文还将介绍我在读研时干过的一些事,结合校招对学生的能力要求,建议读研期间该弥补哪些知识,希望能帮助读者在备考和读研时少走点弯路。

1.2 太监非我意,莞式服务好

2017年5月初,在公司享受带薪大便时,在知乎回答了一个关于跨专业考计算机研究生的问题,花9个月时间准备跨考计算机来得及吗。手机回复的答案不完整,原打算之后用电脑补充的,因为手部手术手术不久,打字不便,工作繁忙,加之自己的懒惰,一直未做补充。于是在知乎的第一个正经回答就这样太监了。。。

2018年10月底,为了兑现之前的补充回答的承诺,乘着颈椎病稍有好转,在知乎写了第一篇文章《野生的码农“养成记 - 写作计划》,给自己立了个flag,列出了将在2019年春节之前的写作计划,列出了7个标题。由于公司的项目变动,需要精力去学全新的技术,所以又太监了。。。

2019年1月底,微信年会后的2天,被深深地刺激了,我在申请了3年之久的公众号“野生的码农”写下了第一篇文章《千里之行,始于足下》,打算持续分享一些关于考研、出国、就业的文章。年后,因为自己的工作变动,写作计划再次太监。。。

人在江湖,身不由己。尤其是工作以后,你会发现,计划永远赶不上变化,唯一不变的就是变化了,某公司甚至把“拥抱变化”当成了企业文化。“日后再说”的flag立的太多了,就和大学的“首届XXX”一样没有下届了。

嘴炮误国,实干兴邦!不立flag了,直接搞,本文将遵循东莞ISO一条龙标准,为读者系统全面介绍跨考计算机从准备到读研的全过程。文中还会分享我这10年的一些得失和心态变化,以供想进入IT行业的同学参考,也算是对我自己这10年的一个总结吧。

文中观点都是我个人的主观意识,与我的家人、朋友、导师、同事、雇主公司没有一毛钱的关系。

另外:本文不会介绍任何科研相关的内容,研究方向千千万,我的研究经验也不足,为免贻笑大方,还是不写了。

1.3 我幸福吗?

你肯定会有疑问,刚才还在飙车,为何突然抛出一个哲学问题?因为跨考计算机并不难,读研也只需3年,而工作却长达30年,如果工作的不开心,你一定不会幸福。否则,代码写不下去,只能回家继承数亿资产,这是多么让人绝望的事!

当兴趣成为工作,能为你带来丰厚的物质回报时,是一件非常美好的事。研究生毕业后最想去的就是鹅厂,无奈碰到一个**面试官,话不投机半句多,最终去了狼厂。几经辗转还是来了鹅厂,工作近7年,赚了票子,娶了妻子,生了儿子,买了房子和车子。

看上去我很幸福,该有的都有了,但生活从来不是一帆风顺的,马哲有云:

事物发展是前进性和曲折性的统一

至今在帝都已经漂了7年了,遑遑三十三载,书剑两无成。目前仍然只是最底层的码农,随时有着被“优化”的可能,而很多同学/同事早已年薪百万;早10点,晚10点,到家都快11点了,直接洗洗睡,周末宅在家里看书或者睡觉;目光短浅,错过房市,拒绝了现在价值千万的offer来了鹅厂;背着巨额房贷,纵使工作中时常不如意,亦不敢有丝毫怠慢;漫漫长夜,经常半夜醒来,不知道35岁以后的出路在哪里;京城户口遥遥无期,孩子在老家,错过了他的成长,这是我永远也弥补不了的遗憾。

你肯定会觉得,这是一个典型的loser在自怨自艾:自己能力不够,又不努力,导致一事无成;目光短浅,放弃了财富增长的机会;又不愿离开帝都,和家人团聚,换种生活方式。

我承认我是个loser,但坚决否认这是因为我的能力不够或者不努力,跨考成功和“优秀员工”也许可以证明。世俗意义上的成功人士,标准只有2个:有钱或有权。工作几年来,随着阅历的增长,或者说看的开了,我坚信成功更多的是靠运气,与努力的关系并不大,正所谓:

一命二运三风水,四积阴德五读书,六名七相八敬神,九交贵人十养生

最好的例子就是QQ和微信的员工了,在跳槽时,微信员工的工资涨幅是远高于QQ的。即使在公司内部,待遇差距之大也是吓死人的(我猜的,HR别来啃我)。这两个团队的员工能力和努力程度几乎没有差别,造成这种差异最大的原因就是运气,长者也给我们总结过人生经验:

一个人的命运,当然要靠自我奋斗,但也要考虑到历史的进程

这里并不是否定努力,如果不努力,根本就不可能成功。只是想说,结果固然重要,但不要把结果当成检验努力与否的唯一标准。全力以赴做好自己的事情,至于结果如何,交给命运来决定吧。工作如此,考研亦是如此,尽人事,听天命,当回忆这段经历时,能做到问心无愧就好。

所以,我幸福吗?按照世俗的有钱有权的标准来衡量,我是失败的,幸福更是无从谈起。但是,我目前做的是自己喜欢的事,收入足以养活一家老小,家庭和睦,婚姻美满,儿子活泼可爱,父母健康,从这个角度来看,我觉得我是幸福的。

纵使现在的工作时常有不如意的地方,我也从未后悔通过跨专业考研进入IT这行。相对来说,这行还是很公平的,我们是靠手艺吃饭的,不用太担心收入的问题。只要能力够,此处不留爷,自有留爷处!这里的人际关系简单,没有那么多的条条框框,全靠本事吃饭,适合家境一般,缺少“关系”的同学。

虽然由于自己的目光短浅,错过了财富增值的机会,其实也没想象中那么遗憾。如果选择了千万offer,那个重要的晚上,我可能在加班,错过了啪啪啪,也就不会有现在这么可爱的儿子了;如果没来鹅厂,没有工作居住证,这辈子我大概都中不了北京车牌了;如果房子买的早,手里的闲钱投入股市,然后血本无归。

其实,无论做什么选择,将来都可能会后悔。我们在做抉择时,一定是基于当时的环境考虑的,我们没有上帝视角,无法做出全局最优选择,能做出局部最优的选择就是赢了。“事后诸葛亮,事前猪一样”的懊悔,除了增加自己的烦恼,没有任何意义。如果09年我不读研,把6000的学费全部换成比特币,现在肯定是财务自由了,也可能在美帝因为强奸被抓,反正是不会有这篇文章了。

我现在唯一的遗憾就是不在家人身边,对他们的陪伴太少。每次回去,儿子都长大许多,老婆因为带娃变的更瘦更憔悴了,父母的白发也越来越多了。居委会说我儿子是留守儿童,老婆也时常说,她是在丧偶式的育儿。错过了儿子的成长,真的是我这辈子都没法弥补的遗憾了。

读研时,我教过几期的计算机二级C语言,说实话,我挺喜欢当老师的,传道受业解惑所带来的成就感和满足感是一种享受。等我的房贷压力小点后,也许我会换种生活方式,可能会回老家当个老师,教什么不重要,重要的是能够教授学生知识、分享我的成长经历,同时也能更好地陪家人。当然,得有学校要我。。。

以上,是我目前的真是生活状态,如果想跨考计算机并进入IT行业,请慎重考虑一下这是否你想要的生活。

if(那都不是事){
    next("骚年,恭喜你过关了,请继续往下读!");
}else{
    exit("施主,你我缘分已尽,有缘江湖再见!");
}

二. 考研

2.1 为什么要跨考?

在正式开始准备之前,一定要想清楚,为什么要跨考计算机?是因为对所学专业没兴趣,还是当前专业就业不好?如果仅仅是为了“高薪”,那还是放弃吧,你考不上的,也拿不到高薪的。学计算机并不是为了修电脑,专业课程都是比较枯燥的,也牵涉不少数学的知识。如果没有浓厚的兴趣,肯定坚持不到最后的。

如果是对本专业没兴趣,又特别喜欢计算机的话,也并非一定要跨考。优先选择校内转计算机专业,比考研应该简单不少,越早越好,过了大二应该就很困难了;或者修计算机第2学位,先去小公司工作,在积累了一定的经验再去大公司也是可以的。

如果是对编程或黑客有着浓厚的兴趣,值得跨考一搏,但是玩电脑的兴趣和学计算机的兴趣是完全两码事。可以把统考的4门课程书籍都买回来瞅一眼,看看是否真的有耐心读下去,再说自己对计算机感兴趣。

如果无法换专业,或者想通过考研换个更好的学校,那就跨考吧。但是,跨校跨专业的考研并非一件简单的事,请给自己想好退路。万一失败了,是调剂还是再战?抑或是放弃考研,找个原专业相关的工作?

如果不打算读博,万一跨考失败,不建议三战、四战了。试想,如果硕士毕业时都快30了,正是结婚、成家需要钱的时候。而此时,刚毕业的你拿什么去成家立业?互联网行业是年轻人居多的地方,虽说996是少数**公司在瞎JB搞,但是995还是很常见的,在体力上,你可能就输了。

现在的互联网资源如此丰富,想在计算机行业做出一番成就,也并非跨考这一条路。顶级黑客妇科圣手tombkeeper也是安医大毕业的,现在是腾讯屈指可数的T5专家之一,他没有读过计算机研究生,凭着自己的努力和兴趣爱好,在安全领域做出了许多世界级的贡献。

所以,请想清楚你跨考的目的是什么?真的只有通过跨考才能实现这个目的吗?

2.2 目标院校的确定

目标院校依照个人喜好和实际情况而定,知乎上有很多关于考研时的黑名单和白名单的讨论,可自行搜索。我从就业的角度简单说下:

一般而言,知名公司在校招时优先去985院校和著名211院校进行校园宣讲,普通211都很少去,当然,你直接去参加笔试或投递简历还是可以的。肯定有人不服,说普通学校就一定比985差吗?未必,但是从概率上来讲,985的学生的综合素质确实比普通学校好很多。公司招人是为了去干活的,不是为了培养你的,肯定更喜欢可以直接上手的学生。从性价比的角度出发,肯定优先去知名学校了。

所以,建议尽量把目标设的高一些,至少211吧,最好是985院校。尽量报考自己能力可达的最好的学校,那样的话,即使没考好,调剂时还可以退而求其次。如果一开始就把目标设为考上就行,随便哪个学校,那你大概率是考不上的。当然,更不能好高骛远,设一个遥不可及的目标就没意义了。

跨校跨专业很难,如果再加上跨地区,那就更难了。所以,我把目标限制在了安徽,我对安徽的学校更了解,如果需要打听信息,直接去学校就行。没有选择安大与工大的原因是,我在高中时就没有把这两所学校作为目标,如果高考正常发挥,本科考这两所学校是绰绰有余的。所谓本科生是宝,硕士生是草,考研时就更不可能选择她们了。

我把目标设为了中科大,也是综合考虑了自己的水平的:数学基础薄弱,但我喜欢数学,数学一的课程自学起来很轻松;专业课0基础,但考研只考4门课,将近1年半的时间来准备,时间足够了。

在确定考科大之前给计算机系打了个电话,我问学医的能否报考,教学秘书说只要你有本事,欢迎报考,这也增加了我的信心。科大是我能力范围内的最好的学校了,如果把目标设为清华,这篇文章肯定是在分享失败的经验了。

2.3 初试

计算机考研是全国统考,网上也有一堆人分享高分经验,写的都很好,请自行查阅。像我这种几乎0基础的跨考比较少,分享也少,下面以课程在考研中的重要性递减,分享下我的经验:

2.3.1 数学

重中之重,数学是所有科目中最能拉开分数的,几乎决定了你能否考的上。我的建议是数学一定要提前准备,充分准备,如果你没有基础,更要提前准备,书上的概念务必全部搞懂并做完书后的全部习题。

我本科时只学过简单的《医用高等数学》,花了一个学期和一个寒假的时间才把数学一的4本书全部看完。我是把所有的课后习题都做了的,非常有收获,考研真题也不比习题难。当然,有些解题技巧还是需要在参考书上学,李永乐的复习全书就很好,我只看了一遍,时间不够。做真题时,基本都能提前30分钟完成,没有低于120的。

此外,数学最好做到笔耕不辍,即使考研后期的精力主要在ZZ(你应该能看懂吧)和英语上,数学的练习也不能落下。尤其是各种公式,务必做到能信手写来,光在在脑子里记得是没用的,写出来可能是错误百出。

我因为后期很少做数学题,有些公式只有大概的印象了,在考研中吃了大亏。考数学那天,起床时打算看看公式本里记的两个印象模糊的公式,又觉得看了会增加压力,忘了其他公式,遂未看。无巧不成书,试题中有2个价值30分的大题是要用那两个公式的,脑子顿时一片空白,最终数学只考了96分。

千万不要觉得公式记住了,概念清楚了,真题能提前做完拿高分,后期就可以不管数学了。线下做题时,公式记不清,可以花时间推导一下。真正考试时,因为心里压力,本来就模糊的公式可能会完全想不起来,更别提推导了。每天都要留点时间给数学,不一定是要做题,默写或推导公式都行。切记!切记!!

2.3.2 英语

英语的备考请参考其他大神的回答,我只想建议在大一、大二时就把四级和六级过了,这样不至于在大三准备考研时,还要分心去考四六级。另外,计算机专业英语就没必要去学了,至少考研用不上,即使有英语口语复试,也不会出现太难的词汇。

背单词这事因人而异吧,虽然我很努力的背了,直到考试时也还有一半不认识。但是我一点都不慌,语感结合上下文,也能蒙个八九不离十。优秀作文很有必要多背诵一些,考试时模仿高级句式来几句,分数自然不会低。

2.3.4 专业课

专业课是4门课在一张试卷上,考点多且杂,但考的并不难,也拉不开太大的差距。即使之前完全没接触过这些课程,一年的时间来准备也是足够的。这4门中最难的是数据结构,尤其是对没怎么写过程序的同学而言,有时即使知道算法原理,也会无从下手。建议在机器上多练练,多写点数据结构相关的算法。我当初就是因为只看书,从未在机器上写过,考研时的算法题没写出来。

虽然计算机统考408的课程只有4门,但其他课程最好也学习一下:

  1. C语言:必须要学习,不一定要熟练使用,至少数据结构中用C语言伪代码描述的算法要能看懂
  2. 离散数学:这门课很抽象,理解很困难,很多人都说它是计算机中最重要、最基础的课程。我没达到那个境界,至今尚未搞懂离散数学的重要性。很多学校的复试有《离散数学》的笔试,例如中科大、南大、哈工大。
  3. 编译原理:这门课讲述了纯文本的字符串是如何变成最终的二进制可执行程序的,也很晦涩难懂。无论将来从事客户端还是后端工作,掌握编译原理,是你升职加薪的重要法宝。中科大、南大、上交等复试会考。
  4. 数据库:这门课主要讲述关系型数据库的基本原理和SQL的写法,范式的介绍对设计数据库表具有一定的指导意义。现在客户端和后端开发都是要用到数据库的,也有学校的复试需要考。
  5. 软件工程:这门课偏重理论知识,把书翻一遍,知道一些概念就行。真正的软件开发与书中描述的场景,相去甚远,至少在中国是这样。

至于教材和参考书,参考高分大神们的建议就好。当然,大神们推荐的不一定是适合你的,毕竟大神们的基础和咱不一样,最好先下载电子版或去书店实际看一看。

其他的专业课程例如数字电路、模拟电路、计算机接口技术、单片机、多媒体技术等等,学有余力的情况下可以看看,初试和复试一般都不会考。

除此之外,必须熟练掌握一门编程语言,C、Java、Python都可以。编程能力是基础,如果连编程都不会,还谈什么考研。此处的熟练掌握是指能在机器上熟练地编写、编译、调试、运行程序,不是类似C语言考试那种给一段程序,问你输出结果是什么。

这么多课程,如何在一年多的时间内学完?有几种学习方式供君选择:

  1. 看书自学:这是最踏实的方式,经过自己思考后的知识,更容易理解,记忆会更深刻,但可能会抓不住重点。
  2. 跟着视频学:现在网上的视频资料很多,但质量层次不齐。看视频的好处是老师会对一些难点、重点做更多的讲解,加深记忆;坏处就是缺少自己的思考,老师讲的都懂,做题却不会。
  3. 计算机系旁听:因为是面向本科基础教育,老师循序渐进的讲述课本内容。很多时候都会觉得讲课进度太慢,不如自己看书或看视频。好处是碰到不懂的地方可以向老师请教。

这几种方式并不是互斥的,可以根据自身的喜好或课程的特点自由组合。我当时基本都是看书自学的,因为我校没有计算机系,偶尔去农大旁听计算机课程,没看过视频。我旁听的课程很杂:接口技术、数据结构、多媒体技术、51单片机、编译原理、软件工程、操作系统、人工智能等等。都是断断续续去听的,效果很一般,很多课程听了几次就放弃了,感觉是浪费时间。

我旁听的第一节课是大三的接口技术,这门课的许老师给我留下了极其深刻的印象:惊人的记忆力,漂亮的粉笔字,授课风趣幽默,把很多段子和课本内容结合起来。许老师改变了我对大学老师照本宣科的印象,我后来教二级C语言时也采用了类似的方式,让学生在笑声中记住枯燥的知识。可能有人说我是在哗众取宠,这不重要,重要的是学生学到了知识。

为了检验自己的专业课掌握程度,可以报考计算机四级、程序员、软件设计师,这3个资格考试内容和考研很像,甚至更多一些。拿证不是目的,这些证书也没任何卵用,唯一的目的就是考察自己是否真的学懂了课本上的知识并灵(yin)活(fu)运(kao)用(shi)。

2.3.5 ZZ

这个没啥好说的,大家都懂。前期基本不需要花时间去看,最后3、4个月时开始看都来得及。考试时把记得的内容都写上,分数不会太低,就酱。

2.3.6 关于压力

跨考的路程是孤独的,在碰到搞不定的问题时,都找不到同学和你交流;同学、老师、亲人也可能对自己的选择不解,指指点点;在自己迷茫时,也不禁会怀疑跨考的选择是否正确,感觉坚持不下去了,又找不到人诉说,无形之中都会形成压力。

考研前,我几乎碰到枕头就能睡着。然而,考研时我失眠了大半年,每晚都要到凌晨3、4点才能睡着。考研结束当晚,立刻恢复了往日的沾枕就着的雄风了。。。

失眠是因为压力大吗?我不知道,当时真没感觉到压力,只是每晚入睡时总是在想着:“今晚一定要睡着,否则明天的复习任务又完不成了”。每天早上,室友7点不到就起床去看书了,我得9点才能爬起来,头都是晕乎乎的。失眠时想睡着的心理暗示无形之中也是一种压力吧,考研后再也不用早起,暗示消失,自然也就睡着了。

所以,压力一定会有的,用你喜欢的方式去缓解吧。

2.3.7 本专业课程怎么办?

考研一般在大三开始准备,此时也正是本专业课最多的时候,考研和专业课同时进行,该如何分配时间?这是个因人而异的问题,如果点名,那就去上,课堂上做你自己的事就好了。要是不点名的话。。。

至于考试嘛,大学的考试一般都不会太难,考试前1个月准备下,考个及格问题还是不大的。实在不行,那就八仙过海各显神通吧,你懂的。完全没必要把本专业课和跨考相对立,挂科你可能就没有学位证了,只有拿到两证,你才有资格去读研。

2.3.8 辅导班要不要报?

个人觉得,辅导班更多的是个心理安慰,觉得周围人都报了,他们能比我知道更多的解题技巧。现在网络资源如此丰富,还有大神分享自己的学习心得,比上辅导班好的多。如果你是想通过辅导班多认识一些考友,那可以报一个,在撑不住时,互相打气。

我当年报了ZZ和数学的辅导班,实话说,完全是浪费生命。尤其是ZZ,完全照本宣科,还是远程视频授课,远不如自己看视频。后来的冲刺班,我压根就没再去了,钱已经浪费了,不能再浪费时间了。

数学辅导班按理说会有点用,但是当把书上的概念真的弄懂以后,你会发现老师讲的东西不过尔尔,解题技巧在辅导书上也都能找到。而且是几百人的大教室,夏天空调也不给力,效果很差。我在某次感冒后,再也没去过了,即使后面还有一大半的课程没去听。

2.4 复试

我当年的情况是:120人参加复试,录取80人,我的初试成绩排名在100之外。但复试的成绩挺好,前进了40多名,成功入围。

复试形式每个学校都不相同,但一般都是以下内容:

2.4.1 笔试

每个学校复试时的笔试科目不尽相同,在确定目标院校时就要打听清楚复试的笔试需要考什么。准备初试时就要花时间看看,否则当初试成绩下来后再准备,如果之前完全没看过的话,肯定是来不及的。

考研复试的往年真题不太容易搞到,有个小技巧,校内的复印店,一般都有卖本科生往年的期中、期末考试题。考研复试时的题目很多都是出自本科生的试题,甚至原题,连参数都不带改的。

2.4.2 机试

多联系往届的师兄师姐,能套出一些真题甚至答案。初试通过后,立刻开始在机器上练习,没有其他选择!

2.4.3 面试

我事先不知道会有英语面试,完全没有准备,有位老师突然来了句英语,我说听不懂。他用汉语重复了下,我英语磕磕碰碰地说了两句后,最终还是用汉语回答了。感谢老师的不杀之恩。。。

面试时一定要坦承:为什么要跨考?计算机专业课的欠缺将来如何弥补?不要说“虽然我基础差,但是我愿意学”之类的空话,要给出切实可行的计划。

我们当年复试主要看笔试和机试成绩,所以面试基本是走过场。我唯一能给的建议就是把准备下英文的自我介绍和可能碰到的问题吧。

2.4.4 联系导师

我在复试通过后才联系导师的,因为我初试分数垫底,如果复试前联系,导师肯定不会搭理我,尤其像我这种大尺度跨专业的。如果你的初试分数尚可,可以尝试提前联系,跨专业能考这么好的成绩,导师也许会刮目相看。

无论何时联系,建议先在学校官网或找师兄师姐打听下导师的研究方向,也算是知己知彼吧。

很多跨考生都担心的问题是:

导师会歧视跨考生吗?

说没歧视,那是自欺欺人。在同等条件下,导师肯定优先录取本专业的学生,这是人之常情。如果你的综合素质远高于本专业的学生,导师没理由把你刷了。与其担心是否歧视,还不如利用瞎操心的时间提高自身能力。

三. 读研

跨考生由于本科的许多课程未学过,即使考研的几门课也都是突击学习的,难免有些知识是靠死记硬背记下来的。所以,需要在读研阶段好好弥补一下,否则就像空中楼阁一样,迟早有倒塌的那天。

以互联网就业为目的,结合我读研时干的一些正确和错误的事,为打算硕士毕业后就工作的同学提几点建议吧:

3.1 提高编程能力

编程能力包括算法和实际工程经验,如果有实际的项目经验,会加分。前提是,这个项目真的是你做的,而且对项目中用到的技术了如指掌;否则就是减分项,因为面试官会觉得你做事太过浮于表面,对深层次的原理并不了解。

算法就不用解释了,面试时必考,没事时去LeetCode刷刷题,对将来找工作帮助巨大。但是,也不必过于迷恋算法,实际工作中,更多的是实现业务需求,真正用到算法的地方其实并不多,至少客户端开发是这样。

切记,不要觉得书都能看懂,就是不想动手写。我当初把《C++ Primer》看了2遍,记下了很多概念,但是从未写过一行C++代码,导致我到现在也不会写C++。与之相反的是,Android刚出来不久,我在看了2天书之后,直接开始动手写程序,学习的速度反而快很多很多。

因为大学时热衷于诺基亚的Symbian系统,所以想毕业后从事移动客户端开发。读研时,独立开发过Android和WP7平台的4个程序和可运行于创新MP4的2个Lua程序。尤其是在开发QDict时,为了破解MDict词库格式的加密算法,和大师兄熬了一个通宵,搞定之后的满足感和成就感是我工作以后再也没有体会到的。遗憾的是,由于论文压力,没有再继续维护了。

面试时,我带上程序,和面试官讲述了艰辛的开发过程以及网友的大量好评,虽然不知是否打动了面试官,至少也是证明了自己的工程能力,校招时拿了几个offer,最终去了狼厂。

3.2 恶补基础知识

编程能力固然重要,基础知识更重要,工作中碰到的很多问题,基本都可以在书本上找到答案。因为跨考时间不够,很多知识看似懂了,其实是一知半解的。读研时如果有时间,最好再深入学习一番,这对将来校招的笔试也是有很大帮助的。

基础知识包括但不限于以下内容:

  1. 计算机网络:例如《自顶向下的计算机网络》和《HTTP权威指南》都是不错的书,《TCP/IP详解》据说也不错,我买过,但一直在吃灰。TCP、HTTP是工作后用到最多的协议,务必熟练掌握。
  2. 编译、链接:现代编译器干了太多的事,以致我们模糊了编译和链接的界限。《程序员的自我修养》和《深入理解计算机系统》(英文简称CSAPP)是两本非常好的介绍编译、链接、装载等知识的书,详细介绍了字符形式源代码是如何变成二进制可执行程序,又是如何被计算机加载后运行的。
  3. Linux相关:这几年,Android的兴起对Linux的普及起到了重要的作用。建议日常多用用Linux操作系统,熟悉一下常见的命令行操作。可以在安卓手机上安装个Termux玩玩,很多Linux命令都有对应的Termux版本。

以上知识,是客户端、后端、前端、AI等方向的工作中都要用到的,所以,平时有空时就多看看,不要等到面试时临时抱佛脚。

我当初就犯了大错,以为有实际的App开发经验,这些基础知识就不需要了,我甚至连HTTPS的原理都不懂,导致阿里的初面都没过。App开发经验只是锦上添花,算法和基础知识才是决定你能否面试通过的关键。

四. 后记

罗里吧嗦地写了好几天,原本写了很多细节,感觉跟文章关系不大,又删掉了。有不对的地方,欢迎批评指正,请多多包涵。感谢您的收看,希望本文对跨考生有所帮助。

你可能感兴趣的:(医学跨考计算机研究生10周年)