【数据挖掘】搜狐公司数据挖掘工程师笔试题

1 单选题

1、下面(D)不是金庸撰写的小说?

A、天龙八部

B、鹿鼎记

C、侠客行

D、天涯明月刀

飞雪连天射白鹿,笑书神侠倚碧鸳。
《飞狐外传》《雪山飞狐》《连城诀》《天龙八部》《射雕英雄传》《白马啸西风》《鹿鼎记》

《笑傲江湖》《书剑恩仇录》《神雕侠侣》《侠客传》《倚天屠龙记》《碧血剑》《鸳鸯刀》

2、以下哪款游戏不在战网平台上?(C)

A、暗黑破坏神3

B、魔兽争霸

C、绝地求生

D、炉石传说

解析:暴雪游戏:魔兽星际炉石守望风暴暗黑破坏神

3、以下属于ARPG类型的游戏是?(A)
A、 DNF
B、海岛奇兵
C、王者荣耀
D、皇室战争

解析:ARPG(Action Role Playing Game),游戏术语,意思是动作角色扮演类游戏,角色的动作(特别是攻击动作)与操作(如点击鼠标)相关的动作。

A,DNF,是地下城与勇士游戏。ARPG游戏就是具备ACT(动作类游戏)游戏元素的RPG游戏,它的战斗系统为动作类型,通常为无锁定战斗。

4、RPG类游戏中又可分为RPSG,SRPG,ARPG。其中SRPG是指?(B)

A、 角色扮演模拟游戏
B、策略角色扮演游戏
C、动作角色扮演游戏
D、多人在线角色扮演游戏

解析:RPSG:Role Playing Simulation Game(角色扮演模拟游戏)

ARPG:Action Role Playing Game(动作角色扮演游戏)

SRPG:Simulation Role Personate Game(策略角色扮演游戏)

MMORPG:Massive/Massively Multiplayer Online Role-PlayingGame(大型多人在线角色扮演游戏)

5、RTS是以下哪一类游戏的简称?(D)
A、策略类游戏
B、射击类游戏
C、角色扮演类游戏
D、即时战略游戏
在这里插入图片描述

6、下列属于非监督式学习的是(B)
A、 Random Forest
B、Word2vec
C、SVM
D、KNN

Word2vec是自然语言处理中,词向量的一种算法

7、Hadoop运行模式不包括(B)
A、 分布式
B、中心版
C、单机版
D、伪分布式

解析:Hadoop的三种运行模式 :
(1)独立(本地)运行模式:无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MR程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。
(2)伪分布式模式: Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。
(3)完全分布式模式:Hadoop守护进程运行在一个集群上

8、假设每月出生是等可能的,甲,乙,丙,丁,至少两人是同一月份生日的概率是(B)

A、 72/128

B、41/96

C、90/128

D、55/96

分母:121212*12(因为所有可能的情况是每个人的生日月份都有12种可能)

分子:121110*9(4个人的生日都在不同月份)

1 − 12 × × 11 × 10 × 9 12 × × 12 × 12 × 2 = 41 96 1- \frac{12××11×10×9}{12××12×12×2} = \frac{41}{96} 112××12×12×212××11×10×9=9641

9、如果一个堆栈的入栈序列是M N O P Q,那么堆栈的不可能输出顺序是(D)
A、 Q P O N M
B、 N P O Q M
C、M P O Q N
D、M P Q N O

10、HMM(隐马尔科夫模型)的无监督预测方法是(A)
A、 维特比算法
B、前向-后向算法
C、EM算法
D、梯度下降算法

解析:EM 最大似然估计(有监督),Baum-Walch(无监督)、预测-Viterbi算法(无监督)

11、以下哪个是深度学习中神经网络的激活函数(C)
A、 CE
B、Dropout
C、ReLU
D、Sin(x)

12、以下哪个是判别式模型()?A、D
A、 KNN
B、HMM
C、贝叶斯网络
D、神经网络

解析:(1)常见的判别模型

K近邻(KNN)
线性回归(Linear Regression)
逻辑斯蒂回归(Logistic Regression)
神经网络(NN)
支持向量机(SVM)
高斯过程(Gaussian Process)
条件随机场(CRF)
分类回归树CART(Classification and Regression Tree)
(2)常见的生成模型

LDA主题模型
朴素贝叶斯
混合高斯模型
隐马尔科夫模型(HMM)!
贝叶斯网络
Sigmoid Belief Networks
马尔科夫随机场(Markov Random Fields)
深度信念网络(DBN)

