今天刚刚收到录取通知邮件,一颗悬着的心终于放下了。
        接下来,我将为大家介绍一下南京大学计算机科学与技术系-计算机专业学硕/专硕的录取难度、全日制和非全日制的培养方式、我的复习经验、复试过程等。
一、背景
        本人多年前毕业于南京理工大学光电信息工程专业,所学专业课与通信工程、电子信息工程类似。虽不能说完全没有计算机相关基础,但和科班应届生相比也着实算得上薄弱。毕业后进入江苏电信从事IT方面的工作,java、linux等也接触了一些,然而工作毕竟偏向于生产应用,对考试谈不上有什么帮助。
        2018年初,我了解到了目前的研究生录取政策:自2016年起,国家取消了原来的单证在职硕士,将目前的专硕重新划分为全日制专硕和非全日制专硕,均为双证(但证书上会标注全日制、非全日制字样),两者均需要通过国家研究生统一考试,统一划分数线进入复试。由于在职人员一般是考不过大四学生的,所以非全往往就寥寥数人进入复试。部分高校会直接强迫非全学生工作日来学校上课,不来就得自愿放弃;部分高校则会放更多学生进入复试,劝说总分排名靠后的大四学生调剂到非全日制。
        了解到之后,我萌生了攻读非全日制专硕的想法,原因有三:1、下班之后一个人在家玩游戏实在是太无聊了;2、现在年轻时不考,等再过几年有了孩子就很难了;3、想督促自己学习一些知识。
        既然要考,肯定要奔着南京最好的学校。于是前往官网查询了解了一下南京大学的录取情况。
        南大不管学硕、专硕,考试科目都是一样的,初试为数一+英一+政治+专业课845,其中845在2017年有科目调整,目前为数据结构和算法(60分)+操作系统(35分)+计算机系统基础(35分)+计算机网络(20分)。按照学硕*1.2、专硕*1.2放人进复试。非全日制专硕每年有50个招生计划,但2017年一志愿非全的在职考生上线0人、2018年仅上线1人、2019年(连我在内)仅上线2人。南大不接受校外调剂,这剩下的48-50个名额,就留下来着最后总分排名靠后的全日制考生调剂过来了。
 
二、录取难度
        2017年前,由于政策不同,没有参考价值。
        2017年学硕438人报考,复试线为350,最终录取32人;全日制专硕253人报考,非全日制专硕19人报考,复试线为300,最终全日制专硕录取33人,非全日制录取0人并从全日制调剂来19人。单科线为英语50、政治50、数学75、专业课75。
        2018年学硕复试线329,进入复试29人;专硕复试线280,全日制专硕进入复试138人,非全日制专硕进入复试1人。
        2019年,学硕复试线325分,放36人进复试,最终录取30人;招收全日制专硕67个+非全日制专硕50个,划线320分,放139人进复试。单科线为英语50、政治50、数学75、专业课90。今年专硕据说有980人报名,可以说比学硕难考很多。
        此外,每年的调剂政策都不相同,今年不允许学硕调剂专硕,只允许全日制专硕调剂非全日制专硕(大家一起面试,没过的自动调剂)
        可以看出,虽然近几年南大计算机的考研南大已经大大增加,但与浙大等高线相比还是容易很多。因为未来竞争压力应该会进一步增加。
 
三、初试
        我的初试成绩为364分,排在专硕第25,(如果是学硕的话就排在第10)。由于白天要上班,我主要是利用上下班坐公交的时间来学习英语和政治、晚上下班后的时间学习数学、周末时间学习专业课。
        我并不是一个学习很刻苦的人,即使在最紧张的时候还总是打游戏,看着书忍不住掏出手机肝起了FGO,有时候喜欢边做题边看电视剧,复习期间一口气看完了好几部。所以南大其实没什么难考的,考研说穿了就是拼谁投入的时间多。相信你只要全身心投入学习,400分完全是有可能的。即使你学校不好、基础差,你要是复习上一整年,也没人能考得过你。
        计算机专业的复试地点是仙林,考试时间一出来就要去仙林订旅馆,一般9月份就已经订光了。
