2021年CS保研经历(五):北航计算机学院、武汉大学数学与统计学院、华科计算机科学与技术学院

写在前面

  这部分是我预推免的重头戏,同时也是结尾部分。

  预推免其实是有一种潜规则在里面的:比如某个学校发布的文件说是招收170个,但是夏令营就占了100个,然后本校推免生也要占据不少。即使夏令营会有不少鸽子,但预推免留给外校的机会真的不多,我们更多地是作为鸽子的候补人选。

  所以预推免入营后拿到优营的概率是低于夏令营的,但是夏令营入营难度又大。。。计算机专业的保研就是这么残酷!!

一、北航计算机学院(9.24-9.25)

  七月份的时候由于害怕机考被刷,我没有报名参加北航计算机学院的夏令营。

  9.22收到北航计算机学院的入营通知:9.24机考,9.25根据机考结果择优面试。

1.双机位测试(9.23)

  主要测试网络环境、考场环境、考生诚信复试承诺及身份认证。

2.机考(9.24)

  上午十点开始,两个题目,两个小时,第一题60分,第二题40分,一般做出第一题就能进入面试。

  第一题是让利用栈模拟一下稳定排序的过程,具体题目也记不太清了,比较基础:

代码语言:javascript
复制
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<stack>
#include<vector>
#include<sstream>
#include<unordered_map>
#include<unordered_set>
using namespace std;

struct node {
int val;
int ind;
node(int val, int ind):val(val), ind(ind){}
};

vector<node*> A, B; //栈
int n;
int cnt = 0;

int find(vector<node*>& v) { //寻找一个栈中最小值的编号
if(v.size() == 0) {
return -1;
}
int ind = 0;
int n = v.size();
int _min = v[0]->val;
int idc = v[0]->ind;
for(int i = 1; i < n; i++) {
if(v[i]->val < _min) {
_min = v[i]->val;
idc = v[i]->ind;
ind = i;
}else if(v[i]->val == _min && v[i]->ind < idc) { //相同则选择序号小的
_min = v[i]->val;
idc = v[i]->ind;
ind = i;
}
}
return ind;
}

int main() {
int x;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> x;
node* t = new node(x, i);
A.push_back(t);
}
int id = find(A);
//先将A中最小值输出
for(int i = A.size() - 1; i > id; i--) {
B.push_back(A[i]);
A.pop_back();
cnt++;
}
cout << A[id]->val << " "; //输出最小值
A.pop_back();
cnt++;
while(A.size() != 0 || B.size() != 0) {
//从AB中各自找最小值
int x1 = find(A), x2 = find(B);
if(x2 == -1) {
//只输出A
for(int i = A.size() - 1; i > x1; i--) {
B.push_back(A[i]);
A.pop_back();
cnt++;
}
cout << A[x1]->val << " ";
A.pop_back();
cnt++;
}else if(x1 == -1) {
for(int i = B.size() - 1; i > x2; i--) {
A.push_back(B[i]);
B.pop_back();
cnt++;
}
cout << B[x2]->val << " ";
B.pop_back();
cnt++;
}else if(A[x1]->val < B[x2]->val || (A[x1]->val == B[x2]->val && A[x1]->ind < B[x2]->ind)) {
//将A中x1前弹出
for(int i = A.size() - 1; i > x1; i--) {
B.push_back(A[i]);
A.pop_back();
cnt++;
}
cout << A[x1]->val << " ";
A.pop_back();
cnt++;
}else if(A[x1]->val > B[x2]->val || (A[x1]->val == B[x2]->val &&A[x1]->ind > B[x2]->ind)){
//将B中x2前弹出
for(int i = B.size() - 1; i > x2; i--) {
A.push_back(B[i]);
B.pop_back();
cnt++;
}
cout << B[x2]->val << " ";
B.pop_back();
cnt++;
}
}
cout << endl;
cout << cnt;
return 0;
}
/*
8
86 25 -200 500 301 25 43 78
*/

  第二题很难,题目也记不太清了。

  晚上官网出了面试入选名单,我被分在了很靠前的位置。25号早上八点半开始进行面试,每个人二十分钟,我排在第三位,也就是九点十分开始面试。

  24号晚上疯狂复习专业课,但感觉也没看进去多少。