13、决策树中ID3算法中通常采用选取(B)做为根节点
A、 信息增益值最小的特征
B、信息增益值最大的特征
C 、信息增益率最小的特征
D、信息增益率最大的特征

14、以下哪一个不是Support vector machine常用的核函数(C)

A、高斯核函数

B、 字符串核函数

C、贝叶斯核函数

D、多项式核函数

最常用的核函数有线性核、多项式核、高斯核、拉普拉斯核、sigmoid 核、字符串核函数

15、对于非平稳时间序列来说,大部分场景下最好的让它变成平稳序列的方法是(B)

A、取对数
B、差分
C、数据标准化
D、归一化

常用的变换包括平方,开方,取对数,差分运算。在时间序列分析中,有时简单的对数变换或者差分运算就可以将非平稳序列转换成平稳序列。最好的是差分法。

根据以下资料,回答如下3道题目:

材料:截至2017年4月30日22时,沪深两市已有534家上市公司第一季度财报。这534家公司实现营业总收入4572.78亿元,同比增长30.74%;实现净利润336.7亿元,同比增长30.52%。不过,一季度销售收入和净利润环比则有所下降,其中营业总收入环比下降12%,净利润环比下降25%。这534家公司2017年一季度存货6167.68亿元,较上年年末增长10%。
已公布一季报的创业板公司有71家,实现营业收入80.08亿元,同比增长73.60%;实现净利润13.16亿元,同比增长80%。已公布一季报的中小企业板公司有202家,实现营业收入789.97亿元,同比增长36%;实现净利润73.25亿元,同比增长25%。
25家已公布一季报的房地产公司一季度实现营业收入193.68亿元,同比增长9%;实现净利润29.97亿元,同比增长31%;存货2892.18亿元,同比增长10%。
已公布一季报的6家钢铁板块公司一季度存货为322亿元,实现营业收入493.39亿元,同比略有降低,环比下降20%;实现净利润12.65亿元,同比增长62%,环比表现更好,这6家公司2016年四季度净亏损3.77亿元。
建筑机械类公司持续了之前的景气度,有4家公司公布一季报,实现营业总收入15.90亿元,同比增长39%;实现净利润1.18亿元,同比增长47.5%。

16、已公布一季报的534家公司,平均每家在2016年第四季度实现营业收入约多少亿元?( A )

A、 9.73
B、8.56
C、7.54
D、0.63

2017年第一季度534家公司实现营业总收入4572.78亿元,而该季度营业总收入环比下降12%(关键词:环比;说明:这里是指和2016年第四季度比较),可以算出2016年第四季度534家公司实现营业总收入为4572.78亿 /0.88,再平均到每一家公司即可得到结果。

则计算公式:4572.78亿 /0.88 / 534 = 9.73亿/每家

17、这534家公司中,平均每家中小企业板公司在2017年第一季度的净利润约是创业板公司的( D )

A、 5倍
B、 4倍
C、 3倍
D、 2倍

平均每家中小企业板公司的净利润:73.26/202=A
平均每家创业板公司的净利润:13.16/71=B
结果:A/B=2

18、已公布2017年一季报的房地产公司中,平均每家公司的存货比上年同期增长了约多少亿元?(B )

A、 5
B、 11
C、 51
D、 105

第一步-识别题型:增长量计算

第二步-审题找已知:2017年一季度,25家已公布一季报的房地产公司存货2892.18亿元,同比增长10%

第三步-推算寻未知:根据增长量计算公式,当r%=1/N时,增长量=现期值/N+1,带入数据10%=1/10,增长量=2892/10+1≈262,平均到每一家262/25≈10.5

2 多选题

1、Python支持的可变数据类型有哪些?(B,D)

A、 char
B、list
C、 tuple
C、 dict

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

2、下列哪几项属于生成式机器学习模型,(B,C)
A、 卷积神经网络
B、 朴素贝叶斯
C、 隐马尔科夫
D、 高斯判别分析

(1)常见的判别模型

K近邻(KNN)
线性回归(Linear Regression)
逻辑斯蒂回归(Logistic Regression)
神经网络(NN)
支持向量机(SVM)
高斯过程(Gaussian Process)
条件随机场(CRF)
分类回归树CART(Classification and Regression Tree)
(2)常见的生成模型

LDA主题模型
朴素贝叶斯
混合高斯模型
隐马尔科夫模型(HMM)!
贝叶斯网络
Sigmoid Belief Networks
马尔科夫随机场(Markov Random Fields)
深度信念网络(DBN)

