保研经历总结

保研结束之后本想总结这一段经历的,但一直在忙实验室的事情,忘记总结了。正好前两天,实验室大三的学弟问我 CS 保研的事情,看到他忐忑、没底的心理仿佛就看到了当年的我。其实学弟好歹是科班出身,我跨专业保研,比学弟更加没有信心,但同系学长跨专业保研成功的经验和网上的保研经验帖给了我不少帮助,让我能够做针对性的准备,最终顺利得到想要的结果。的确很感激他们,所以在这里也总结一下自己的保研经历,给学弟学妹们 (包括跨专业) 一些帮助,把学长学姐的帮助传承下去。

基本情况

  • 学校 & 专业:上海交大;材料科学与工程
  • 排名:5/115
  • 二专(辅修):计算机,课程包含:基础课 —— 离散、C++、数据结构;专业课 —— 软件工程、计网、编译原理、组成、操作系统、数据库;此外旁听过本校软院的算法和 Web 开发课
  • 英语:四级599,六级564,托福105,GRE327
  • 获奖:一次国奖和一些不重要的奖学金和竞赛,如数模国赛、美赛、数学竞赛等等
  • 科研:没有和 CS 相关的
  • 杂项:大二暑假去 UCB 交流(玩)了一个暑假;在一家做区块链的小公司做过4个月后端实习;在校内一个做开发的学生组织学过一会前后端、Android开发

我的跨系保研跨度相当大,不像软件、电子、电气、通信这类同属于电类的跨专业保研,我的本科专业和计算机几乎毫无关系,只安排了一门电子电工技术,及其粗略地讲了讲基电数电模电,没有一门编程课,所以二专和辅修就尤为重要,至少表明自己建立了完整的 CS 知识体系;英语成绩似乎没啥用,面试过程中有英语的考核,不过我因为曾经想出国,考过托福和 GRE,引起过一些老师的兴趣;获得的奖项中似乎也只有国奖比较有用,因为其他奖项如国赛、美赛大家都有;本科期间没有 CS 相关的科研经历,没发过论文,这是个硬伤;剩下一些杂七杂八的经历也没啥亮点

报名和offer

  • 夏令营报名:北大信科、中科大计算机、中科院软件所、上交计算机、复旦计算机、南大计算机、南大软院

  • 夏令营入营:中科院软件所、上交计算机、南大软院

  • 夏令营offer:中科院软件所、上交计算机

  • 最终去向:上交计算机

我的意向还是在本校 CS 读研,因为有不少认识的同学、认识的导师,踩坑的几率小一些,但毕竟是跨系保研,而且跨度不小。向同系的学长咨询的时候只找到到一位九推进上交 CS 的学长,没有夏令营保 CS 的学长,所以心里还是没底,尽量多报了一些学校,其中清华计算机只收直博,浙大计算机没有夏令营,只有一个耗时一个多月的暑期实习,也是接收直博向的,所以这两个都没报,其余的列出来的 CS/软院夏令营,我看着只要学校好于上交或者和上交差不多的都报了。

多报一些还是很必要的,因为录取情况每年都在变,谁也不知道入营有啥明确标准,更不知道是不是因为前两年本校的学长学姐录取之后毁约导致报名的学校直接砍掉本校的名额 (无奈.jpg),比如收到第一个入营通知之后我就觉得复旦计算机、南大软院应该能进吧,谁知这俩都不给入营资格…

上交官方给出的报名通道只能报一个专业,我本想 CS 和软院都报,无奈只能放弃软院。后来在软件所和武大的同学聊天才发现他们的骚操作:注册两个同去网 (上交夏令营报名通道) 账号,分别报 CS 和软院…这一通操作真是让我目瞪狗呆,不过听说他们也只拿到了软院的入营资格,CS 没给,不知道和报多个专业有没有关系。

另外,由于参加完夏令营之后,我就决定加入现在所在的实验室了,接受了本校 CS 的拟录取,也就没有参加九推。

夏令营过程

夏令营前的准备