英语一(76分)
        英语我是基本没怎么复习的,但是单词我一直有坚持背。很多人往往忽略背单词甚至直接不背单词。我觉得考研英语最着重考察的就是一个人的词汇量。单词看懂了,文章阅读就能看懂,自然而然就能做出大部分题目;而如果单词看不懂,文章读起来可痛苦啦。
        我从5月开始背单词,每天上班下班的路上掏出网易有道词典开始背,食堂吃饭排队的时候也会抓紧时间掏出手机看几眼。先背恋恋有词的高频单词,再把大纲5500单词全部背一遍,最后背考研试卷上出现过的超纲单词。背的时候不能光是理解单词的主要意思,必须记住单词的每一种用法尤其是罕见用法。这里推荐柯林斯词典,会列举单词每一种意思的用法例句。
        切记,背单词决不能背完就结束了,必须把不熟的单词记下来,每天拿出来复习。
        我在公交车上背完单词之后,一般会抽空做一两篇真题阅读。直到10月份开始学习政治之后,真题恰好也都做完了,就停止了英语的学习。考前一个星期,我把大纲5500词又翻出来全过了一遍,并背了7篇作文。很多人考试之前就不复习英语了,我觉得考前把所有单词过一遍还是很有必要的。
        推荐大家可以看看作文的教学视频,我其实很想看但我实在抽不出时间了只能背几篇作文草草了事,所以作文写得实在不咋地。
数学一(114分)
        我本身数学基础是不错的,所以我的复习方法对大家应该没什么参考价值。
        我从8月开始复习数学。主要看我大学时候的课堂笔记,为了防止有什么知识点学校里没学,我又翻了翻李永乐和张宇的参考书补充学习了一下。我花了5个晚上看完高数,2个晚上看完线代,1个晚上看完概统(概率后面那些假设检验、切比雪夫不等式之类实在抽不出时间看了)。
        看完之后就开始做《660题》,这本书名为660题其实有800题左右。我给自己定的目标是每天30题,做不完绝不睡觉,但是实际我还是拖到了10月底才做完,因为有时候会忍不住打游戏看电视。刚开始做的时候做得特别慢,记得有天晚上我做到夜里4点30左右,已经困得不行了,但是第二天有新系统上线,要求7点上班。就剩2个小时我干脆也不睡觉了,直接拿着本政治书就出了门,坐上公交车开始读政治。大半夜的公交车上就我一个人,司机像看鬼一样看着我在那儿读书。
        660题做完,我就直接开始做真题了,20份真题又花了差不多30个晚上做完。考研数学其实是非常简单的,做题就是些固定套路,只有个别年份的个别几道题有难度。可能因为做题实在太少了,我明显感觉到,虽然大部分题我都会,但是我做得特别慢非常吃力,而且正确率不高。最终考试的时候果然也是做得很慢且有很多题没有做出来。
        考研数学无非是套路题,就是多做多练,提高熟练度。别浪费时间看视频,数学看视频是效率最低的学习方式,老师讲1页的时间我10页都看完了。
        最重要的一点,平时做题就要按照考试的限时要求和100%的正确率要求自己,力争3小时做完一道题不错。只要做熟了,数学140+应该是不难的。
政治(66分)
        讲实话,政治算是我比较慌的一门,因为知道自己的复习时间太短了,怕自己最后政治被卡单科线。
        但是考研政治其实很简单,紧跟肖秀荣就对了。肖秀荣出一本书你就买一本,肖秀荣说可能考啥你就背啥。
        我从10月1日开始学习政治。利用国庆7天休假,把肖秀荣的《精讲精练》大体看了一遍。接下来又花了40天左右,一边做课本习题一边把《精讲精练》从头到尾详细过了一遍。过完之后开始做《1000题》,这本书其实也不止1000题,我只来得及做了选择题,就已经临近考试了。此时一边看《知识点提要》和《形式与政治》,一边做《肖8》。
        为了学习政治我已经养成了随时席地而坐的习惯。不管什么地方,只要一有空就直接坐在地上开始读书。有一次在地铁上还平白被一个大妈怼了一顿:“你们文化人装啥逼啊,影响到我玩手机了知道不?”
        最后考试那天我《肖4》还没来得及看,于是我早上5点就起了床,急急忙忙跑到考场门口把4张卷子上的大题背了一下。结果考试直接就遇到好几道相似甚至一模一样的题。