3、反向传播算法在进行误差更新时,神经元的误差更新与哪些因素有关?(A、B、C、D)
A、 神经元激活函数
B、 上一层相关联的神经元误差
C、网络权重值
D、 神经元输入

4、常见的缓解过拟合的方法有?(A、C、D)
A、正则化
B、 减少训练样本
C、 Dropout
D 、Batch normalization

(1)减小模型的复杂度(如回归中高次降维较低的次幂形式)
(2)增加数据集数据和特征维度
(3)L1正则化和L2正则化
(4)dropout
(5)maxout
(6)batchnormal
(7)图像的话可以通过图像旋转、缩放、变换。
(8)transformer中还有scaling和shift.
(9)不均衡数据集可以做分层抽样
(10)减少迭代次数,提前终止

5、下列哪些机器学习算法不需要做数据归一化处理(C、D)
A、 K均值
B、 线性回归
C、 决策树
D、 朴素贝叶斯

在实际应用中,通过梯度下降法求解的模型一般都是需要归一化的,比如线性回归、logistic回归、KNN、SVM、神经网络、adaboost、、KMeans之类的最优化问题就需要归一化。

但概率模型不需要归一化,因为它们不关心变量的量纲,而是关心变量的分布和变量之间的条件概率,如决策树(概率模型)、随机森林(基学习器是决策树)、朴素贝叶斯(概率模型)不需要归一化。

2 问答题

1、设随机变量X的概率密度函数为F(x) = 0.5*g(x) +0.5g((x-4)/2),其中g(x)为标准正态分布的概率密度函数,则数学期望EX=

数学期望:E(x) = ∫(-∞,∞) xf(x)dx
E ( x ) = ∫ − ∞ ∞ 0.5 x g ( x ) + 0.5 x g ( x − 4 2 ) d x = 0.5 ∫ − ∞ ∞ x g ( x ) d x + 0.5 ∫ − ∞ ∞ x g ( x − 4 2 ) d x = 0.5 E g ( x ) + 0.5 ∫ − ∞ ∞ x g ( x − 4 2 ) d x = 0 + 0.5 ∫ − ∞ ∞ x g ( x − 4 2 ) d x 令  4 − 2 2 = Y   N ( 0 , 1 ) 则X = Z Y + 4   N ( 4 , 4 ) , 因为根据公式E ( a + b ) = E ( a ) + E ( b ) , D ( a + b ) = D ( a ) + D ( b ) + 2 c o v ( a , b ) 所以,以上公式可转为 E ( Y ) = 0.5 ∫ − ∞ ∞ x g ( Y ) d x = 0.5 E ( Y ) = 0.5 × 4 = 2 E(x) = \int _{-\infty}^{\infty} 0.5xg(x)+0.5xg(\frac{x-4}{2})dx \\ =0.5\int_{-\infty}^{\infty}xg(x)dx+0.5\int_{-\infty}^{\infty}xg(\frac{x-4}{2})dx\\ =0.5Eg(x)+0.5\int_{-\infty}^{\infty}xg(\frac{x-4}{2})dx\\ = 0+0.5\int_{-\infty}^{\infty}xg(\frac{x-4}{2})dx\\ 令 \frac{4-2}{2} = Y ~N(0,1) 则X =ZY+4 ~N(4,4),因为根据公式E(a+b) =E(a)+E(b),D(a+b) = D(a)+D(b)+2cov(a,b) 所以,以上公式可转为\\ E(Y) = 0.5\int_{-\infty}^{\infty}xg(Y)dx\\ =0.5E(Y)= 0.5×4=2 E(x)=0.5x(x)+0.5xg(2x4)dx=0.5xg(x)dx+0.5xg(2x4)dx=0.5Eg(x)+0.5xg(2x4)dx=0+0.5xg(2x4)dx令 242=Y N(0,1)则X=ZY+4 N(4,4),因为根据公式E(a+b)=E(a)+E(b),D(a+b)=D(a)+D(b)+2cov(a,b)所以,以上公式可转为E(Y)=0.5xg(Y)dx=0.5E(Y)=0.5×=2

2、已知一棵二叉树的先序和中序遍历序列如下:先序:A、B、C、D、E、F、G、H、I、J,中序:C、B、A、E、F、D、I、H、J、G。其后序遍历序列为(不用顿号隔开)

答案:CBFEIJHGDA

树结构如下

在这里插入图片描述

3、有一个人下8级的楼梯,他一次可以选择走一个台阶或者两个台阶,请问这个人有几种方式下楼

