【牛客】网易2018校招数据分析师笔试解析

【牛客】网易2018校招数据分析师笔试解析

* 选择题根据牛客网下方讨论整理,三道大题均为自己答案,欢迎大家讨论并给予指正。

https://www.nowcoder.com/test/10778804/summary

一、选择题

1、有2堆宝石,A和B一起玩游戏,假设俩人足够聪明,规则是每个人只能从一堆选走1个或2个或3个宝石,最后全部取玩的人获胜,假设2堆宝石的数目为12和13,请问A怎么可以必胜?

答:A只要取完宝石后给B留4的倍数就能赢,留下4的倍数,B就没有办法取完。而A每次都可以按照B取的数量来修正,保证每次留给B的是4的倍数。到最后B没有办法一次取完4个,而且必须要取,剩下的A取完就赢了

2、从数字集合{1,2,3,4,… ,20}中选出4个数字的子集,如果不允许两个相连的数字出现在同一集合中,那么能够形成多少个这种子集?

答:插空法,16个数17个空任选四个插入数字便可得,C17,4=2380

3、将4个不一样的球随机放入5个杯子中,则杯子中球的最大个数为3的概率是?

答:C4,3 * C4,1 * C5C1 / (5^4) = 16/125

4、下面程序的功能是输出数组的全排列,选择正确的选项,完成其功能。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

void perm(int list[], int k, int m)

{

    if (    )

    {

        copy(list,list+m,ostream_iterator<int>(cout," "));

        cout<<endl;

        return;

    }

    for (int i=k; i<=m; i++)

    {

        swap(&list[k],&list[i]);

        (    );

        swap(&list[k],&list[i]);

    }

}

答:k==m 和 perm(list,k+1,m)
if是递归的终止判断条件,刚开始输入的时候k应该为0,m应该为数组中的元素个数;所以当k==m时,表示全排列的全部情况都已经找出。
第一个swap是依次将第k个元素和k~m个元素交换,交换完后进入递归,再全排列其子数组。
递归调用,之所以从k+1开始,是因为如果传入的是k的话,递归传进去的参数不变,递归将永无止境的递归下去,因为k永远不会等于m
第二个swap是将该层交换完后的数组再还原,目的是为了使递归返回后不改变上一层的数组元素顺序,方便下一次交换。

5、若有33个长度不等的初始归并段,做7路平衡归并排序,为组织最佳归并树,应增加长度为0的初始归并段的个数是________。

答:2

在一般情况下,对于 k–路平衡归并来说,若 (m-1)MOD(k-1)=0,则不需要增加虚段;否则需附加 k-(m-1)MOD(k-1)-1 个虚段。

6、将一个整数序列整理为升序,两趟处理后序列变为10,12,21,9,7,3,4,25,则采用的排序算法可能是________。

答:插入排序

插入排序:第一趟前两个有序,第二趟前三个有序。

快速排序:每经过一趟快排,轴点元素都必然就位,也就是说,一趟下来至少有1个元素在其最终位置,2趟就有两个位置元素就位。10,12,21,9,7,3,4,25  正确的结果是,3,4,7,9,10,12,21,25.。这里只有25一个元素就位了(10,12,21虽然有序,但他们应该在3,4,7,9后面才行)。

7、在数理统计中, 一般通过增加抽样次数取平均来使得预估误差减小, 在机器学习中也有类似的模型处理, 如随机森林, 通过引入随机样本并且增加决策树的数据,对于随机森林主要降低预估的哪个方面值

答:预估方差

8、以下不属于非监督学习的为

答:knn(关联规则、Kmeans、Word2vec、Knn)

邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。

9、将当前命令sh test.sh任务在后台执行,下列最优雅的的做法是

答:nohup sh test.sh &amp;

10、截取logfile文件中含有suc的行,并且只输出最后一列,下列操作正确的是:

答:grep 'suc' logfile | awk '{print $NF}'

11、哪个不是DDL(数据库定义语言)语句?

答:grant(ALTER、CREATE、RENAME、GRANT)

grant授权

