文章目录
1. 背景2. 题型3. 选择题范围3.1 数据结构3.2 计算机网络3.3 操作系统3.4 计算机组成3.5 其他4. 算法题4.1 第一题4.2 第二题4.3 第三题5. 往年试题1. 背景
最近做了BiliBili届校招数据分析岗的笔试题,和后端开发是同一套题,之前在找相关资料的时候没有发现数据分析笔试题型的信息,于是做完以后发个帖出来给大家参考。
2. 题型
时间一共是105分钟,30道选择题,共60分,3道算法题,共60分,加起来120分。
本来给算法题每题分了20分钟,每道选择题大概1-2分钟,最后做完选择题还剩下70分钟,今年算法题非常简单,提前25分钟做完了,感觉选择题是重点。
3. 选择题范围
选择题基本上是计算机考研408的内容,数据结构、计算机网络、计算机组成、操作系统这些题目乱序地来。难度中等,如果能把408的书多看几遍应该问题就不大。
能回忆起来的内容大概是这些:
3.1 数据结构
树的遍历,根据前序中序推后序之类的,2题排序算法,各种排序的复杂度,排序方式等等,3-4题逻辑结构特点,判断是不是线性结构之类的,2题内存大小,64位Linux下,char a[10],char *b = (char *)malloc(10* sizeof(char)),sizeof(a)和sizeof(b),大小是多少,答案是10和8,1题3.2 计算机网络
TCP滑动窗口协议,计算,1题OSI分层结构,数据链路层的功能等等,1-2题CRC校验码,计算,1题网络协议,ping会用到哪些协议等等,2-3题3.3 操作系统
内存泄露,在哪种情况下会导致内存泄露,1题Linux命令,创建文件命令,1题3.4 计算机组成
进制转换,8进制和2进制转10进制,比较大小,2题3.5 其他
软件工程,设计模式,考的应该是装饰模式的特点,1题数据库,SQL语句,1-2题网络安全,CSRF攻击如何防护,1题4. 算法题
3道算法题都比较简单,在牛客网上看到有人发统计问卷,70%以上都AK了。
4.1 第一题
算24点,给4个数字,判断能否通过四则运算算出24。
题目是类似于leetcode
的那种,在给定的函数里面写代码,只要返回值,不需要输出。
这题数字比较少,直接暴力就能算。
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. 往年试题
哔哩哔哩校园招聘后端笔试卷(二)
哔哩哔哩校园招聘后端笔试卷(一)
联系邮箱:curren_wong@
CSDN:/qq_41729780
知乎:/c_1225417532351741952
公众号:复杂网络与机器学习
欢迎关注/转载,有问题欢迎通过邮箱交流。