北航计算机2018年保研推免经历

最近没怎么写博客,是因为忙于保研的事情,今天只睡了5个小时一大清早就去第一个面了计算机,下午出了预录取名单,晚上上保研系统确定了志愿,可以说稍微有些宽下心来了。

我是从本校软件学院推免到计算机学院。

先上图
北航计算机2018年保研推免经历_第1张图片
北航计算机2018年保研推免经历_第2张图片

从之前的保研准备开始说起,说来惭愧,也只是刷了一些POJ的题目,可以见我之前的几篇博客,练得也是断断续续,但是勉强保持一点点状态,不过另一方面,这些题目涉及到的大多为高级算法,实际机试的时候基本用不到。

大概在八月份中旬的某一个出去交付的日子中去找了导师,基本就是通过浏览 https://mysupervisor.org 中的评价和一些从六系的人那里打听来的情报来联系这个导师,运气很不错,当天和他谈了两个多小时,刚好也没有人和他py了名额,就先这么说好了。后来报名做了他课的助教等事,在此略过。

之前曾经在大三寒假之前联系过北大数字媒体所,老师给我了一篇期刊一篇硕士论文让我下次讲讲,但寒假中有学长打广告招实习生,就鸽了北大,去了清华数据库实验室。但多数清华实习应该都是找保博的人,因为个人选择问题就没有和老师说想留在清华。但清华的这次实习经历非常重要,虽然一开始没什么事比较尴尬,后来做了一个留学生的助手,一是认识了这个有趣的人,二是在论文上挂了二作准备投顶会,算是很有价值的科研经历。

九月的时候,主要是因为基本想着就保计算机了,同时我院的推免名额又出得晚,等到拿到名额的时候,才发现清北浙南都没了名额(好多高考考砸出去拿国奖的同学都保回了浙大),并且计算机卡了一个时间点,也就是今天,不少在28日之前结束面试的学校都要求在今天的某个时间段完成确认志愿,否则视为放弃,而计算机的面试结果今天下午4点才出,足以让很多人放弃掉原有的offer。同时我报了一个武大的复试,只进行了QQ面试,就在昨天,不是压力面试,基本英文自我介绍之后就是闲聊,算是让我能在面计算机之前涨点信心。

前几天的准备,以考研机试题和考研复习材料为主,机试题基本是在 https://nowcoder.com 上练的,排序一定要掌握,在最后贴牛客上清华第一道的稳定排序题代码。同时牛客上也有一些选择题可以参考,不过真的好难。考研复习材料浏览一下即可,最后也没用上,准备出给室友。但可能对于一些抽题的面试,考研材料还是有一定价值的,但同时专业课基础课的基础功基本可以说是占大头。

昨天机试,第一道身份证号年龄+姓名字典序排序,不存在需要稳定排序的情况,所以直接用了qsort,写一个比较函数就行,基本看题到验证完成20分钟。第二道是由以前的机试题修改而来,问的是窗口点击,可以参考ZoeMoon95的CSDN博客,但是今年提高了难度,在每个窗口中有字符串(等宽字体),经过多次点击之后,问某一个窗口的显示字符串是怎样的,如果某个字符被遮挡则用#表示。首先差点输入就跪了,还好后来试出来cin之后的换行符会被getline读取,使用string _, text; getline(cin, _); getline(cin, text);就可以把多余的换行符给干掉。一开始也是考虑去算intersection啊什么的,但是转念想想反正没说卡多少时间,直接用最简单的——一个一个字符判断是否被某一个窗口遮挡,只要算出每个字符的坐标就行了(真的要灵活啊我瞥到一个人用了三重for不知道她过了没)。我用字符的左下角代表字符的坐标,所以和判断点击窗口不太一样,点击窗口点到边上也算点中,所以是x <= a <= x+w,但是字符遮挡就是x <= a < x+w。还发现样例的图中多了一个空格,一个窗口一行多了一个字符,方的一匹,不过机试老师说仅供参考,就把这个图的错误写在代码注释里交卷走人了。

