【牛客】2018京东秋招数据分析工程师笔试解析

【牛客】2018京东秋招数据分析工程师笔试解析

* 根据牛客网下方讨论整理(https://www.nowcoder.com/test/10630596/summary

一、选择

1、有一个文件user.txt,每行一条user记录,共若干行,下面哪个命令可以实现“统计出现次数最多的前3个user及其次数”?

答:sort user.txt | 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

解析(牛客):

2个小时120分钟,6000/120=50

4、有关linux线程的描述,正确的是( )

答:

线程自己拥有很少的资源,但它可以使用所属进程的资源

由于同一进程中的多个线程具有相同的地址空间,所以它们间的同步和通信也易于实现

进程创建与线程创建的时空开销不相同

5、进程会在各个状态之间切换,下面哪些是不可能的

答:等待→运行

6、某二叉树有2000个结点,则该二叉树的最小高度为()

答:11

解析:2**11 = 2048

7、若一序列进栈顺序为a1,a2,a3,a4,问存在多少种可能的出栈序列(       )

答:14种

解析(牛客):

(1)每次留一个数,有4种可能

(2)每次留两个数,有6种可能

(3)每次留三个数,有3种可能

(4)每次留四个数,有1种可能

公式:

f(1) = 1     //即 1

f(2) = 2     //即 12、21

f(3) = 5     //即 123、132、213、321、231

f(4) = f(3) + f(2) * f(1) + f(1) * f(2) + f(3);

8、有2个关系模式:

订单表:R(订单号,日期,客户名称,收货人)

订单明细表:S(订单号,商品编码,单价,数量)

若要检索2017/1/1到2017/12/31期间,订购商品的总金额超过20000元的客户名称和总金额,则SQL查询语句是

答:SELECT 客户名称, SUM (单价*数量) AS 总金额 FROM R,S WHERE R.订单号= S.订单号 AND 日期 BETWEEN "2017-1-1" AND "2017-12-31" GROUP BY 客户名称 HAVING SUM(单价*数量)>20000

解析:因为求总金额,而客户可能会出现重复订单

9、下列属于有监督学习算法的是:()

答:线性判别分析LDA

解析:已知类别,并通过建立判别函数进行判别

10、统计网站的注册用户年龄,已知均值是25岁,标准差为2,则用户年龄在21-29岁的概率至少是多少?

答:75%(选项中最大的)

解析:两倍标准差95.44%

11、假设A国人的平均身高为170cm,标准差为10cm,平均体重为65KG,标准差为5kg,身高与体重均符合正态分布,它们之间的线性相关系数为0.5,那么身高为186cm的A国人平均体重为:

答:69kg

解析:186-170 = 16 = 1.6*σ,1.6*σ * 0.5 = 0.8 * σ1 = 0.8*5 = 4, 63 + 4 = 69

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

14、一个医院的病人,40%来自甲地,60%来自乙地,甲地病人为A病的概率为1%,乙地病人为A病的概率为2%,现在这个医院一个得A病的人,来自甲地的概率为?

答:0.25

解析:0.4 * 0.01 / (0.4 * 0.01 + 0.6 * 0.02)

15、在贝叶斯线性回归中, 假定似然概率和先验概率都为高斯分布, 假设先验概率的高斯准确率参数为a, 似然概率的高斯准确率参数为b, 则后验概率相当于平方误差+L2正则,则其正则化参数为

答:a + b

解析:waiting...

16、以下关于准确率,召回, 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;

18、把14,27,71,50,93,39按顺序插入一棵树,插入的过程不断调整使树为平衡排序二叉树,最终形成平衡排序二叉树高度为?

答:3

解析:先写成排序二叉树(左子树小于结点,右子树大于结点),再转化为平衡二叉树(可有多种转化方式)

19、现有testfile文件内容如下所示
12
12
213
5434
3123
123
34
对所有数字求和,以下做法正确的是:

答:

awk 'BEGIN{sum =0}{sum+=$1}END{print sum}' testfile

awk '{sum+=$1}END{print sum}' testfile

20、以下关于HTTP说法正确是的:

答:HTTP POST方式比GET更安全;HTTP POST请求提交参数没有长度限制

错误答案:HTTP GET请求提交参数没有长度限制;HTTP GET和POST请求提交参数都没有长度限制

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、协同过滤经常被用于推荐系统, 包含基于内存的协同过滤, 基于模型的协同过滤以及混合模型, 以下说法正确的是

答:

基于模型的协同过滤能比较好的处理数据稀疏的问题

基于内存的协同过滤实现比较简单, 新数据可以较方便的加入

错误答案:基于模型的协同过滤不需要item的内容信息;基于内存的协同过滤可以较好解决冷启动问题

23、以下有关SQL性能优化正确的是:

答:

sql需要避免在索引字段上使用函数

避免在WHERE子句中使用in,not in , 可以使用exist和not exist代替

将对于同一个表格的多个字段的操作写到同一个sql中, 而不是分开成两个sql语句实现

避免建立索引的列中使用空值

24、如下哪些sql语句能查询出每门课都都大于80分的学生姓名,部分数据如下表(student_score)所示,

stu_no

stu_name

sub_no

sub_name

score

1

张三

001

语文

90

1

张三

002

数学

60

2

李四

001

语文

89

2

李四

002

数学

86

答:

select distinct stu_name from student_score where stu_name not in (select distinct stu_name from student_score where score <= 80)

select stu_name from student_score group by stu_name having min(score) > 80

28、以下属于凸函数的是

答:e的x次方;f(x, y) = x的平方/y

解析:当f 和g都是凸函数时,f跟g乘积也是凸函数

29、以下关于二项分布说法正确的是

答:二项分布是一种离散概率分布,表示在n次伯努利试验中,有k次成功的概率

当n很大时候,二项分布可以用泊松分布和高斯分布逼近

31、用浏览器访问www.jd.com时,可能使用到的协议有?

答:MAC;HTTP;ARP

32、有A,B 两个国家,人口比例为4:6,A国的犯罪率为0.1%,B国的为0.2%。现在有一个新的犯罪事件,发生在A国的概率是?

答:0.25

解析:同14

ps:25/30由于看不到图片内容,所以没有作答。

二、编程题

26、东东从京京那里了解到有一个无限长的数字序列: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, ...(数字k在该序列中正好出现k次)。东东想知道这个数字序列的第n项是多少,你能帮帮他么

import math
 
x = input()
if x > 0:
    print(int((1 + math.sqrt(8*x - 7)) / 2))
else:
    print(1)

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个满足要求的式子

n = input()
i = 0
for a in range(1, n+1):
    for b in range(1, n+1):
        for c in range(1, n+1):
            for d in range(1, n+1):
                if a ** b == c ** d:
                    i += 1
print(i)

 case=20%,时间超过限制,因为循环过多,时间复杂度过大,目前为止没有找到解决方案。

猜你喜欢

转载自blog.csdn.net/NJYR21/article/details/81090424
今日推荐