2021届BiliBili校招 数据分析/后端开发 笔试题记录

1. 背景

最近做了BiliBili2021届校招数据分析岗的笔试题,和后端开发是同一套题,之前在找相关资料的时候没有发现数据分析笔试题型的信息,于是做完以后发个帖出来给大家参考。

2. 题型

时间一共是105分钟,30道选择题,共60分,3道算法题,共60分,加起来120分。

本来给算法题每题分了20分钟,每道选择题大概1-2分钟,最后做完选择题还剩下70分钟,今年算法题非常简单,提前25分钟做完了,感觉选择题是重点。

3. 选择题范围

选择题基本上是计算机考研408的内容,数据结构、计算机网络、计算机组成、操作系统这些题目乱序地来。难度中等,如果能把408的书多看几遍应该问题就不大。

能回忆起来的内容大概是这些:

3.1 数据结构

  1. 树的遍历,根据前序中序推后序之类的,2题
  2. 排序算法,各种排序的复杂度,排序方式等等,3-4题
  3. 逻辑结构特点,判断是不是线性结构之类的,2题
  4. 内存大小,64位Linux下,char a[10],char *b = (char *)malloc(10* sizeof(char)),sizeof(a)和sizeof(b),大小是多少,答案是10和8,1题

3.2 计算机网络

  1. TCP滑动窗口协议,计算,1题
  2. OSI分层结构,数据链路层的功能等等,1-2题
  3. CRC校验码,计算,1题
  4. 网络协议,ping会用到哪些协议等等,2-3题

3.3 操作系统

  1. 内存泄露,在哪种情况下会导致内存泄露,1题
  2. Linux命令,创建文件命令,1题

3.4 计算机组成

  1. 进制转换,8进制和2进制转10进制,比较大小,2题

3.5 其他

  1. 软件工程,设计模式,考的应该是装饰模式的特点,1题
  2. 数据库,SQL语句,1-2题
  3. 网络安全,CSRF攻击如何防护,1题

4. 算法题

3道算法题都比较简单,在牛客网上看到有人发统计问卷,70%以上都AK了。

4.1 第一题

算24点,给4个数字,判断能否通过四则运算算出24。

题目是类似于leetcode的那种,在给定的函数里面写代码,只要返回值,不需要输出。

这题数字比较少,直接暴力就能算。

扫描二维码关注公众号,回复: 11591518 查看本文章

double calculate(double x, double y, int countFlag)
{
    if (countFlag == 0) {
        return x + y;
    } else if (countFlag == 1) {
        return x - y;
    } else if (countFlag == 2) {
        return x * y;
    } else if (countFlag == 3) {
        return x / y;
    }
    return 0;
}

bool method(int * arr, int length){
    double ans;
    for (size_t i = 0; i < 4; i++) {
        ans = calculate(arr[0], arr[1], i);
        for (size_t j = 0; j < 4; j++) {
            ans = calculate(ans, arr[2], j);
            for (size_t k = 0; k < 4; k++) {
                ans = calculate(ans, arr[3], k);
                if (ans == 24) {
                    return true;
                }
            }
        }
    }
    return false;
}

4.2 第二题

括号匹配,({[,三种括号,要求能依次一一配对。

比如([])输出true[(])输出false

vector模拟栈输入输出即可。

bool method(string s){
    string s;
    vector<char> vt;
    for (size_t i = 0; i < s.size(); i++) {
        if (s[i] == '(') {
            vt.push_back(s[i]);
        } else if (s[i] == '{') {
            vt.push_back(s[i]);
        } else if (s[i] == '[') {
            vt.push_back(s[i]);
        } else if (s[i] == ')') {
            if (vt.size() > 0 && vt.back() == '(') {
                vt.pop_back();
            } else {
                return false;
            }
        } else if (s[i] == '}') {
            if (vt.size() > 0 && vt.back() == '{') {
                vt.pop_back();
            } else {
                return false;
            }
        } else if (s[i] == ']') {
            if (vt.size() > 0 && vt.back() == '[') {
                vt.pop_back();
            } else {
                return false;
            }
        }
    }

    if (vt.size() == 0) {
        return true;
    }
}

4.3 第三题

假的背包问题,现在我们有1024元,购买N元东西以后,用64元,16元,4元和1元的硬币找零,最少能找回几个硬币。

本来以为要用DP,后来发现直接贪心就可以了。


int method(int N){
	int left = 1024;
    int count64 = 0, count16 = 0, count4 = 0, count1 = 0;

    left -= N;
    while (left != 0) {
        if (left >= 64) {
            left -= 64;
            count64++;
        } else if (left >= 16) {
            left -= 16;
            count16++;
        } else if (left >= 4) {
            left -= 4;
            count4++;
        } else {
            left -= 1;
            count1++;
        }
    }

    int ans = count64 + count16 + count4 + count1;
    
    return ans;
}

5. 往年试题

哔哩哔哩2020校园招聘后端笔试卷(二)

哔哩哔哩2020校园招聘后端笔试卷(一)


联系邮箱[email protected]

CSDNhttps://me.csdn.net/qq_41729780

知乎https://zhuanlan.zhihu.com/c_1225417532351741952

公众号复杂网络与机器学习

欢迎关注/转载,有问题欢迎通过邮箱交流。

猜你喜欢

转载自blog.csdn.net/qq_41729780/article/details/107991285