专业课(108分)
        845给我最大的感觉就是内容太多,且无考纲,根本看不完。其实845是有套路的,是常考题型都是固定的,只要针对重点题型,就能短时间突破。
(1)数据结构
我首先学习了数据结构,这门课比较简单。不带星号的章节要能完全理解数据结构,最好能独立写出代码。我复习的时候就把课本上所有代码都自己敲过一遍,敲的过程中发现课本上有很多错误,稍后我会把自己改正过的代码发到博客上;带星号的章节看看就行,一般不会考。必考的知识点有线性表、树、图;排序算法必须搞清楚每种算法的时间复杂度和空间复杂度;最近几年还考过AVL树、B树的增删结点。因此复习的时候必须小心仔细不能放过任何知识点。
做题推荐课本配套习题,我当时把整本习题都做完了。后来发现没有必要,只做线性表、树、图、排序这4章的习题即可。之后可以做王道这4章的习题。
(2)操作系统
因为是第一次学习此课程,我跟随MOOC上南大的操作系统课程进行了学习。中断那部分、内存管理对初学者比较难以理解,建议结合计算机系统基础一起学习。我在看完计算机系统基础之后,瞬间感觉很多弄不明白的问题瞬间恍然大悟;不过MOOC上操作系统的课程量比较少,老师也以读PPT为主,所以看完之后还需要再看一遍书。书中涉及Linux的部分不考、大段文字叙述的一般不考。PV操作必考,尤其是n生产者n消费者问题、男女共浴问题、理发师问题等,稍后可以看我博客里总结的常考题型和讲解。
做题推荐课本习题,参考南大课后作业划的,量很少一个晚上就可以做完。之后可以做王道的习题,把王道所有选择题、PV部分所有大题、内存管理部分所有大题都做一做。
(3)计算机系统基础
本教材是CSAPP的精简版,涉及知识点极为广泛,相当于是一门把高级语言、汇编语言、硬件等知识串联起来的课程,初学者阅读难度极大。
像我一样连课本都看不懂的话,务必要看MOOC上袁春风老师的视频,跟着她把视频从头到尾看一遍,再把课本从头到尾看一遍,MOOC的课后习题也是要做一遍的(MOOC上有讲解哦)。
做题务必做课本配套习题《计算机系统基础习题解答与指导》,历年所考基本都是习题中的原题和变种题。第2章数据的机器级表示与处理、第3章程序的转换及机器级表示、第5章程序的执行只做选择题;第4章程序的链接、第6章层次结构存储系统是重点,选择题和分析应用题都要认真做;第7章异常控制流、第8章IO的分析也是只做选择题就行。
千万不要做王道的《计算机组成原理》,知识点完全不一样。
(4)计算机网络
建议直接看指定教材《计算机网络之自顶向下》,那本书看起来浅显易懂。若是你还是看不懂,可以看MOOC上哈工大的视频,就是根据这本书讲的。第一章综述可以不看;应用层中HTTP是重点,SMTP了解一下即可;传输层是重点,TCP协议几乎必考;网络层中,ipv4及相关协议是重点;链路层中,以太网相关协议是重点;再往后的内容可以不用看了,但其实是有可能考的,比如某年考过SSL协议,但我认为再往后学习性价比不高了。
做题可以做王道,先把选择题都做一遍,再把传输层、网络层、链路层的大题做一遍。
(5)算法
指定教材是英文教材,不建议阅读,算法导论也不建议用来备考。可参考黄宇的算法教材,亦可参考国内其它算法教材。
我压根就没时间学这门课,只抽了点时间把大O分析法、NP和NPC问题那些基础概念看了一下,再简单学习了一下动态规划。
南大重点考察动态规划算法,初试和复试上机往往都会考。背包问题、换硬币问题、跳台阶问题等常见DP问题要会做。今年考试就考到了换硬币问题,我刚刚好才做过。
做题建议做《剑指offer》,南大往往会让你用中文描述算法问题,不需手写代码。看一遍《剑指offer》,会用中文说出问题的解决方法即可。
 