由于本专业的一些众所周知的就业状况 (可以问问身边的材料同学了解…),我大二开学之后下定决心转到 CS,找到一位在美国转 CS 、已经工作的学长,向他咨询了转 CS 的一些情况。可惜的是当时对刷题、GitHub、项目、CS 的各个方向完全没有了解,学长的谆谆教导我也没怎么看懂是在说啥。最大的收获是学长推荐了一个校内搞开发的组织,可以在里面写写网站、app,里面也有不少做全栈的软院学长学姐,但当时课业压力很大,社团占据了不少时间,我完全无法腾出时间学 CS,而且毫无基础,连基础的 C++/Python 程序设计都没学过,只得先 mark 住。

大二下我选了计算机二专,学了怎么写程序,到大三上随着课程学习和软院同学的介绍,我渐渐明白了应用开发是做啥。在这期间,我一直打算出国转 CS,主要做两件事:学好课程 (本专业保持 GPA,CS 二专学懂学透)、考英语 (托福、GRE),另外参加一些数学竞赛、数模比赛。

大三上我继续一边上课,一边腾出时间在那个校内组织里学应用开发、写写简单的 example,同时跟着高中同学听了半学期软院的算法课,但我却对是否出国开始摇摆不定。终于,经过近一学期的考虑,在大三上学期快结束的时候,综合家庭条件、申请、在美找工作的情况,我决定保研。

做出决定的当天晚上,我找到一位同专业大我两级的学长了解了保研、夏令营的一些情况。这位学长夏令营没能入营,九推录了交大 CS。了解了一番情况之后,我发现:1. 夏令营只看前五学期的成绩,自己的成绩报名夏令营可以一试,甚至很有希望入营 2. 夏令营需要重点准备机试,因为机试容易拉分。但当时我只修了二专的 C++ 程设、数据结构、软件工程这几门简单的基础课,自己的代码水平还处于幼儿园阶段,急需项目实战,而且除了基础课之外,学得最多的应用开发,所以一直想真正做项目练练手,所以到一家做区块链的小公司做了 4 个月的实习,老板对我很好,期间我学到了不少东西。

后来我了解到一个情况和我很像的朋友这时候开始进了本校一个老师的实验室做了一个项目,现在回顾这一段经历,我觉得 CS 是偏科研导向的,相比之下,导师还是喜欢本科做过科研的、甚至中过论文的,如果当时厚着脸皮加入本校某个实验室打打下手,可能后面情况会更好一些。

到大三下,由于本专业成绩和夏令营入营资格不挂钩,我就在本专业课堂上放飞自我写代码了,一边干实习的活一遍刷刷题。直到 5 月份,考试和夏令营都越来越近,我离职专心准备考试和刷题了,刷题的平台主要是 LeetCode,牛客网上也有一些往年机试题可以做,另外还有一本浙大学长的 CS 复试机试指南对常见的题型做了归类和讲解,写得不错。那段时间刷题还挺多,基本上一天两到四道,到夏令营之前 LeetCode 已经刷到 (免费的) 300 题了,尽管 hard 不少题还是完全没思路。我觉得这段刷题经历很重要,没有这段经历我面对机试一定是虚的。

5月初我曾经联系了一位老师看看能不能进他的实验室,然而他给我的回复是,等学校通知;还有一位二专教课的老师人很好,帮我写了其他学校夏令营的推荐信,给我口头承诺,如果过了夏令营愿意收我 (感动…),只可惜研究方向我不太感兴趣。于是我不再联系老师,专心刷题去了。

上交计算机

本校 CS 夏令营是最早开始的 (7.4 - 7.5),但是安排实在是让人无力吐槽…夏令营之前一周才发入营通知的邮件,搞得我一度以为自己连入营资格都没有;后来在软件所夏令营和武大同学聊天才知道上交啥都不包,食宿完全自理,他们也只收到一封通知考核时间地点的邮件,其余啥也没有…真不知道电院为啥这么不上心。

