最近在准备数据分析岗位的笔试,整理了牛客网上的一些试题与答案方便查看。
ps:在牛客网搜索框搜索"数据分析",点击搜索分类版块“试卷”即可看到笔试套题。
套题信息:
客观题:单选18道,不定项选择12道
主观题:编程2道
完成时间: 120分钟
难度系数: 三星
总分: 100分
1、有一个文件user.txt,每行一条user记录,共若干行,下面哪个命令可以实现“统计出现次数最多的前3个user及其次数”?
答案1:sort user.txt | uniq -c | sort -rn | head -n 3
答案2:cat user.txt | sort | uniq -c | sort -rn | head -n 3
参考解析:
首先sort进行排序,将重复的行都排在了一起,然后使用uniq -c将重复的行的次数放在了行首,在用sort -rn进行反向和纯文本排序,这样就按照重复次数从高到低进行了排列,最后利用head -n 3 输出行首的三行。
2、MySQL中t表存在如下数据
+---+---+
| a | b |
+---+---+
| 1 | 2 |
+---+---+
执行如下更新SQL:update t set b = 5 and a= 2 where a = 1之后,a和b值为:
答案:a =1 , b = 0
参考解析:
update t set b = 5, a= 2 where a = 1
题目中用了 and 连接两个更新赋值(所以说要仔细看)
相当于对b赋了个bool值, 即
update t set b = (5 and a= 2) where a = 1
而a=1 故以上真值为0, 所以出现了 a=1, b=0的结果
3、某网游全天平均在线人数为6000人,玩家每次登录后平均在线时长为2小时。请你估计一下,平均下来每分钟约有多少个玩家登录?
答案:50
参考解析:
平均在线人数为6000人,意味着每分钟都有6000人同时在线。玩家每次登陆在线时长为2小时,说明这一拨6000人走后还有6000人在两小时内补上来,所以是6000/120=50,即每分钟补上来的平均人数
4、有关linux线程的描述,正确的是( )
答案:ABC
D错
5、进程会在各个状态之间切换,下面哪些是不可能的
答案:C
参考:
6、某二叉树有2000个结点,则该二叉树的最小高度为()
答案:11
参考解析:最小高度说明需要左右两边分配均匀,高度为n的二叉树最多能放2^n-1个节点,n为高度 2^11 - 1>2000,最小高度是11
7、若一序列进栈顺序为a1,a2,a3,a4,问存在多少种可能的出栈序列( )
答案:14种
参考解析:
使用卡特兰公式:n=(2n)!/n!*(n+1)!,将序列长度4代入可得n=14
8、有2个关系模式:
订单表:R(订单号,日期,客户名称,收货人)
订单明细表:S(订单号,商品编码,单价,数量)
若要检索2017/1/1到2017/12/31期间,订购商品的总金额超过20000元的客户名称和总金额,则SQL查询语句是
答案:C
9、下列属于有监督学习算法的是:()
答案:D,线性判别分析LDA
参考解析:
谱聚类是一种基于图论的聚类方法
PCA 线性 无监督降维
主题模型LDA是一种无监督的贝叶斯模型
LDA 线性 有监督降维
10、统计网站的注册用户年龄,已知均值是25岁,标准差为2,则用户年龄在21-29岁的概率至少是多少?
答案:75%
参考解析1:
根据切比雪夫大数定理 P = (1-(1/n)^2)
其中n为abs(边界与中心值的距离)/标准差,即边界与均值相距多少个标准差
本题中为n=(29-25)/2=2
带入第一行的等式,得出P=0.75
参考解析2:
根据切比雪夫不等式
这里sigma=2, epsilon=4
带入得到0.75
11、假设A国人的平均身高为170cm,标准差为10cm,平均体重为65KG,标准差为5kg,身高与体重均符合正态分布,它们之间的线性相关系数为0.5,那么身高为186cm的A国人平均体重为:
答案:69kg
参考解析:(186-u1)/σ1 * 0.5=(x-u2)/σ2
12、一个序列为(13,18,24,35,47,50,63,83,90,115,124),如果利用二分法查找关键字为90的,则需要几次比较 ?
答案:2
参考解析:
第一次取第(0+10)/2=5个数,值为50,因为90>50,查找{63,83,90,115,124},与中间的数90比较,刚好找到
13、已知一个二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为?
答案:DGEBHFCA
参考解析:
前序根左右
中序左根右
后序左右根
由题目前序遍历,可知根节点ABDEGCFH是A,而由中序遍历DBGEACHF可知,左子树有DBGE,右子树有CHF,知道了这些再根据前序遍历和中序遍历就可以逐个推出树形。最后即可求出后序遍历序列
14、一个医院的病人,40%来自甲地,60%来自乙地,甲地病人为A病的概率为1%,乙地病人为A病的概率为2%,现在这个医院一个得A病的人,来自甲地的概率为?
答案:0.25
参考解析1:
问题可以视为已知:P(甲)=0.4,P(乙)=0.6,P(A|甲)=0.01,P(A|乙)=0.02,求取P(甲|A)?
P(甲|A) = P(甲,A)/P(A) = P(A|甲)*P(甲) /P(A) = (0.01*0.4)/(0.01*0.4+0.02*0.6) = 0.25。
参考解析2:
比方说甲地有400人,乙地有600人! 甲地可能生病有4人,乙地可能生病有12人。 则甲地生病的人数占总生病人数的1/4,即0.25
15、在贝叶斯线性回归中, 假定似然概率和先验概率都为高斯分布, 假设先验概率的高斯准确率参数为a, 似然概率的高斯准确率参数为b, 则后验概率相当于平方误差+L2正则,则其正则化参数为
答案:a + b
求解答!
16、以下关于准确率,召回, f1-score说法错误的是:
答案:D、f1-score为 准确率*召回率/(准确率+召回率)
解析:f1-score = 2 * 准确率*召回率/(准确率+召回率)
17、在MySQL中,与语句SELECT * FROM user WHERE age NOT BETWEEN 30 AND 70;等价的是()
答案:SELECT * FROM user WHERE age<30 OR age>70;
参考解析:BETWEEN 30 AND 70 是指[30,70] 包含等号
18、把14,27,71,50,93,39按顺序插入一棵树,插入的过程不断调整使树为平衡排序二叉树,最终形成平衡排序二叉树高度为?
答案:3
参考解析:先写成排序二叉树(左子树小于结点,右子树大于结点),再转化为平衡二叉树(可有多种转化方式)
二叉排序树就是任何节点的键值一定大于其左子树中的每一个节点的键值,并小于其右子树中的每一个节点的键值。
平衡二叉排序树要求任何节点的左右子树高度差不超过1。
19、现有testfile文件内容如下所示
12
12
213
5434
3123
123
34
对所有数字求和,以下做法正确的是:
答:BD
20、以下关于HTTP说法正确是的:
答案:AC
参考解析:
HTTP POST方式比GET更安全;
HTTP POST请求提交参数没有长度限制
HTTP GET请求提交参数有长度限制
- GET 请求可被缓存
- GET 请求保留在浏览器历史记录中
- GET 请求可被收藏为书签
- GET 请求不应在处理敏感数据时使用
- GET 请求有长度限制
- GET 请求只应当用于取回数据
- POST 请求不会被缓存
- POST 请求不会保留在浏览器历史记录中
- POST 不能被收藏为书签
- POST 请求对数据长度没有要求
参考链接:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
21、python代码如下:
1
2
3
foo = [1,2]
foo1 = foo(此处应将foo1替换为foo)
foo.append(3)
答案:foo 值为[1,2,3];foo1 值为[1,2,3]
解析(牛客):
foo1 = foo,这样两者指的是同一个数据对象,即同一个内存地址,且对象是一个列表是可变对象,所以一动都动。
22、协同过滤经常被用于推荐系统, 包含基于内存的协同过滤, 基于模型的协同过滤以及混合模型, 以下说法正确的是
答案:AD
参考解析:基于内存的协同过滤(基于用户的协同过滤推荐、基于物品的协同过滤推荐)一般在数据量较小的应用场景下,可以直接在线使用的实时推荐方法;基于模型的协同过滤推荐一般用于离线计算,它采用机器学习的方法,一般首相将用户偏好行为数据分成2个数据集(有时可能会将数据集分成k个子集,采用交叉验证的方式来提高模型精度),一个为训练集,一个为测试集,使用训练集数据来训练出推荐模型,然后使用测试集数据来评估模型的精度,当满足特定精度时,可以将得到的推荐模型应用于实际线上环境。
23、以下有关SQL性能优化正确的是:
答案:ABCD
索引失效的情形:
1、在索引列中用单行函数,会导致其失效!
2、在索引中用运算,也会导致其失效!3、触发影式转换。
------------------------------------------------------------------
1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
8、正确选择复合索引中的主列字段,一般是选择性较好的字段;
9、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
10、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
24、如下哪些sql语句能查询出每门课都都大于80分的学生姓名,部分数据如下表(student_score)所示
答案:AB
参考解析:
A:子查询语句找出有(至少一门)成绩小于80的学生姓名,主语句要求学生姓名不在子查询的结果中,正确
B:分数最低的一门大于80,正确
C:有一门大于80,就被选中了,不对
D:sub_name应该换成stu_name,否则不对,会报错
25、两个随机变量x,y,服从联合概率分布p(x,y), 以下等式成立的有
答案:AC
求解答!!
26、东东从京京那里了解到有一个无限长的数字序列: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, ...(数字k在该序列中正好出现k次)。东东想知道这个数字序列的第n项是多少,你能帮帮他么
参考答案(python3):
参考解析:
假设第n项为k,从一加到k的值应该是sum=(k+1)*k/2,这个数可能大于或等于n。
即解 (n已知),算出来的结果向上取整即可
求根公式:
27、东东对幂运算很感兴趣,在学习的过程中东东发现了一些有趣的性质: 9^3 = 27^2, 2^10 = 32^2
东东对这个性质充满了好奇,东东现在给出一个整数n,希望你能帮助他求出满足 a^b = c^d(1 ≤ a,b,c,d ≤ n)的式子有多少个。
例如当n = 2: 1^1=1^1
1^1=1^2
1^2=1^1
1^2=1^2
2^1=2^1
2^2=2^2
一共有6个满足要求的式子
解答链接:https://blog.youkuaiyun.com/behboyhiex/article/details/82263146
28、以下属于凸函数的是
答案:AD
29、以下关于二项分布说法正确的是
答案:BC
30、0在机器学习中,经常采用线性变换,将基变换为正交基, 下列矩阵式正交矩阵的是
答案:AAT=I,则A为正交矩阵。
关于转置矩阵
关于矩阵相乘:矩阵相乘只有在第一个矩阵的列数和第二个矩阵的行数相同时才有意义 。(以下是例子)
补充:关于求矩阵的行列式:
31、用浏览器访问www.jd.com时,可能使用到的协议有?
答案:ABD
参考解析:当接入网络时可能会用到PPP协议;而当计算机不知道某主机的MAC地址时,用IP地址查询相应的MAC地址时会用到ARP协议;而当访问Web网站时,若DNS缓冲没有存储相应域名的IP地址,用域名查询相应的IP地址时要使用DNS协议,而DNS是基于UDP协议的,所以可能用到UDP协议,SMTP只有使用邮件客户端发送邮件,或是邮件服务器向别的邮件服务器发送邮件时才会用到
32、有A,B 两个国家,人口比例为4:6,A国的犯罪率为0.1%,B国的为0.2%。现在有一个新的犯罪事件,发生在A国的概率是?
答案:0.25
参考解析:同14,是同一考点