四、复试
        南大复试300分,分差极大,初试差距的那一丁点儿差距很容易就被逆转了,因此复试一定要万分小心。初试成绩公布后,一般5周后公布分数线,再过1周复试。如果你等成绩出来再准备复试,你就凉凉了,因此最好在初试结束后立刻准备复试,反正我就连除夕那晚还在家看编译原理。  
      复试成绩出来,如果确定自己过了,第一时间就要联系导师了。导师的态度基本取决于你的成绩。如果不能确定能否录取,导师一般是不会确定答复的。导师的研究方向和联系方式南大官网上都有,一个一个发邮件自己询问吧。
资料审核
        考试前要进行资料审核。非应届生要求档案所在单位盖章。其实只要有章就行,你找学校教务处盖章也好,找工作单位盖章也好 ,找人才市场盖章也好,找居委会盖章就好,都可以没人管的。
        审核的时候会让所有全日制专硕选择是否填调剂知情书,填了的话总分不够就会被调剂到非全(非全可能也是要竞争的),不填的话总分不够就直接刷了。
笔试
        机试和面试基本拉不开什么差距,因此最后你录取与否、是否会被调剂非全是取决于笔试成绩的。笔试成绩尤其是离散数学分差很大。
顺便吐槽一下,笔试的时候,我们每人发了一个袋子,还以为是纪念品,结果居然是雨衣。
(1)离散数学
南大的离散数学是非常难的,而且没有任何套路。往年考逻辑、计数技术、群论、图论比较多。但今年完全不按套路出牌,做完我都要崩溃了,整张卷子我就会做一道题(屈书原题)。还好考完交流大部分人貌似都这样。
经常会考到屈书上一些生僻的知识点,比如边收缩、非降路径等。因此必须把两本教材从头到尾看一遍,然后把书上习题尽量做完。
(2)编译原理
刚开始接触这门课的时候我觉得非常难根本看不懂。但其实各种分析方法都是固定套路而已,理解了就非常简单了。强烈建议看MOOC上哈工大的视频,讲的非常详细,基本涵盖了考试范围内所有的知识点。
再加上南大往往考的都是固定题型,因此编译原理是最容易拿分的。考来考去无非就是DFA和NFA、LL分析法、LR分析法、SDD和SDT、翻译和回填。甚至都不用特地做题,把ppt上例题会做就行。
如果时间充足的话千万不能只看到回填。很多人只看到回填,看到最后一道19分的大题直接傻了眼。
心理测试
        今年新增加了心理测试,分数会体现到面试分数中。今年开始时间是12点40,而笔试交完卷已经12点15,因此好多人都没来得及吃饭又考了一下午,最好准备些面包、牛奶。
        做题的时候切记哪个选项积极健康选哪个就行。考研的大家心理压力都很大,千万别照实选啊。我在贴吧就看到一个人全照实选结果被以心理有问题为由刷掉的。
        心理测试做完的话,可以打开编译器,提前把代码的一些模板写好。
机试(50)
        南大的试考察与一般学校有很大不同。许多学校重点考察C++基础语法。南大2017年前只考一道题,只让你写某个类或者函数,做不出来直接就是0分。2017年改革后变为2小时3道算法题,每道题10个测试样例共100分,最后折算为50分。今年新加了心理测试,故改为1小时30分钟。虽然老师说“题量有所减少”,但大家均吐槽一点都没减少、根本做不完。
        机试之前,你需要详细阅读判分平台的使用说明,避免考试的时候再看浪费时间;下载完题目平台就自动开始了计时;平台默认选择最后一次提交结果,所以结束前需要手动选择一下最高分的提交(监考老师说如果你没选他们会手动给你选的);平台有计分板,会直播场上所有人的实时得分,看哪道题得分人数最多可以优先做那道题;机试可以用c/c++/java,windows上常见开发工具基本都有。
        大部分人在机试拉不开差距。今年166个人参加机试(和人院一起),大部分人得分在50~70(第一道题用暴力法可以通过5~7个样例)。我第一道题拿到50分已经过了57分钟了,可怕的是这个时候已经有大佬拿到290分了。剩下半小时我们大部分人根本来不及做第二题了。因此如果你有算法笔试基础的话机试可以轻易超过别人几十分,今年290的那位大佬初试只有320,他就是考机试完成了逆袭。
        机试是可以得0分的!不存在0分刷人之说,今年有16个人都是0分。因此机试可以裸考,上来直接用暴力法,混个中位数。如果要准备的话不推荐指定教材,那本书是讲c++语法的。建议看算法书然后刷leecode英文题。