本校整个夏令营过程很短,只有两天 (其实 CS 夏令营第一天就结束了,第二天我参加了现在所在实验室的面试),第一天上午机试,第一天下午和第二天上午面试。因为人比较多,分两个半天面完,我是安排在了第一天下午面试。机试可以用 C++ 或者 java,java 提供了 eclipse,C++ 提供 VS2008,似乎还有 Dev-C++,我用的 java 就没有注意 C++ 的其他 IDE。一共三道题,两个半小时内完成;题目打印在纸上发给学生,全英文;没有测试用例,没有 OJ 系统,需要自己手动测试;最后监考人员用 U 盘拷走可执行程序打分。三道题中一道很简单,一道稍有难度 (大约 LeetCode 接近 Medium 的难度),一道比较难 (可能会接近 LeetCode Hard 难度)。其中我觉得最难的是一道用 KMP 解决的题,总体难度一般。由于打分直接的依据还是可执行文件的测试结果,强烈建议写完之后打开 cmd 按照示例输入的格式测试一下生成的 exe 可执行文件,如果代码写对了可执行文件出错就可惜了。

下午是面试,对面坐着五位老师。听本校 CS 的同学说老师主要问他项目经历,也可能直接问专业课的知识点。不过我因为转专业跨度这么大而且本科没有 CS 科研经历,而且自我介绍时候说了一句对材料不感兴趣,于是老师就问了问我一二专的学习情况,有没有逃课,怎么排名第五的…之后就是常规的问题,针对我写的实习经历问我的收获,以及英语描述自己的项目/比赛经历,我讲了一下国赛的经历。

晚上有各个实验室的介绍,可能因为只是讲 PPT,不少人并没有去,几个 AI 方向的热门老师都比较火。我听到一半,现在的小老板打电话联系我说下午面试我的时候觉得我不错,问我要不要去他们实验室看看 (惊喜 + 感动ing),于是我又去听了现在大老板介绍实验室详细情况,感觉大老板很厉害,人也很好。第二天直接参加了现在实验室的面试,然后就决定加入这个实验室了。就这样,上交 CS 夏令营很快结束了。

中科院软件所

由于上交机试自我感觉做的还不错,而且已经决定进现在所在的实验室了,上交之后的中科院软件所、南大夏令营我都是以比较佛系的心态在参加,没有提前联系导师。

中科院软件所的夏令营安排比上交不知道好到哪里去了,包吃住,还有学长学姐带我们游玩鸟巢水立方,主管招生的李彩丽老师人也非常好,唯一不足的是住宿条件一般。

第一天自己安排,第二天是各个实验室的介绍,其中软工中心、国重还有天基的几个导师比较热门,在这期间完全可以自己联系导师参加导师单独的面试。第三天是各个实验室的考核,我报的是软工中心,有机试和笔试。机试题目很简单,只是考察基本的编程能力,写完代码后学长过来检查;笔试包括各门基础课(数据结构、操作系统、编译)的简单问题和简单的智力题,以及最后的一些题,给出实际问题让写解决方案,考察开放思维,总体比较轻松。这里有个小 trick:各个实验室的考核时间不完全重合,可以参加多个方向的考核…我当时的室友就参加了两个方向的考核,我笔试到一半他才匆匆赶来参加软工中心的考核,也是够拼的。

最后一天是面试,提前做好 PPT 自我介绍,随后老师提问,问的也比较常规,无非是针对简历和 PPT 里提到的实习经历、竞赛经历问问,以及少不了的英文考察。整体氛围挺友好的,没有什么压力,也没有刁钻的问题。

软件所给我的体验真的相当好,要不是已经决定进现在所在的实验室,我就去软件所了,毕竟招待得这么好…跨系的同学如果打算来北京工作的可以考虑中科院软件所,我觉得比上交计算机对跨系友好多了。

南大计算机

南大 CS 的官方名称叫本科生开放日,名额不少,我一开始邮件填错了,南大招生老师得不到回复还给我打了电话问我来不来。南大安排的食宿条件是真的好,住的是学校里的国际会议中心,似乎是四星级,早上可以吃宾馆的自助早餐 (非常丰盛,我有一天起晚了没来得及吃,真是后悔不已…),比中科院软件所的条件好多了,听说有些已经有了清北 offer 的大佬过来就是吃喝玩乐的…