2.面试(9.25)

  进入面试后,首先是一个英文自我介绍,这个背一下就行。

  然后问了一个政治问题,只要不反动就没问题,随机应变。

  接下来是数学课问答:

  第一个问题:我看你在博客里面有专门写过SVM,能解释下什么是凸集合和凸函数吗?听完后我感觉我完了,这第一个问题就把我难住了,老师对我的印象肯定就不太好了。。。想了会,说了下高等数学中凸函数的定义,凸集合直接说了不会。

  第二个问题:什么是矩阵的秩?这个比较好回答:一个矩阵至少有一个r阶子式不为0,而所有的r+1阶子式都为0,那么r就是矩阵的秩。

  第三个问题:什么是矩阵的迹?矩阵主对角线元素的和。

  数学面试结束,感觉不太妙。

  然后是变态的专业课面试:

  第一个问题:能解释下递归和循环的区别与联系吗?我感觉我可能没说全,随后老师根据递归调用又问了堆和栈的区别,这个比较简单。

  第二个问题:编译的各个过程?编译原理我真的没看多少,不过还是说出来了那几个过程。然后老师又问了我一个C语言程序从.c文件怎么一步步变成可执行文件的,这个勉强答上来了。

  第三个问题:计算机从加电开始到加载操作系统结束,这中间是一个怎么样的过程?这个真的触及到我的知识盲区了。。。哭了。。。

  最后一个问题:解释下计算机网络各个层的主要功能,以及给一个人发送微信这其中经历了什么过程?这个说了老半天,算是说出来了。

总结:问的问题都太综合了!!!!感觉北航专业课的面试确实不一样,很考验人,难度很大。

  最后是简历面试:

  问了一些论文的问题,回答得还不错。不过我感觉都无关痛痒了,拯救不了我垃圾的专业课!

3.面试结果(9.25晚上)

   不出意外被刷了!知道结果后还是挺难受的!!

二、武大数学与统计学院(9.25)

  9.23收到了武大数统机器学习理论方向的面试邀请!

1.面试

  25号早上九点多面试完北航后,紧接着就是十一点多的武大面试。

  进入面试后,老师问我有准备英文自我介绍吗?我说准备了,老师笑着说那就不用自我介绍了。我:??????

  然后就是数学的一阵狂轰乱炸。我以为老师会因为我是计算机专业的,会尽量少问我专业的数学问题,但老师显然不知道,问了大概三个数学问题后发现我回答的都不在点子上,这才发现我是计算机专业的,她问的我都没学过。。。

  于是老师问我学了哪些数学课?我说高数线代概率论。接下来又被问了几个高数和线代的问题,回答得也不是太好,但我至少知道面试老师在说什么了。。。。

  紧接着就被一个老师怼了,老师说即便你是计算机专业的,但你既然报考了我们学院,至少也应该好好复习数学吧?我小声哔哔:我以为老师会看在我是计算机专业的份上,问我一些数据结构之类的。。。。

  接下来是一阵沉默。

  随后一位老师说即使你进来了你也跟不上啊,你打算咋办。我说如果我进了武大,那我保研结束后肯定会好好学一下数学的。

  面试结束。

2.面试结果(9.26)

  面试结果第二天就出了,分数包括两个部分:背景分数+面试分数,只要加权后达到了60分就能通过。出乎意料的是我的面试分数竟然达到了82分。。。。因为里面大部分人都差不多是这个分数。不过我的背景分数只有可怜的49分。。。。然后总分59.6分。。。大部分人的背景分数都是90左右,只有我和另外一个计算机相关专业的人分数比较低。感觉应该是先有了59.6的总分,然后根据面试分数算出了我的背景分数。。。

  赖不了别人,毕竟我确实不是数学相关专业的。

  不过填报系统的前一天,也就是27号,武大还是拨通了我的电话,告诉我被补录上了,这是后话。

三、华科计算机(9.25)

  能够进入华科的面试真是大大出乎了我的意料,因为华科入营难度还是挺大的。

  随后查了下招生名额,又问了下往届的学长学姐,发现预推免给我们的名额其实已经不多了,我的希望实在很小,应该就是去当炮灰的,不过还是决定参加了一下。

1.面试

  在25号上午分别参加完北航和武大的面试后,下午四点多,我又参加了华科的面试。

  考核内容包括:考生个人陈述 1-2 分钟,介绍学业背景、计算机相关专业 基础、科研经历或者工程实践经历、成果获奖情况等;考官就考生知识结构、综合能力、科学素养等方面进行提问。

  我那组一共26人参加面试,我是第25个。轮到我时老师已经面试了快三个小时了,感觉他们都已经快睡着了。。。。

  进入面试后首先也是先打开PPT进行自我介绍。老师也是被我的CSDN博客吸引到,让我打开博客,浏览了大概五分钟,中间也问了不少问题,都回答上来了。

  随后一个老师让我介绍论文,我讲完后也没问我什么,面试结束!!

  感想:整个面试过程感觉就是在敷衍人,老师不是很耐烦。所以我知道我又没了。。。

2.面试结果(9.26)

  第二天晚上出了结果,不出所料被刷了。但之后一个老师打电话告诉我我有很大希望被补录上,叫我填报系统那天等一等,不要放弃。