面试
        面试分为上午和下午两场。学硕和专硕前几十名在上午,其余在下午。分为A-G共7个组面试。面试前老师抽签分配组,因此即使你是下午面试也无法预知面试自己的是哪位老师。
        理论上老师不允许问学校、专业、项目等,只允许问专业问题,但实际上绝大多数人都做了简历,没做的也会自我介绍学校、专业、项目经验等。老师问问题毫无章法,有问专业问题的,有问乱七八糟问题的,有聊生活的,有问你原专业问题的。简历的好处是可以稍微限制一下老师问问题的范围。如果你没有拿得出手的学历和项目经验,也可以不做简历,老师就只会问你专业问题。专业问题取决于老师是教什么科目的,因此完全无法预测。遇到没接触的问题可以直接要求老师换问题。
        面试规定每个老师必须问一个英文问题,一般会问你为什么报考南大、为什么跨考、介绍自己做过的项目。也有可能会随机问一个问题,比如让介绍你喜欢的作家、你喜欢的书、你喜欢的运动等。因为大部分人口语都很差,所以英语问题就是个过场,说个一两句就会直接打断你。
        我是上午D组第10位:三个老师,据说A是教操作系统的、B是教概率的、C是教网络的。
        复试过程如下:
进门递简历,老师首先看了项目经历并开始提问。提问中,老师发现该项目自己完全不懂,就问我这个项目是什么?
我告诉老师,我是在职报考非全日制专硕的,这里我工作中的项目。老师于是立刻中止了项目的提问。
B老师:“那我来提问你一些专业问题吧,你是光电信息工程专业,不是电子信息的啊”
我:“我们学校电类和光类是一个学院,专业课都差不多的。”
B老师:“我知道,南理工嘛,你们那个叫电光院。那你大学学习过哪些计算机相关课程?”
我:“我大学学习过C++课程设计、数字图像处理、视频技术处理、光纤通信等。不过计科大多数专业课如数据结构、操作系统等我都是工作之后自学的。”
B老师:”你为什么要自学这些?“
我:”因为我在工作中认识到自己在基础方面存在很大欠缺,例如我在学习docker的时候看到了层级文件系统这个词,当时我不知道什么是文件系统。后来学习了操作系统之后就明白了。“
B老师:”我看你大学主修课程里有数字图像处理,这个应该是比较重要的专业课了,描述一下边缘检测算法。“(边缘检测算法这个词他是用英文说的)
我:”记不得了。“
B老师:”你难道没有在项目中使用过这个算法吗?“
我:”使用过,例如我的毕业设计是四旋翼无人飞行器的寻迹飞行。对于轨迹图像,就是采集之后进行去噪声、二值化、边缘检测最后提取出轨迹图像的。不过毕业设计是很多年前的事情了,我实在记不清楚了。“
B老师:”好,既然你自学过计算机相关课程,我就提问你一些专业课问题。进程和线程有什么区别?“
我:”把进程的两项功能,独立分配资源与被调度分派执行分离开来。进程是系统资源分配和保护的独立单位,线程是系统调度和分派的基本单位。“
A老师:”还有呢?“
我:”进程有一个独立的虚拟地址空间;线程有独立的程序指令计数器和执行堆栈“
A老师:”还有呢?“
我:”线程相当于进程的一个执行序列。“
A老师:”还有呢?“
我:“。。。。。。我想不出来了。”
A老师:“再想想。”
我:“真的想不出来了。”
老师:“那你做过多线程开发吗?”
我:“没有做过。”
A老师:”没做过!?那进程和线程在内存中有什么区别?“
我:”没什么区别,它们都有独立的程序指令计数器和执行堆栈。“
A老师:”不是问你这个,我是问你XXXXXXXXX(总之说了一大堆我都没听懂她在问啥)“
我:”不好意思没听明白“
A老师:”在Linux下面怎么辨别进程和线程?“
我:”可以用ps等命令,查看父进程等基本信息,判断它是进程还是线程。“
A老师:”还有没有更好的办法?“
我:”不知道。我觉得Linux上辨别进程和线性是件挺麻烦的事,我平时就经常辨别错。“
A老师:”好吧。“(他这句好吧说得有种无奈的感觉,我就知道我刚刚答得很差了)
B老师:”下面是英文问题。please introduce your hometown“
我随便说了几句,老师就急忙把我打断宣布英文环节结束。
A老师:”好,可以了,看一下10分钟到了没?“
其他老师:”没到。“
A老师:”那我们再问几个问题,防止不到规定时间。B老师你还有问题要问吗?C老师你还有问题要问吗?“
C老师:”那我再问几个问题,问到10分钟。流你听说过吗?“
我:”没听说过。“
C:”那描述一下拥塞窗口吧。“
我磕磕绊绊的描述了一番。初试已经过了很久,都忘得差不多了。
C老师:”你描述的是TCP的协议。其它层也有类似的协议吗?“
我:”有的,很多协议都有类似的算法。“然后我又磕磕绊绊描述了一番。
C老师:”那我问你,TCP发送方窗口满、接收方窗口满、网络拥堵,三种情况有什么区别,如何恢复?“
我又磕磕绊绊的描述了一番。真的差不多都忘光了。
C老师:”10分钟到了没有?“
其他老师:”还有1分钟。“
C老师:”好,那我再问你一个问题。网络中如何防止环路?“
我:”可以设置最大跳步数,超过这个数字就认为不可达。“
C老师:”你说的是第X层的方法。那第X层又用什么方法呢?例如TTL中呢?“
我:”。。。。。。不好意思我只学过课本中的。“
C老师:”好,10分钟应该到了,出去喊下一个把。“
 
