以上就是我的基本信息。我主攻的科研方向是数学图论领域,比较冷门。成果里的软著和专利都比较水,两篇论文都是一作,但在参加夏令营和预推免的时候都还未正式发表(最初觉得未发表会比较有影响,但实际上老师们也都认定,可能也比较了解今年的形势,一切都比较滞后),其中一篇是CCF B类(二审),一篇是CCF C类(一审)。而竞赛方面没有任何成果,只有一项含金量比较低的校挑战杯。
接下来是我的夏令营/预推免情况:
最后讲讲今年的计算机保研形势,用一个字概括起来说就是:
由于疫情原因,今年基本各大高校的夏令营和预推免形式都改成了线上,参加起来十分方便,加上国外形势严峻,有很多本打算出国的同学又选择留在国内,导致今年参加夏令营/预推免的人数猛增,大家卷的不亦乐乎 。
“这是一个人均海王的时代。”——**川
各个高校计算机专业的考核一般都是机试+面试,前期的准备自然也是这两个部分。
首先是准备机试,在大三左右可以准备刷题了,我常用的平台是 LeetCode 和 PTA。
力扣 LeetCode:这是我刷题的主要平台,各个题目都会有算法标签和题解等等,非常适合学习算法的小白。我的刷题策略是只刷困难以下的题,以突破中等题为目标。前期会有瓶颈,对各种算法不了解,但没有关系,某道题长时间想不出就直接看题解学习,慢慢地掌握。另外制定好自己的进度,我大概是从2月份开始刷,一直到9月底,总共做了近900题,差不多是题库的一半了。
PTA:这是浙大的一个刷题平台,与力扣不同的是它会考察输入/输出(这点很重要,因为高校的机试一般都是控制台输入用例,打印结果,而不是力扣上以一个函数来返回结果,如果不练习可能输入就会超时)。题库的选择建议是PAT甲级题库,题目是全英文,风格和力扣上确实不太相同,尤其喜欢考察图。
PS:如果有意参加浙大预推免的同学一定要关注PTA平台,浙大预推免的机试是可以用当年PAT甲级或顶级考试的成绩代替的。PTA平台可以进行报名,里面也有对应考试的练习题、真题等等。我因为时间紧凑的原因没有报名PAT考试,直接参加了预推免机试,机试平台也是PTA。
做题的语言尽量选择C/C++,如果像我一样都没学过(笑哭脸),只学过Python和Java,那就选择Java,因为一些高校的机试是不会支持Python的,Java有很多封装好的数据结构,用起来也很方便。
具体怎么做题根据自己实际情况来就好,经典的算法一定要掌握(动态规划、回溯、DFS/BFS、双指针等等),更重要的是语言的功底,有了这些就不用太担心机试。
一般来说各个高校的面试都是以下几个部分:自我介绍+专业知识+项目经历+其他唠嗑环节,也会考察英语能力,那么要准备的也就是这几个部分。
在面试的过程中,如果被问到一些不会的专业知识,可以让老师再问一遍,给自己一个缓冲思考的时间,或者直接说明不太了解,切忌明明不清楚但却硬着头皮回答。如果是项目方面被问到一些不了解的技术,还可以尝试把话题往自己擅长的领域领,比如:
“老师您说的这个xxx我并不是很了解,我在我的项目中有类似的xxx经验,它是由xxx技术完成的。”
那么老师接下来就很可能提问你说的这个话题。
总的来说,面试部分的准备不用太早,在参加夏令营之前准备也不迟,因为都是些记忆背诵的东西,可以类比于考研中的政治。面试通常是考核里比较重要的一部分,认真准备,保持自信很重要。
从5月中旬开始,就可以关注各个学校学院的招生信息了。各个学校会陆陆续续发布夏令营信息,按照他们的要求申请就好。这里不建议只报一所学校,当然也不建议报n多个学校,除了心仪的学校外,还可以有一些留作保底的和冲一冲的更高平台。
这段时间可以充分地去了解一下各个学校往年的招生信息(录取多少人)、招生简章(学费、学制)、录取办法和自己志愿的研究方向等等。最为重要的就是导师信息,每个学校选择导师的阶段可能都不一样,有些会在录取之后,有些可能在夏令营之前,除了考虑自己感兴趣的科研方向外,切记上一下导师评价网,避免踩雷(虽然网站被墙之后需要氪金,但为了今后的研究生生涯,花点钱了解一下也很有必要)。
7月-9月就是正式参加各个学校的夏令营/预推免的时候,这段时间可能会比较焦虑,一边要准备各种考核,一边要确定本校的推免资格,所以,保持一份好的心态。下面就分享一下我参加的这几个高校的大致情况。
这是我申请的唯一一所上海高校,复交都觉得有些够不上所以没申请,后来发现确实也没有申请的必要,因为同软后来公示的夏令营名单都是985(逃
南软是我原本心仪的学校,准备的也比较用心,但最终结果并不理想。这一年南软夏令营的人数大概七八百+,所以采用了机试筛人+面试考核的方法。
南软机试:这一年的机试一改以往,不再是1道算法+1道面向对象程序设计,而是5道算法题,每题100分,总分500分。由于是线上进行,机试的要求多而繁琐(双机位+录屏等等),平台是南大开发的慕测平台,90分钟。机试的过程比较“有趣”,感兴趣的同学可以移步知乎:“如何评价2020年南京大学软件学院夏令营?”。
由于进行了分组,每组的题目都不一样,在我感觉是力扣上2道简单+2道中等+1道困难的组成。平台的语言除了C、C++、Java外还可以选择Python,提交后可以看到每题的分数,但看不到测试用例 。在进行了一轮又一轮的压力测试下, 机试200分左右就可以进到下一轮的面试了。
南软面试:面试还是一般的组成:
专业知识提问部分让我万万没想到的是,被问到了离散数学:什么是覆盖和划分、偏序集合、强弱连通图。由于这门课压根就没有复习,所以这三个问题我一个也没回答上(大概是脑中有印象,但又实在表述不出来),我也老实地说这门课没复习所以不太清楚(结果老师还接着问)。最后问了个最小生成树算法,我唯一一个会的问题答完后面试也就结束了。
面试结束就知道自己表现得很差,最终结果不出意料也只是良好,原因也只能归结于复习的范围不广。面试中有其他同学没有被提问到专业知识,甚至有因为项目简单被直接请出会议室的,他们最终都是优秀。
东软坐落于苏州,夏令营只有面试部分,原本是我留作保底的学校,但后来充分地了解之后,决定保底还是留在本校。但既然已经参加,就还是好好认真准备。东软的夏令营先是几天的学科讲座,最后进行面试考核。面试中的问题如下:
自我介绍;
是否参加了其他学校的夏令营:这里撒了谎,说只参加了本校的预推免(捂脸
英文问答环节:
你在项目中的主要贡献是什么(其实当时只get到了contribution这个单词):研究、做实验&证明、正式撰写等等,英文组织了一下回答。
论文是否是你独立完成的,还是有老师:There are two teachers, and they are both second-authors.
唠嗑环节:
xxx是你的co-worker,讲讲他的优点:吹牛
说一说你和他相比你的优势在哪:吹牛+1
今后希望的研究方向:软件工程理论的研究,比如开发过程、测试等
是否了解我们学院在软件测试领域的老师:不了解,然后面试老师给介绍了下
总的来说面试过程十分轻松,并没有专业知识的提问,最终也拿到一个不错的成绩,其实看得出挺水 。后来的名单中还有一部分是东计调剂来的。我最后选择当鸽子,在推免前发了邮件告知放弃自己的拟录取资格。
浙软是我准备冲一冲的平台。与其他学校不同的是,浙软的夏令营不发offer,正式的offer是在9月的预推免,夏令营的优秀营员并没有太大的优惠。
这一年浙软的夏令营人数达到了1000+,可以说是点击就送。同样地也是先举办了好几天的学科讲座,听下来的感受就是各个实验室、课题组都特别厉害,出来的都是各自领域里的优秀人才,一点也不水。之后是选择分营各自考核,我只希望划水所以去了网易分营,考核的要求是用Unity开发一个小游戏,因为没有学过,也没有给学习资料,加上要准备其他夏令营,所以最后选择当了逃兵(跑
到了9月中下旬就正式参加浙软的预推免,这段时间刚好和本校推免的时间卡在一块儿,着实让人焦虑。预推免的考核同往年一样,15%机试+85%面试。最初预推免的资格也是点击就送,报名群的人数也几乎要满1000,但最后实际人数远没有这么多,具体过程如下:
浙软机试:线上考试,用的是PTA平台和OMS监考系统,要求也比较多(双机位等),可以使用本地IDE,语言没有Python(我当天考试第一题用Pycharm写了一半才发现,于是立马打开Java Eclipse)。和PAT考试一样,3个小时,共4道题,全英文,20+25+25+30的组成:
对于一个多项式 ( x + k 1 ) ( x + k 2 ) … … ( x + k n ) (x+k_1)(x+k_2)……(x+k_n) (x+k1)(x+k2)……(x+kn),给出 k 1 k_1 k1, k 2 k_2 k2,…, k n k_n kn,一共 n n n 项,输出展开结果中 x n − 1 x^{n-1} xn−1、 x n − 2 x^{n-2} xn−2 一直到常数项前面的系数。
我的做法:枚举。
定义3个数 a a a、 b b b、 c c c 的距离 d = ∣ a − b ∣ + ∣ a − c ∣ + ∣ b − c ∣ d=|a-b|+|a-c|+|b-c| d=∣a−b∣+∣a−c∣+∣b−c∣,给出3个集合 s 1 s_1 s1、 s 2 s_2 s2、 s 3 s_3 s3, a a a、 b b b、 c c c 各来自 s 1 s_1 s1、 s 2 s_2 s2、 s 3 s_3 s3,求最小的距离以及对应的 a a a、 b b b、 c c c。
我的做法:暴力(学艺不精)。
背景是各个大学学生参赛,由于某种原因参赛信息不完整,给出n行数据,每一行数据包括学生id,队友个数k(不全,不一定是队伍包含的总人数,因为背景就是信息零碎了),k个队友的id,最后是该学生的得分。求总队伍数,并按队伍总得分排序,依次输出(队伍中最小的id,队伍总人数,队伍总分)
我的做法:DFS(正解应该是并查集,但同样也是学艺不精)。
有n张优惠券,n个商品,每个优惠券可以使用无限次,但不能对同一个商品使用多次,再给出初始的钱d,求能买到最多的商品和最后剩的钱。第一行给出n、d,第二、三行分别给出商品价格和优惠券面额。
我的做法:优先队列。
同样每道题提交就能看到分数,也可以看到排名和通过率,最后我的分数是80不到一点,加上用PAT成绩代替的同学,大概排名在100左右。
浙软面试:由于人多+专业多(工设、AI、软工),浙软的面试分成了好几天,面试过程相比之下正常许多:
自我陈述(准备PPT),5-8分钟,包含一段1分钟左右的英文表述(我选择的是进行英文自我介绍);
项目提问:
本科为什么会选择这个方向的研究?(可能老师也觉得我的方向比较偏)
你的论文成果有什么实际应用价值?
你的两篇论文的差别是什么?
专业知识提问:
数据结构里图中求各个顶点的最短路径的算法是什么?时间复杂度是多少?(时间复杂度我没记住,老师就说让我猜一下)
什么是临界区?
死锁和饥饿的区别是什么?
计算机网络中OSI协议和TCP/IP协议的体系结构是什么样的?
(紧接上一个)为什么要进行分层?
什么是广播分组?
唠嗑环节:
你觉得本科生和研究生阶段的区别是什么?
与以往不同的是,面试并没有进行简单的英文问答,只有一小段英文自我介绍,也没有经典的思想政治考核,几个问题都比较基础,我回答得也比较流利,没有太大的错误。面试结束的当晚就收到了某位面试老师的短信,说我面试表现不错,如果拿到offer,可以考虑去他的实验室。
浙大的效率还是一如既往的高效,所有面试结束后第二天就公布了结果。面试的成绩都相差不大。虽然前期的人数比较多,但最终的名单里软工只有300不到(好多人在机试放弃了),招收140人,接近是二进一。我的面试成绩较高,在预录取中的总排名在比较靠前的位置,也总算可以开开心心地过个八天双节。
在亲身经历体会后,谈一谈夏令营/预推免中的一些注意点:
经典面试问题:你有没有参加其他学校的夏令营?
这个问题几乎每个学校都会提问,我一开始想的也是做个诚实的人,实话实说,但在南软的面试中,当我说还参加了浙大的夏令营后,可以感觉到老师的态度有些转变,所以对于这个问题还是厚着点脸皮比较好。如果又实在不想撒谎说只报了贵校,就说我只参加了本校的夏令营/预推免,打一打擦边球。如果老师问愿不愿意来我们学校,一定要肯定地说是,不管是否真的想去,真正的鸽子永远是到填报系统的那一刻才咕咕咕。当然,如果确定已经有更好的offer,那还是尽早和保底的学校说明放弃。
学院选择问题:计院 or 软院?
我在选择学校参加夏令营的时候陷入了一个误区,就是我是软件工程专业,就只能选择软件学院,而计科专业才对应计算机学院,但实际上并不是如此(我到了正式参加夏令营时才明白这一点)。各个高校的软件工程专业都会在计算机学院中开设,而且那些学科水平高的(双一流、A类等等)软件工程也是在计算机学院,同时计算机学院也有软工方向的课题组。而软件学院则比较面向实践和就业,科研水平不高,所以填报的时候也是专硕居多。有句话叫做“天下软院一般水”(当然我觉得浙软是不一样的,后面会讲)。所以,填报学院时不用太过考虑自己的专业,无论你是计科还是软工或是AI出身,都可以选择这两个学院,而是多考虑自己的想法和规划。
时间到了10月,在推免系统开放的当天凌晨3点多,收到了浙江大学软件学院的录取通知,也算是不负三年来的努力。
文章的最后就讲讲浙江大学软件学院吧。浙软给我的第一印象就是格局很大,无论你来自哪儿,他们都会接收,以同样的办法考核。如果说有些学校在审核名单时就是把其他都屏蔽,只留下本科学校筛选,那么浙软应该就是反过来,颇有些英雄不问出处的感觉。其次是它丰厚的教学资源,研究生可以选择浙大计算机学院的导师和实验室,也提供转博的机会,各个实验室的科研等水平也很高。学制一共是2年半,第一年在宁波上课,之后就可以按实际情况,到杭州玉泉校区的实验室跟导师等等。
我的2020年保研之旅也就此结束。这条道路上充满挑战,也充满机遇,而最重要的,莫过于保持自信和努力。如果你有意保研计算机专业,希望本文能够给你提供帮助,也愿屏幕前的你能够成功上岸:)