第一天自由安排,第二天上午开营仪式,周志华老师也来发言了,其余时间自己找实验室导师联系。lambda 自然是最热门的,一看招生通知,发现在暑假之前就开始面试了,竞争很激烈,我懒得再去联系了,于是随便找了位做 NLP 的热门老师,跟路上遇到的其他同学一边聊天在一边在门口排长队,等了一会儿后正好遇到隔壁做软工的实验室学长问我们要不要到他们实验室看看,我也懒得等了,就去隔壁实验室和导师聊了聊。我也直接坦诚地表示,自己已经打算去本校 CS 的一个实验室了,但是怕夏令营不过所以来南大找”备胎”。这位老师倒也不怎么嫌弃我的跨系出身,表示我如果确实愿意来,他会接受,并给我承诺在他这里读研期间基本可以发一篇不错的论文。聊了会后我就会宾馆准备机试和面试了。

第三天是全体的考核,一部分同学上午机试、下午面试,另一部分相反。机试一共三道题,俩小时,也是易 -> 中 -> 难的顺序,总体难度一般,有一道题我记得是 LeetCode 上的原题;提交到 OJ 系统上,可以在 leaderboard 上看到实时排名。这个系统是按测试用例给分,最难的题也可以写一点能通过简单测试用例的代码拿分。下午的面试比较常规,唯一不同的是南大面试是盲面,不带简历不带任何材料,理论上老师也不能问你是哪个学校的,问的问题主要是基础课的简单知识点或者简单算法题,比如怎么找链表中点、概率论中独立的含义、NP 问题的含义等等,最后是常规流程:英文描述做过的项目,考察英语能力。值得一提的是,昨天联系的老师中午找到我,又向我确认了一遍来不来他这里,因为他那里还有其他想来的同学,他表示如果我想来即使考核成绩不那么好,他也可以想办法 (后来我才知道,老师都有点招名额,就是不论你的机试面试成绩,直接录取你,但名额宝贵),所以要确认我的意向。然而我既然决定了去现在的实验室,就直接拒了,不想浪费其他同学的名额。由此可见,提前联系老师还是非常重要啊。

等待结果

这个过程也是相当的煎熬,迟迟收不到意向学校的通知总让我担心被拒。在此再次吐槽一下上交的招生管理,夏令营最早,结果最晚出,真的服了。最早收到的是软件所的 offer,夏令营结束后一周就收到了,当时也很感动,至少有一份保底的 offer 了。软件所给了我们一周的时间考虑接受不接受拟录取,尽管当时上交结果还没出,我以为毕竟夏令营时间早,再过两三天,结果总该出来了吧,结果我还是高估了上交的效率。眼看着软件所的 ddl 一天天靠近,上交这里毫无动静,我实在忍不住了,给主管招生的老师发邮件打听我的考核排名,一封…两封…邮件发过去,石沉大海。还好这时候软件所推迟了答复是否接受 offer 的 ddl,同时我发出第三封邮件,语气越来越焦虑,主管老师终于给了我回复,告诉了我排名。看到排名的我终于舒了一口气,因为按照往年招生人数,自己拿到 offer 是比较稳的。随后我也直接拒了软件所的 offer,南大夏令营后一天南大招生办发短信问是否将南大作为第一志愿,我也直接回复了否。毕竟自己已经差不多手握 offer 了,没有 offer 的同学的焦虑我完全能感受到,不想坑他们。果不其然,南大没有给我发 offer。至此,我的保研经历就全部结束了。

总结