12、对于SQL语句select * from t where a=100 and b=200,哪个索引可以使用到?

答:都可以(索引idx_b(b)、索引idx_b_a(b,a)、索引idx_a_b(a,b))

13、若要在员工信息表EMP中增加一列WANGYI_NO(网易id),可用( )。

答:ALTER TABLE EMP ADD(WANGYI_NO CHAR(10))

14、在机器学习任务中经常假设矩阵为n×n的对称矩阵A, 则以下说法正确的是

答:对应于A的不同特征值的特征向量之间正交

对称矩阵不一定满秩;不同特征值之间的特征向量一定正交,而同一特征值的特征向量需要借助公式得正交向量

15、以下关于python数据结构说法正确的是

答:python中list的元素可以是tuple

错误答案:python中list可以动态的更新, 但是不容许嵌套、python中tuple可以动态更新, 但是不容许嵌套、python中dict保存键值对, 并且键值对是有序的

16、一个快递公司对同一年龄段的员工,进行汽车,三轮车,二轮车平均送件量的比较,结果给出sig.=0.034,说明

答:按照0.05显著性水平,拒绝H0,说明三类交通工具送件量有显著差异。

p值表示接受原假设最小的显著性水平,p值越小,拒绝原假设的理由越充分。

17、小明在一次班干部二人竞选中,支持率为百分之五十五,而置信水平0.95以上的置信区间为百分之五十到百分之六十,请问小明未当选的可能性有可能是

答:3%

【0.5,0.6】的概率在0.95以上,0.55属于区间内,故一定有某个子集区间包含0.55且概率为0.97

18、以下关于最小二乘法正确的是

答:最小二乘估计是线性无偏估计中方差最小的

19、设{xn}服从独立同分布, E[xn] = 0, Var[xn]=1, 则当n趋向于无穷大时,下式值为:

答:1

x独立同分布,相关系数为0,故只有n个x的方差

20、通常可以通过关联规则挖掘来发现啤酒和尿布的关系, 那么如果对于一条规则A →B, 如果同时购买A和B的顾客比例是4/7, 而购买A的顾客当中也购买了B的顾客比例是1/2, 而购买B的顾客当中也购买了A的顾客比例是1/3,则以下对于规则A →B的支持度(support)和置信度(confidence)分别是多少?

答:4/7,1/2

都买占比是支持度,买a中b占比是置信度

二、大题

1、小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。)
例如: s = "ABAB",那么小易有六种排列的结果:
"AABB","ABAB","ABBA","BAAB","BABA","BBAA"
其中只有"AABB"和"BBAA"满足最多只有一对不同颜色的相邻砖块。

x = input()
if len(set(x)) == 2:
    print(2)
elif len(set(x)) == 1:
    print(1)
else:
    print(0)

2、小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。

s = input()
s = s.split(' ')
s = [int(x) for x in s]
if s[1] < s[2]/s[0]:
    print(s[1] + int((s[2]-s[0]*s[1])/(s[0]+s[3])))
else:
    print(int(s[2]/s[0]))

3、已知存在以下表

S 表保存着学生关系,有两列,其中SNO 为学号,SNAME 为姓名

C 表保存着课程关系,有三列,其中CNO 为课程号,CNAME 为课程名,CTEACHER 为老师

SC表保存着选课关系,有三列,其中SNO为学号,CNO为课程号,SCORE 为成绩

1. 找出没有选“小易”老师课程的所有学生姓名
2. 列出有三门(包括三门)以上课程分数>90的学生姓名及其平均成绩

select sname from s where sno not in
(select distinct sno from sc where cno = select cno from c where cteacher='小易');

select sname from s where sno not in
(select distinct sno from sc join s on sc.cno = c.cno where c.cteacher='小易');



select sname, avg(score) avg from s join
(select sno, score from sc where score > 90)
on s.sno = sc.sno
group by sname having count(sname) > 2;

select s.sname, avg(sc.score) avg 
from s join sc 
on s.sno = sc.sno
where sc.score > 90
group by s.sname having count(*) > 2;

猜你喜欢

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