后来和导师谈起机试和面试,他说就是出这种不算难的题,如果这样的题不过的话当然就被刷了。当然第一道题占60分,第二题40分,第二题应该做了一部分人的人应该比较多。

今早的面试,也没问啥,进去发简历,英文自我介绍,抽英文翻译,翻了个MapReduce(很多句子没准备好翻到一半才发现应该倒装很尴尬啊),然后抽政治题,瞎编了一点,就进入冷场。一个老师问我方差是啥,另一个问我面了哪些学校,是不是准备去清华这个,我说单纯实习,另一个问了清华的paper一作是谁我说学长,就,结束了。所以为啥面试分有190,我也不知道,不过这个分是经过面试组内的正态化过的,所以分数都是小数。

准备录取的时候有一些小插曲,由于我是软件学院软件工程,招生办强制我只能保计算机学院软件工程的学硕(虽然是真正的双一流A+啦捂脸),如果转其他专业只能给专硕,虽然学硕专硕并不是很介意,但还是要弄清楚。现在的老师是不分专业的,以前是学生选老师,老师是什么专业学生就是什么专业,现在老师可以带任何专业的学生。

其实我觉得啊,如果高考的时候已经做好了保研的打算,没准去分低一点的学校拿大班一二更容易保清北,像我就是十名多不尴不尬,硕士竞争激烈,博士名次不够(清华5%)。保本校的话就轻松一些,主要是基础功加一些小亮点。如果你是一位想保研的大一大二学生,一定要多做科研

面试的时候我说“When looking back to the three years of university life, I see my limitations very clearly, I have not enough depth on research, not much experience on practicing.”这是真心话,现在既然保研已经尘埃落定,那另一程则该策马扬鞭。

清华机试 成绩排序(稳定)

#include 
#include 
#include 
struct user
{
    char name[25];
    int grade;
};
void sort(struct user **begin, struct user **end, int (*comp)(struct user *, struct user *))
{
    int length, index;
    struct user **middle, **buffer, **p1, **p2;
    if (begin + 1 == end)
        return;
    length = ((int)end - (int)begin) / sizeof(struct user *);
    middle = begin + length / 2;
    sort(begin, middle, comp);
    sort(middle, end, comp);
    buffer = (struct user **)malloc(sizeof(struct user *) * length);
    index = 0;
    p1 = begin;
    p2 = middle;
    while (p1 != middle && p2 != end)
    {
        if (comp(*p1, *p2))
        {
            buffer[index++] = *p1;
            ++p1;
        }
        else
        {
            buffer[index++] = *p2;
            ++p2;
        }
    }
    while (p1 != middle)
    {
        buffer[index++] = *p1;
        ++p1;
    }
    while (p2 != end)
    {
        buffer[index++] = *p2;
        ++p2;
    }
    memcpy(begin, buffer, sizeof(struct user *) * length);
    free(buffer);
}
int comp1(struct user *a, struct user *b)
{
    return a->grade >= b->grade;
}
int comp2(struct user *a, struct user *b)
{
    return a->grade <= b->grade;
}
int main()
{
    int n, order;
    while (scanf("%d", &n) != EOF)
    {
        struct user *users[n];
        int i;
        scanf("%d", &order);
        for (i = 0; i < n; ++i)
        {
            users[i] = (struct user *)malloc(sizeof(struct user));
            scanf("%s", users[i]->name);
            scanf("%d", &users[i]->grade);
        }
        if (order == 0)
            sort(users, users + n, &comp1);
        else
            sort(users, users + n, &comp2);
        for (i = 0; i < n; ++i)
            printf("%s %d\n", users[i]->name, users[i]->grade);
        for (i = 0; i < n; ++i)
            free(users[i]);
    }
}

你可能感兴趣的:(生活)