我的保研过程其实挺简单的,参加完上交 CS 考核和实验室的面试之后,我保研过程基本就结束了,也没有参加九推,不过还是有一些体会可以讲讲,尤其是站在材料跨计算机保研的角度上:

  • 提前联系导师!很重要!南大老师让我意识到,有时候老师能直接决定是否入营或者是否录取的,而且热门的老师一般都有很多同学提前联系,联系不及时往往就没机会了。这点我就做得不好,如果提前多联系一些老师,选择的余地也许能更大一些。

  • 跨专业的同学没有那么多 (这里指的跨专业是像我的跨度这么大的)。由于听说本系不少学长出国转 CS 了,我一度以为夏令营会遇到不少跨专业、跨系的同学,然而实际上,绝大多数都是 CS、软院以及各大电类专业的,夏令营全程我也只找到一个同校环境专业的同学,跨度像我这么大。

  • 刷题很重要。和经管、金融不同,CS 似乎在简历、个人陈述这些材料上没法做太多文章,我的同学基本就写一下自己的项目经历。虽说一般面试和机试占比差不多,但面试不容易拉分,机试可是直接根据运行结果给分的,写不出来就是没分。即使题目都不太难,刷题准备还是很必要的。我刷的题比较多,后面也没怎么发挥作用,现在回想起来,把数组、二叉树、DFS、BFS、DP 几种套路练熟就差不多了。
  • 面试要展示自己的 key strength。老师不会因为跨专业就降低要求,站在老师的角度想想,明明有其他本专业的同学申请,老师为什么要选择跨专业同学呢?所以要以对科班的要求来要求自己,并展示出和科班同学相比的优势,convince 老师,让老师选择你,而且有时本来可能是不足的地方,换个点描述可能就是你的优势了,比如我虽然是跨专业,但在同时修两个专业的情况下保持较好的成绩;虽然没有科研经历,但开发实习和数模竞赛体现了短时间内学习新知识并应用的能力。
  • 面试前准备一下英语。英语介绍项目经历几乎是面试的必备节目,我在前一天拿出托福口语题稍微练了练,查了下项目中可能出现的名词,面试过程中讲的还算流利,感觉给自己加分不少。
  • 夏令营的时候简历上的内容已经无法再增加了,但是凡是做过的和 CS 相关的项目、比赛最好回顾一下,不要问起来对细节不清不楚。
  • 注意关注保研论坛和各大学校的官网信息

以上都是夏令营或者夏令营前一两个月需要注意的点,更多的决定自己基础的、甚至能否入营其实是前三年的整体情况,在此也给有转 CS 意向的学弟学妹 (学妹如果怕太累就不要转了…) 们给出自己不成熟的建议:

  • 大一好好上课、保持好成绩,无论以后出国还是保研都需要成绩。早点决定是否转走,交大大一下可以转专业,决定跳坑要趁早。另外可以适当参加一些学生活动,有机会认识学长学姐,获得更多的资源。我整个转 CS 过程其实都离不开学生活动带来的资源:最初有转 CS 想法之后院足球队队长把他出国转 CS 的室友介绍给我,我得以咨询了很多事情;保研情况咨询的学长是隔壁寝室同学学生会部门部长的室友;夏令营前我又向院辩论队学长 (大我一级,大一从材料转到了 CS) 同实验室的学长要到了去年的机试题;以及向以前在材料学院做科研认识的学长 (去年考研 CS) 要到了他们复试的题目…真是壮哉我大材料,在 CS 藏着这么多人才(微笑.jpg)。
  • 大二课业压力一般比较重。这时候可以规划工作、出国还是国内读研、读 master 还是 Phd 了,针对不同的规划有不同的重点,出国的话,英语考试早点准备;保研的话,注意成绩别掉下来;工作的话,可以开始留意招聘信息了。上交大二下开始有二专可以选,想转 CS 的话一定不要忘了选二专。
  • 大三一般课程压力会小一些,但是这一年的成绩同样决定是否能进夏令营、拿到保研名额,所以千万不要懈怠了。无论选择哪条路,都要做出相应的安排了,进实验室、实习、参加比赛、暑研套磁等等,这段时间的工作真正决定了你在保研/出国时能写在简历上的内容。我当时选择实习而不是进实验室还有一个原因在于自己不打算出国,计划是如果保研失败就直接工作,所以增加一段实习经历为可能的找工作做准备。

至此,只要你每件事都认真去做了,相信到大三暑假,自己已经具备了选择走哪条路的足够的资本。

最后,希望学弟学妹们都能被心仪的学校、专业和实验室录取!