答案:34

其实就是斐波那契数列,如果你待在第3楼,就得待在第1楼或者第2楼

爬1楼一种方法,

爬2楼两种方法。

爬3楼就是爬1楼方法次数加2楼的方法次数。

用数学表达就是:

a(8)=a(7)+a(6)=34

a(7)=a(6)+a(5)=21

a(6)=a(5)+a(4)=13

a(5)=a(4)+a(3)=8

a(4)=a(3)+a(2)=5

a(3)=a(2)+a(1)=3

a(2)=2

a(1)=1

4、一个决策树的规模变得很大时,即使训练误差还在持续降低,但是检验误差开始增大,会让模型如何(过拟合/欠拟合)。

答案:过拟合

当决策树很小时,训练和检验误差都很大,这种情况称作模型拟合不足。出现拟合不足的原因是模型尚未学习到数据的真实结构,因此模型在训练集和检验集上的性能都很差。随着决策树中结点数的增加,模型的训练误差和检验误差都会随之降低。然而一旦树的规模变得太大,即使训练误差还在继续降低,但是检验误差开始增大,这种现象称为模型过拟合。

5、有一对夫妇,先后生了两个孩子,其中一个孩子是男孩,问另一个孩子是男孩的概率是

答案:1/3
在这里插入图片描述

6、如果我们想对一个游戏的几万条玩家评论进行情感分析挖掘,你会如何来设计这个挖掘框架?

我自己的回答,并不是标准答案

(1)利用爬虫爬取评论数据

(2)对文本数进行数据清洗

(3)计算情感得分

(4)模型评价

7、如果要对游戏玩家流失率进行预测,你会如何设计此预测系统?

(1)结合游戏本身梳理可能与玩家流失相关的数据指标
(2)用历史数据训练模型,建立初步预测模型
(3)找到历史流失用户流失前的共性筛选、调整高权重指标,根据权重计算流失概率
(4)用未来一段时间真是流失的用户来验证预测准确性
(5)应用于当前活跃用户
(6)用户流失概率分组名单
(7)指定干预策略,延迟用户游戏生命周期,提高活跃度

3 编程题

1、数学老师正在教授小畅和小游两人素数的概念。为了帮助巩固两人的知识,老师说出一个数,要求小游和小畅合作,每人说出一个素数,使得两人说出的素数的和刚好等于老师说出的数。请编写程序计算两人说出的素数对的个数。如,老师说10,小畅和小游可以说出两对素数,分别为(5,5)和(3,7)(不考虑顺序)。

解析:依次遍历1到n/2的数字i,判断i和n-i是不是素数,如果是,就计数加1。其中素数K的判断,只需要判断1到根号K的范围即可。

# 判断素数
def isPrime(n):
    import numpy as np
    if n<=1:
        return False
    for i in range(2,int(np.sqrt(n))+1):
        if n%i ==0:
            return False
    return True 
n = input()
res = 
for i in range(1,n//2+1):
    if isPrime(i) and isPrime(n-i):
        res+=1
        print(i)
print(res)

2、幼儿园里有有M个小朋友在课件玩耍,每个人手中现有ni个玩具。为了公平起见,老师需要让每个小朋友手中有相同数量的玩具。假设老师每次只能从一个人手中拿走两个玩具并给另一个小朋友。求老师最少需要做多少次这样的玩具转移。如果不存在可行的方案则输出-1。

解析:

(1)首先判断玩具总数sum能否被M整除,不能整除输出-1返回

(2)对每个小朋友的玩具数量进行排序后利用双指针贪心求解

n = int(input())
arr = sorted(list(map(int, input().split())))
total = sum(arr)
if total % n != 0:
    # 玩具总数不是n的倍数,无法完成均分玩具
    print(-1)
else:
    target = total // n
    # 两端双指针,右指针往左指针搬运
    left, right = 0, n - 1
    count = 0
    while left < right:
        while arr[left] != target and arr[right] != target:
            arr[left] += 2
            arr[right] -= 2
            count += 1
            if arr[left] > target&nbs***bsp;arr[right] < target:
                break
        if arr[left] == target and arr[right] == target:
            # 同时达到目标值,左右指针同时移动
            left += 1
            right -= 1
        elif arr[left] == target:
            # 左指针达到目标值,左指针移动
            left += 1
        elif arr[right] == target:
            # 右指针达到目标值,右指针移动
            right -= 1
        else:
            # 达不到目标值,无法完成任务
            count = -1
            break
    print(count)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Better Bench

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值