其他人还被问过这些问题:
1、假如3个瓶盖可以换一瓶果汁,我要喝n瓶饮料,需要买几瓶?递归表达式是什么?
2、n个元素的数组里有两个数是重复的,怎么用最好的时间复杂度把它找出来?
想法:用哈希法
3、有一枚硬币,正面的概率是p,反面的概率是1-p,怎么才能用这枚硬币得到50%的概率?
思路:抛两次,一正一反和一反一正的概率都是p(1-p)。如果是两正或者两反就重新抛掷。
4、一个集合,怎么把它分成两个子集,让两个子集中的元素之和尽量接近?
5、英文描述什么是P、NP、NPC问题
6、英文描述冒泡排序算法
7、英文描述你最喜欢的一个作家
8、英文描述某某APP的优势
 
五、非全的选择
        考试结束后,很多人要面临非全究竟上不上的问题。
        南大的学硕、全日制专硕、非全日制专硕在培养方式上完全无区别,均为3年制,毕业要求也完全一致:课程平均分80以上、CCF C类以上国际会议论文一篇。
        非全日制课程一般在工作日晚上或者周末,也可以选课到工作日白天。
        非全日制学费略贵一些(全日制8000/年,非全日制15000/年),和全日制南京户口学生一样没有宿舍(可以通过一些特殊手段申请,或者导师会给与1000/月左右的租房补贴),可以拿到派遣(不承诺不保证),没有奖学金,导师给的补贴和全日制学生一样(你有工作的话导师就不会给你补贴了)。
        分布式组与国电南瑞有合作,学生可以给他们写论文写专利申请作为工作,年薪8万左右。
        我个人是比较看好非全的,如果能工作三年项目经验+三年理论学习,可以取得很大的进步;如果完全脱产在学校里学习,南大的培养方式和和全日制没什么区别,可以参加很多比赛。
        缺点就是很多地方的公务员和国企考不了,不过我觉得南大计算机毕业一般也不会去考公务员、国企吧,都是奔着互联网大厂去的。