3月18日待录取名单公布后,幸运地被“待录取”了。然后前两天去和导师面谈了,实验室基本也确认下来了。趁现在回忆一下自己的备考过程,供学弟学妹们参考,也当作纪念一下自己这一年来的努力。
我初试并没有考好,数学一,英语二以及政治的复习建议看一下知乎上一些考得比较好的同学的回答,例如这个回答:考研400分到底有多难?另外我自己的复习经历以及一些感悟如下,供参考。
计网注意官方通知的参考书是
虽然很多人都看的是谢希仁的书,但有些考试题目只能在这本书找到答案,建议看看《自顶向下》这本书。834计网喜欢考一些知识点的记忆,一些课本的重要图表最好记一下。
另外834有一个很明显的特点:历年真题重复性特别高,上一年刚考完的题目,这一年改一下数据甚至原题再考一次完全有可能。起码考察的知识点基本都是一致的。所以建议围绕着真题来复习,提高效率。
3. 英语二:前期我用知米背单词这个APP来背单词,喜欢扇贝或者墨墨应该也没问题,主要是能坚持。在19年4月前我的学习量是一天100新词加上复习已经学过的单词。4月开始做真题阅读之后,我积累词汇的主要方式是做完阅读之后用欧路词典查不懂的单词然后保存到生词本,然后背这些生词。到了暑假我又把红宝书的重点词汇过了一两遍。。历年英语真题建议买张剑的黄皮书。我前期先做了英语一阅读,有些题比较难受不要害怕就好,这时候的目的是积累词汇和做题技巧。到了后期开始做英语二真题就会发现挺简单的了。如果你做英语一的阅读都觉得蛮简单,平均一套题只错了4,5道阅读,我建议减少英语学习时间,最后你考到80+估计问题不大。因为和我一起备考的一个同学就是这样,他做英语一的时候平均一篇文章错一道,最后他考前很少学英语,也考了85......总之我发现英语这东西特别吃基础,考研期间花很多时间学的话性价比其实不是很高。大作文我是看了一些王江涛的《高分写作》上面的范文和一些其他地方的范文然后自己总结了一个模板。小作文我是分类整理了一些范文来背。
4. 政治:我政治考了67。9月才开始看的《精讲精练》,但是后来感觉太厚了,不够时间看,而且感觉太多看了也记不住,就换了《风中劲草》。强烈推荐《风中劲草》,看好这本书,适当刷一下肖秀荣的《1000题》,选择题可以说没什么问题了。分析题前期不用理,到了肖秀荣出肖八肖四,赶紧买来背就行了。很多公众号会出一个精简版,可以先背精简版,然后再看熟原版的答案就好,到了考场上其实不少地方要靠自己发挥,所以很多地方自己懂得怎么表述就没问题的。马原的分析题我是总结了一下历年的考点,但是最后发现还不如直接背肖四直接和高效......肖秀荣真的太神了哈哈哈。
我这篇帖子估计最有价值的就是这一部分了。毕竟作为复试逆袭了100名最后被成功录取的幸运儿,我想我的复试复习规划做得的确不错。
这本书建议做一下,18年考到了上面数据库恢复那一章的补充习题,带有检查点的数据库恢复那道题。我还买了红果研出的复试资料,上面有历年真题、期末试卷和一些练习题,建议买来练习一下。复习资料就是这些,详细的复习过程以及一些注意事项我下面再说。
机试:机试是决定复试成败乃至考研成败的一个关键点,是科班生比跨考生有优势的一个地方,是跨考生必须高度重视的一个地方。华科以前的机试只允许使用C语言,考察重点是字符串的处理,偶尔会考一下算法。从18年开始允许使用C++,19年限定使用Dev-C++或者Code::Blocks编码。我个人对Dev-C++比较熟悉,所以后来就用了它,用Code::Blocks也可以。详细的复习过程以及一些注意事项我下面一起说。
英语听力和口语:考试的听力非常简单,速度很慢,选项基本就是数字等简短的词(例如17,70,14,40,就是听材料选出某个东西的数量是多少就好)。我考前练习了六级听力和四级听力,其实只需要练一下四级听力就完全超过了考试要求。所以建议每天练一篇四级听力吧。如果初试很高分,或许你可以忽略这部分复习,毕竟最后这里拉分很小(太简单)。口语我是考前写了一篇自我介绍,然后根据自己的自我介绍准备了几个问题。例如自我介绍里面提到我喜欢看电影,于是我准备了如何用英文表述自己喜欢的电影以及为什么喜欢这个电影,最后运气很好考官问到了。其实口语这一块感觉运气的确蛮重要,据说有的老师还会问专业问题,不过我考前也准备了几个,例如"What data structures are you familiar with?"和"What algorithms are you familiar with?"。再提一点就是面试一定要自信,面带微笑,即使说错了也无需纠正自己,老师有可能没注意到你这个错误的。
专业面试:我报的是金海实验室,虽然最后录取实验室不是这个,但是可以分享一下这个实验室老师喜欢问的问题。首先简历不需要,老师拒绝看简历,自我介绍就好。老师会根据你的自我介绍来提问。主要包括:你的项目经历的细节、毕业设计的情况、六级多少分、机试的情况(可能问一下你的CCF的情况)和是否接受调剂(必问的,不用担心以为是自己没希望了)。建议大家好好准备一下毕设,不需要已经完成得很好,但是实现思路一定要清晰准确,而且选题最好不要太low那种......
接下来我详细讲一下专业课笔试和机试的复习策略,毕竟这两块是复试的重头戏。
从初试结束开始,我意识到自己没考好,马上开始了专业课笔试的复习。首先是准备好了资料(看前面),然后开始看课本,同时做课后习题。由于本科学过,所以效率还是蛮高的。我把重心放在了数据库的复习上,因为我觉得算法其实你只要会那些算法设计技巧和那些经典例题,它怎么出题都问题不大。而数据库需要很多的记忆,所以应该分配多一些时间去识记吧。
数据库的重点是很明显的,我之前看过一个经验帖分析地很好,贴上来大家看一下吧:
选择题 (单选) 15 分
第一道大题:关系代数语言结合 SQL 查询(4 小问)
第一小问是给出了一个关系代数语句,让你写出结果(画一个表即可)
第二小问是根据要求写出合适的关系代数语句
第三、四小问是根据要求写 SQL 查询语句
第二道大题: Armstrong 公理,然后给出两条函数依赖关系后给出一个结
论,判断正误,正确给出你的推导,错误说明理由(5 分)
第三道大题:数据库的故障恢复(8 分)
考点主要是
第四道大题:根据文字描述写出 E-R 图(7 分)
每年的试题中考察知识点的范畴出的比较广可以从第一章绪论一直考到第
十章数据库的完整性(按找第三版目录,第五版为第一章直到并发控制那一章节),
但其实分值比较高的大题永远是出现再那几个章节(后续会针对这些问题作出说
明),当然也因为这些知识点是数据库的重点,所以不考它考啥。用一句话的点
评就是基础扎实拿分容易。
时间不够时重点复习的内容(每年大约有 40 分左右):
(1)第一章绪论中出现的概念, 2018 年就在此出了几道选择题,对这一章
中的出现概念基本上都要弄清楚是什么,一些概念之间的区别在复习时也要特别的注意;
(2)关系代数语言(单独出成题的可能性非常低)经常和 SQL 查询混到一
起考察,因为两者共性的内容比较多(比如关系代数中的选择运算就和 SQL 其
中 where 部分功能相当都需要判断是否条件为真,投影就如同 select 某列(但
是去除该列中重复属性值)), 2018 就是如此考察,比如给出某个代数查询语
句后让你给出它的结果(用表格表示)或者描述出它所代表的含义或者按照题目
要求写关系代数式子,还有一些基础的题目,例如如何使用 5 种基本运算(并、
差、笛卡儿积、投影、选择)来描述其他三种运算(交、连接和除)而 SQL 查
询出题情况就较为单一,根据题目描述来写出相应 SQL 语句,在附件中给出了
一些我复习中使用过的一些 SQL 查询语句的相关补充,基本上能独立完成给出
的这 25 条查询语句能解决复试中遇到的任何 SQL 相关试题。
(3)数据库设计那一章节中逻辑结构设计, E-R 图及其转换为相对应的关
系模式,
这道题目通常有一大段文字,首先会让你画出相关的 E-R 图,标明主码和外
码,然后通过该 E-R 图给出你的转化生成的关系模式,所以需要熟练掌握的是
E-R 图的相关概念,和转化的一些原则
(4)关系数据理论:主要侧重于对于规范化理论的考察,比如题目中给出
的关系满足第几范式,然后会评价下该范式所存在的缺点,少量题目会考察
Armstrong 公理,其后的章节基本不考。
(5)数据库故障恢复:非常重要的章节,每年都会来那么一道选择和大题
基本概念的考察常常在选择题中会出现,比如事务的几个特性,判断是什么
类型的故障大题中考察的重点,当然就会放在故障恢复策略这一块(这一小结因为结合
了之前的知识点,出题考察了基础又还比较综合,所以大题一般都会在这一块),
比如恢复时的步骤,具备检查点的恢复策略又是怎么样的,或者给你一个情景,
让你给出恢复一个方案来。
(6)并发控制:
选择题常常涉及的点比如封锁协议,活锁死锁相关的知识点,封锁的强度等
一些书中黑体标注的概念(今年选择题也有所涉及);大题常常涉及的点有比如
并发控制所带来的数据不一致性问题有哪几类或让你造出造成数据不一致性的
事务序列、并发调度的可串行性和两段锁协议,题目会给出一些序列问题为是否
可串行化
我补充一下今年数据库大题大致情况如下(可能有遗漏):
往年的真题有考过课本的经典算法,所以我把大部分课本的经典算法都搞明白了,例题也可以独立完成了,还挑了一些课后习题来做。最后考试的时候只有两道大题,没有考课本经典算法例题。
我的机试复习经验不一定适用于跨专业考生,因为我本科期间学过一点C++,对C++基本的使用还是有点熟悉的。从初试结束开始,我就先去做了牛客网上面的华科真题,然后做了搜集来的历年机试真题(03年-18年)。第一轮不限时,主要目标有两个:一是先熟悉真题喜欢考什么,二是总结可能考的但自己还没有很熟悉的基础知识(我的总结在下面贴出来)。另外我跳过了一些诸如“无冗余接受并输出”等我认为价值不大的题目。刷完第一轮之后我去看了《算法笔记》,选了一些自己认为比较贴合考试风格且自己不熟悉的章节来看,而且选做了一些觉得不错的例题。然后就开始二刷真题,第二轮每道题限时20分钟。如果无法按时完成的题目我会标注出来方便日后再复习。做完两遍真题后我开始刷LeetCode上面的难度为中等的字符串和树的题目,以及牛客网上面一些其他高校的真题我选做了一些树、矩阵操作等类型的题目。另外自己还写了一些回溯、动态规划的题目(曾考最长回文子串,要求用动态规划来做)。还做了几道蓝桥杯的题目(因为当时发现18年第三题求循环节其实是蓝桥杯考过的题目),不过后来不做了。我给跨考同学的建议是加强基础题型的训练,保证起码能做对两道题。因为有时候有一道题很多人不会,其实你不会做也问题不大。不过我是有点编程基础的,而且初试分数已经很低了,所以每分必争的。下面是我之前小结的C++上机基础,基础不太好的可以看看:
#include
#include
using namespace std;
int StringToInt(string str) {
return atoi(str.c_str());
}
#include
#include
using namespace std;
string IntToString(int num) {
char str[100];
return itoa(num, str, 10);
}
#include
#include
using namespace std;
string DecToOther(int dec) {
char str[100];
return itoa(dec, str, 2);//把2改为其他数字即可转换为其他进制
}
#include
#include
using namespace std;
int OtherToDec(string str) {
const char *s = str.c_str();
char *stop;
return strtol(s, &stop, 2);//把2改为其他数字即可由其他进制改为十进制
}
#include
#include
using namespace std;
struct Node {
int x;
int y;
};
//如果x不相等则按x降序排列,x相等则按y升序排列
bool com(Node &a, Node &b) {
if (a.x != b.x) return a.x > b.x;
else return a.y < b.y;
}
int main() {
vector vec;
//...给vec添加数据,略
sort(vec.begin(), vec.end(), com);
return 0;
}
#include
#include
#include
using namespace std;
int main() {
//迭代器访问等基础不总结了,0基础的同学可以参考《算法笔记》
string a = "xxxyyy";
string b = "zzz";
string s2 = a.substr(3, 2);//取子串。s2为"yy"
string::size_type n = a.find("yy");//n为3
a.find("yyx");//返回string::npos
string s3 = a.replace(0, 3, "fff");//s3为"fffyyy"
string::iterator p = a.insert(a.begin(), '_');//返回成功插入后指向'_'的迭代器
a.insert(a.find('y'), "_str_");//在第一个找到'y'的下标前面插入一个指定字符串"_str_"
}
#include
using namespace std;
int main() {
set s;
for (int i = 0; i < 5; ++i) {
s.insert(i*i);//添加元素
}
s.find(4);//查找返回迭代器,找不到则返回end()
s.erase(4);//删除
return 0;
}
#include
#include
#include
#include
#include
using namespace std;
int main() {
queue q;
for (int i = 1; i <= 5; ++i) {
q.push(i);//入队
}
if (q.empty()) {
cout << q.front() << " ";
}
cout << q.back() << endl;//输出队首1和队尾5
if (q.empty()) {
q.pop();//队首1出队
}
return 0;
}
#include
#include
int main() {
int n = 9;
double pi = 3.1415926;
printf("%02d\n", n);//输出09
printf("0.3f\n", pi);//输出3.142
return 0;
}
#include
#include
#include
#include
using namespace std;
int main() {
//打开文件,清空内容,重新写入。ofstream::out指示以写模式打开
ofstream out1("D\\abc.txt", ofstream::out);
string s;
while (getline(cin, s)) {
out1 << s << endl;
}
out1.close();
//打开文件,向文件追加内容。
//ofstream::out指示以写模式打开,ofstream::app指示写操作前定位到文件末尾
ofstream out2("D\\abc.txt", ofstream::out | ofstream::app);
while (getline(cin, s)) {
out2 << s << endl;
}
out2.close();
//读取文件
ifstream in("D\\abc.txt");
vector vecs;
while (getline(in, s)) {
vecs.push_back(s);//保存到vector方便后续处理。若只需打印则无需保存。
}
in.close();
return 0;
}
int gcd(int a, int b) {
if (b == 0)return a;
else return gcd(b, a%b);
}
求得A和B的最大公约数是C,则最小公倍数是A*B / C(防止溢出可以写为A/C * B)
//声明一个函数指针类型ptask,该型指针指向一个函数,该函数返回void,输入参数为空。
typedef void(*ptask)();
void task() {
//...
}
int main() {
ptask p = task;
p();//通过函数指针调用函数
return 0;
}
以上就是我的19华科备考经验,其实自己考得很一般,只是想尽力帮一下学弟学妹们,希望大家吸取对自己有用的内容就好,毕竟经验这种东西不一定适用于每个人。如果有学习疑惑,欢迎加入20华科计算机考研交流群,群聊号码:538393519。