转专业回忆

2018.5.15—2018.5.16

为期两天的转专业考试终于结束了,心里的一块大石头终于落地了。

先说说 5.15 的笔试。

笔试考的是数据结构 B。一开始做感觉不是很难。不过中间做到一道简答题的第二小问:求一个森林 (含有三棵树) 的先序遍历,脑子一抽把原来的答案改掉了,改成了三棵子树同时进行先序遍历。森林如下图所示:

第一小问是转化成二叉树:

第二小问就是求这个森林先序遍历。本来想都没想写的:ADBEC。后来真的是脑子抽了,改成了 ABCDE。因为想起了之前做到的一道题,森林的层次遍历就是三棵子树同时进行遍历的,这里先序遍历我想当然以为也是这样。后来一直没改,考完上网查了一下,翻书又确认了一遍,发现错了。求森林的先序遍历就是求对应二叉树的先序遍历啊!怪我基础知识掌握的不扎实。大概扣了 2-4 分。

还有一道选择题不确定:求高度为 2 的 5 阶 B - 树最少的关键字个数。一开始我是不会做的,后来就从” 最小 “出发。B - 树每个结点最少有 ceil[m/2]-1 个元素。但是这有一个前提!那就是除根和失败结点以外!我又想当然的以为根结点也是,结果就以为根结点是 2 个关键字,下面有三个子树,23+2=8 个。但是根结点时可以最少只有一个关键字的!所以答案应该是 1+22=5!又两分没了。

其他感觉还行,比较难的知识点,比如:双向链表,稀疏矩阵,二叉平衡树的插入,B - 树的插入、删除,迪杰斯特拉算法,快排,构建最小堆,都没有考到。最后两个算法设计题,第一道是计算一棵二叉树中关键字等于 x 的结点个数。第二道是简单选择排序算法。

计算一棵二叉树中关键字等于 x 的结点个数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 定义二叉树的结构体和二叉树结点类型的结构体(题目给出的)
typedef struct btnode{
struct btnode *left;
struct btnode *right;
int data;
}BTnode;

typedef struct bitree{
struct btnode *root;
}Btree;

// count在main主函数里初始化为0
void Count(Btree *t,int *count,int x){
if(t == NULL){
return;
}
if(t->root->data == x){
count += 1;
}
Count(t->left,&count,x); //因为把count定义为指针变量,传的是count的地址,所以要加&
Count(t->right,&count,x);
}

简单选择排序算法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//简单选择排序算法
int SelectSort(int a[],int n){
int i,j,small,x;
for(i = 0;i < n;i ++){
small = i;
for(j = i + 1;j < n;j ++){
if(a[small] > a[j]){
small = j;
}
}
if(small != i){
x = a[i];
a[i] = a[small];
a[small] = x;
}
}
return 0;
}

其他应该没什么了。简答题考了一个直接插入排序,给出每一趟的结果。我当时在纠结的是括号括排好序的部分,还是未排好序的部分。最后还是选择括后面未排好序的部分。第一遍做完大概还剩几十分钟,就检查。前前后后检查了三遍,到考试时间结束才交上去,想把握大一点。

再来讲讲 5.16 的面试。

面试分在第二组。前面都是 16 级大二转计科、软工的,然后是 17 级大一转软工、软工 (嵌入式) 的。之前有听学姐说面试会要 2 分钟的英文面试。所以一直在背。准备的不够充分,本来应该昨天 15 日就背下来的,结果到 16 日上午才把英文版的自我介绍写好。中午坐 D1 到仙林正好 13 点多一点,就去图书馆背了几遍英文自我介绍,就去计算机学科楼等面试签到了。记得学姐去年说大二面试顺序是按笔试成绩从高到低排的,所以看到自己面试是第二个,心里有点高兴吧,也算给自己一点鼓励:我可以的。第一个进去面试的同学也是管理学院的,信管的一个大佬。感觉进去时间挺长的,有 5-6 分钟,出来时他说没问什么,然后我带着准备的装了获奖证书以及荣誉证书的文件夹就进去了。

进去之后,首先是说老师好。然后就说了一下自己带的文件夹里放的是一些获奖证书,一个女老师拿过去看了。然后最右边的老师问是不是上过他的课,对我有点印象。我说蹭过他带的数据结构重修班两节课,因为之前想问这个老师关于机器学习的东西,就顺便去蹭了。发现不同老师教的不一样,深度也不一样。冥冥中自有天意,谁知道面试我的会是这个老师。然后就开始提问了。自我介绍都没让我介绍,坐在中间的老师先是问我对计科有什么了解。我就说了一下计科对数学要求高,还有编程能力,以及阅读英文文献的能力,因为先进的技术从国外传到国内需要一个过程,想要赶上学习的潮流,就得有阅读英文文献的能力。然后,讲到数学,对我印象深刻的老师就问了我一道数学的问题:如何理解矩阵的秩?我想了一下,就说是行列式的值。老师说不对,然后给我解释了一下。我确实忘了线性代数了 (大一下学的) 所以这方面的知识还得自己慢慢补,因为机器学习里经常用到。然后坐在中间的老师又问我,为什么要从电子商务转来计科,电子商务不是很火吗?我说,我想做人工智能方面的研究。大一升大二暑假看了部美剧《西部世界》,讲的是人工智能,机器人的觉醒,然后发现很有意思。后来买了谭浩强的 C 语言,整个暑假把这本书从头到尾重学了一遍,课后习题代码都动手敲了一遍,然后感觉就来了。后面就一发不可收拾,大二上自学了 Python。现在也在学深度学习。然后老师又问了我大创的是什么级别,我说是校级重点。问了我指导老师是谁,我说是带我微机接口的老师,名字挂到了通院的另一个老师名字下面。老师说那应该转通工啊 (可能他以为我做的是通工方向的大创),我马上解释,我做的是和计算机有关的,做的是情绪识别,利用深度学习。然后那个女老师就问我证书里面有个 “单科成绩优秀奖学金” 是什么?我说是和同学合作发了一篇论文,辅导员通过了我的申请。接着,对我印象深刻的老师就说以后转来计算机,跟着计算机学院的老师做人工智能的项目。我说好的好的,谢谢老师。然后就面试结束了。期间,对我印象深刻的那个老师和其他老师提到好几次我对计算机很感兴趣。感觉冥冥中自有天意吧。

后来想想还好面试问的问题不难。之前准备的时候还在想 “面向对象” 是什么意思,发现不会解释。就是大概知道什么意思,但是就是说不上来。另外准备的其他一些面试会问到的题目没有问到。最怕问 “你最大的缺点是什么” 这个问题了。

走出面试会议室的大门,我感觉一下子轻松了好多。想想自己从当初大二上决定转,中间又畏惧大三补的课,退缩了几次,再到后面铁了心要转计科,真的是很艰难啊。不过还好,确定想转计科之后,就无所畏惧了。大二寒假留在学校培训美赛的时候,白天做数模题目,晚上抽一两个小时自学数据结构,看书 + 看 ppt。寒假结束差不多全部看了一遍,大二上开学花了两三周又看了一遍。然后就跟着学校的正常教学进度学了。到四月中旬的时候,开始重新复习,加上刷题。再到五月,开始做考研的数据结构题目。感觉自己为了转专业真的是投入了好多的精力。想想自己进入大学以来,没有哪一件事有准备转专业这么全力以赴了。最近的一件估计就是高考了。这种 all in 的感觉让我仿佛回到了高考。这样的感觉真不错!

期待好消息,晚安!

2018.5.17 0:36

本文于 2018 年 5 月 17 日首发于 CSDN

0%