在牛剑offer学霸风采访谈专题中,成功斩获英国G5大学offer的学长学姐们将娓娓道来他们的名校申请之路,回忆申请所涉及的专业方向选择、大学学院选择、笔试、PS、面试等等各环节的种种坎坷,激励学弟学妹们冲击梦想中的世界TOP大学。
大家好我是Jacob,很荣幸这次能获得剑桥大学计算机科学offer。
我从小就非常喜爱计算机,平时的兴趣爱好就是写代码,基本上不太读小说而是喜欢研读关于数学的书籍。我也是学校计算机社的重要成员之一。在计算机社团会学到比课内难度更深一些的计算机知识,还会涉及比赛内容,类似于拓展小组讨论的形式沟通学术,是我觉得非常好的学习方法。我个人比较宅,偶尔打打网球、玩一点游戏。
01 我推荐的计算机编程语言
我擅长使用很多计算机语言,其中最主要的是C++ 和Python,这两种语言是我使用时间最长的。C++是由C延伸而来的,我3年级开始学的第一门语言就是C,学了两年之后转到了C++,在C的基础上学习C++相对轻松许多,编程语言很大程度上是要看熟练度的,足够长的时间和经验累计使C++成为我的主力语言。
Python的定位是一个相对容易上手操作的编程语言。我喜欢Python是因为Python有很多的库,可以直接调用别人写的非常好的代码,不需要去过分钻研原本不需要钻研的东西。当代计算机里面一个观念是:“如何去共享你的东西,不要重复造轮子,别人做过的东西自己能直接拿过来用,就不要自己再去试图创造”,Python很好地体现了这个思维。
02 我喜欢上计算机的契机
记得还是小学3年级的时候,当时我的数学很好,我们信息课老师问我:“你水平挺好的,要不来编程队看看?”,自此就被选进了编程校队。开始学之后,发现自己还蛮喜欢的,一晃就很多年过去了。
在时代背景下,计算机就是二十一世纪的黄金资源。我一直很喜欢使用电脑,但我没有那么喜欢纯数学,我希望接触应用方面的内容。纯数学太理论了,看不见摸不到,我会不知道它真正的意义在哪里。可是脱离理论的实践是不可行的,打好理论基础之后再看如何应用。
03 纵使艰难也要遵从内心
我是学计算机的学生,一直对数据很敏感。为了确定未来的专业,我到大学官网上查了许多录取相关数据信息,剑桥计算机专业果然竞争异常激烈,然而思索片刻,还是决定相信自己的能力。因为我不会想学一个我无法喜欢上的科目,这对我来说太煎熬了。如果我不喜欢一门学科的话,我是根本学不进去的,学习的效果也会大打折扣。
04 计算机学习的关键
我对于计算机方面的建议和对英语学习的建议差不多,我计算机的学术能力就是大量的时间和精力堆积出来的。只要你稍微有那么一点点的天赋,任意一个学科花那么多时间都能够达到这个实力。我对于计算机科学的认知不只是一门值得钻研的学科,我其实把它看作是我生活的一部分。我会经常用电脑去看我自己喜欢的东西,会自发地引导我充分运用python去实现功能。 对于遇到不熟悉的领域,如何熟练掌握使用搜索引擎是比较重要的。
没有外网就用必应。如果我想要这一类型的板块内容,学术类型就可以去到Google/Wikipedia/Official Documentation。如果是比较实践方面的编程,我会去StackOverflow/StackExchange这种网站。也可以尝试在网站上发布一个问题,如果有比较了解这方面的学者看见的就会回答,这个网站也会告诉你回答问题的人大概水平是怎么样的,比较便于判断他对于这个问题的见解到底值不值得借鉴,有没有权威性。
05 将来的一切还是未知 基础扎实才是关键
如果是别的学科我现在应该已经认真考虑完了,但是计算机这个领域变化太快,很难预测到五年后最热的领域是什么。我目前还没有达到能够预测的高度,所以我还是要去学习一下,拓宽一下自己的视野,才能更好地判断之后热的会是什么。对于剑桥大学我一直都有一种莫名的好感,没有特别的东西让我去喜欢,但对剑桥就会一直有一些偏向性。
可能和我爸妈带我出去旅游有关,当时剑桥给我留下的印象会比牛津好一些。所以当时问我剑桥还是牛津的时候,我果断就说剑桥,牛津剑桥区别不大, 不值得花太多时间思考两者选哪个。而剑桥和IC相比的话,剑桥偏向理论,IC偏向实践,我认为在本科阶段偏理论一点是没有问题的,还是要打好基础再开始实践。
06 竞赛并不简单 学科之间都有联系
小学的时候,小升初的竞争非常激烈,自此就开始打竞赛了。当时只有奥数竞赛和计算机竞赛就参加了,从此以后就一直在参加竞赛,初中增加了物理。我一直比较看重竞赛,也比较喜欢参加竞赛,课内的知识对于我而言会一点乏味,参加竞赛会增添一丝趣味性。 关于多学科的问题,我一直是比较综合性的。我是体制内出来的,我深深地感受到了单学科竞赛的人压力有多大,但是在时间上又几乎不可能有人成功的去同时打两门或者多门竞赛并取得成绩,于是我一直比较注重权益。
到体制外之后,我也是一直在参加竞赛。本来是参加物理、数学、计算机三门竞赛的,申请剑桥的时候就是这三门,当时我就在学化学,抱着一个考着玩的心态又参加了化学的竞赛,没想到考的还不错。我特别喜欢学科之间联系起来,计算机和别的学科联动时,他能做很多独一无二的贡献,而没有计算机的时候,物理和化学也都会变得举步维艰。
07 关于我的计算机竞赛心得
计算机竞赛,高中的时候我打了两个,一个是ACSL,另外一个是OUCC。那一年ACSL拿到了全国第一名,OUCC分两轮,第一轮拿到的了全国第一,第二轮稍微有点失常,拿了全国第三,就差了几分。 ACSL这个竞赛分两个板块,一个是理论,就是真正的数学题,另外一个板块就是写程序,它会给你一个task,让你写一个程序来解决它。第一个板块理论部分一定要认真学,这一部分占的比分很重,可以多刷刷真题,题目类型的重合率相对比较高。
另一个板块我是依靠长期积累的,8年来一直在写程序。参加过这两年的比赛之后我发现ACSL这个竞赛没有那么看重高端算法,反而是看你的代码实现能力,基本上都是在“模拟”,这是在竞赛编程里面比较低级的一个方法,题目说让你干什么你就干什么。它对于算法要求没有那么高,反而它的模拟是有难度的,会要求你对编程语言、计算机思维的掌握比较严格。一定要选择自己熟悉的编程语言,不推荐为了专门为比赛学一门语言(它们都支持绝大多数主流语言)。
如果是我的话,我最推荐的是Python。竞赛的条件下,你需要在尽短的时间内去达成尽可能高的达成这道题目要求,Python的特点就是代码短,有很多内置函数帮助你去解决问题,不用费尽心思去写很多已经写好的东西。
08 Project不能好高骛远
我喜欢自己做点小软件,以前写过自动解扫雷的AI,还有一个贪吃蛇的AI,这两个都是我自发做的,没有导师的参与。我不是喜欢去做太大的比如人脸识别这种东西,因为我知道我自己一个人是做不出来的,肯定需要大量的使用别人代码和别人的数据库,对于我自己的水平并没有任何提升,于是就没有去做那种项目。如果一定要做一个很大的项目, 要强迫自己搭出项目的框架, 而不是直接把导师的代码当填空题做。
09 我是如何构思PS的?
我一直不怎么会花式写作文,于是我就写了最传统的时间顺序。第一段是3年级怎么开始学习计算机的,第二段写的扫雷和贪吃蛇,扫雷写得很短,贪吃蛇用到了真正意义上的深度学习,所以详细介绍了一下,再之后一段就是在讲我的奖项,最后总结了一下。在拿到面试邀请这件事情上,PS是至关重要的。但是我面试的时候并没有问到任何关于我的ps,上来就是做题。
10 TMUA笔试心得
TMUA这个考试更多还是看熟练度、准确率。我在准确率这个方面并不是很强——我做题非常快但是准确率比较低,导致我需要去克服本能去慢下来,多运算几遍,用不同的方式运算。TMUA是2个Section, 每个Section 75min, 20道选择题, 时间上我觉得不是很紧张。TMUA的基础是P1, P3, FP1, 一定要学好; FP2学了一些的话也有帮助。
11 选择学院我还是求稳
我由于申请了怡和奖学金, 只能申请Trinity, Peterhouse, Magdalene和Downing这四个学院. 由于我求稳, 而且Trinity的计算机的难度太高了, 再加上我有个伙伴在Magdalene, 所以我就也申请了猫院。
12 我的面试试炼
我是紧接着的两场面试,二十五分钟一场。面试官很威严,能看出来他有努力让自己变得没有那么吓人,尽可能的让自己变得和蔼可亲。另外一场是一个女老师,比较好说话一点。两场面试基本上都是一个大题,第一场面试是直接给了我一个一个NFA的指令集, 和我们平常使用的计算机有相当大的不同,让我设计一个非常basic的一个程序实现两个数的乘法。因为我个人写过汇编,而且题目和汇编是同一个抽象层级的,所以我就直接使用了我在汇编上的经验。第二场面试是非常常规的数学题,一道数列题目,没有直接考计算机编程等相关的知识,我半开玩笑地说我觉得用计算机的方式解题更方便一些。第一场面试其实本质上是计算机编程,但是第二场就是纯数学题。
差点以为与Offer失之交臂 当天在做我自己的事情,邮件挂在后台。College干了一件非常“伤天害理”的事情,下午五点的时候,发了封邮件说“我们开始发offer了,你就等着吧”。刚开始一两个小时,还在认真地等,期间看到其他同学已经拿到了,我会很紧张,越想越慌。我父母也都没睡,跟我一起等,到最后决定索性不让自己慌了,“干点别的好了”这样安慰自己。最后在晚上十一点半收到了,收到的时候还是难掩内心的喜悦。从开始通知到收实际到offer其实足足过了人生中非常漫长的六个小时。
如果你要申请计算机科学专业,你需要明白两点:
第一、计算机科学的本来就申请风险非常大。我挖掘了一些数据,计算机的录取率是8%~9%,别的学科都是十几%以上,计算机的录取率是别的学科1/2,所以一定要对自己能力很有信心才可以。
第二、要弄清楚自己喜欢的是计算机而不是别的。很多人认为自己喜欢的是计算机科学,但其实他们真正喜欢的并不是计算机科学。比如如果你只喜欢写代码,不喜欢研究数学,建议申请电子信息工程或者电子电气工程,这两个专业其实教的编程不比计算机科学少。
很多人认为计算机科学就是写程序,但其实计算机科学是一门很理论的学科,里面有很多数学和设计的思维。如果你是一个喜欢实践的一个人,就是纯实践而言的话,申请工程比较好。不要想得太超前,在笔试的时候不要去想面试,在面试的时候不要去想offer,干什么的时候就专心的只想这件事情。
如果你的英语水平比较优异,等你笔试结束再想面试时间是足够的。如果要提前考的前提就是你有信心考A*,可以提前考一个无关紧要的科目。