顺丰科技2022年秋招大数据挖掘与分析工程师笔试题
笔试时间:2022-9-7
1 不定项选择题
1、python中_thread 和threading的区别
解析:
_thread模块提供了基本的线程和锁支持;threading提供的是更高级的完全的线程管理。
threading它更先进,有完善的线程管理支持,此外,在thread模块的一些属性会和threading模块的这些属性冲突。
_thread模块有很少的同步原语,而threading却有很多。
_thread模块没有很好的控制,特别当你的进程退出时。
threading会允许默认,重要的子线程完成后再退出,它可以特别指定daemon类型的线程。
2、数据库一级封锁协议,修改前加什么锁?
答案:X锁
在运用X锁(排它锁,可以读写,不能加任和锁)和S锁(共享锁,可以读,只能加X锁)对数据对象加锁时,还需要约定一些规则 ,例如何时申请X锁或S锁、持锁时间、何时释放等。称这些规则为封锁协议(Locking Protocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。不同的封锁协议,在不同的程度上为并发操作的正确调度提供一定的保证。
(1)一级封锁协议
一级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。
一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。使用一级封锁协议可以解决丢失修改问题。
在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,它不能保证可重复读和不读“脏”数据。
(2)二级封锁协议
二级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁。
二级封锁协议除防止了丢失修改,还可以进一步防止读“脏”数据。但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
(3)三级封锁协议
三级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。
3、图邻接表示法的空间复杂度是否与顶点和边有关?
答案:都有关
空间复杂度为O(n+e),用数组模拟的邻接表是O(n+e) 的,需要保存每个节点相邻的第一条边的编号O(n),以及这条边下一条边的编号O(e)。时间复杂度也为O(n+e)
若采用邻接矩阵存储,时间复杂度为O(n^2)
4、错误的是?
A、正态分布经过线性变换后仍为正态分布
B、泊松分布的随机变量是无记忆的,即前后无关
C、单次抛硬币属于二项分布
答案:C,单次抛硬币是伯努利分布,多次抛硬币是二项分布
5、X和Y的概率如下,求E(XY)
Y | X | X | X | X |
---|---|---|---|---|
0 | 1 | 2 | 3 | |
1 | 0 | 3/8 | 3/8 | 0 |
3 | 1/8 | 0 | 0 | 1/8 |
答案:$E(XY) =E(X)E(Y) = ∑ i = \sum_{i=0}^3x_iP(x_i) ×\sum_{i=0}^3y_iP(y_i) = \frac{3}{2}× \frac{3}{2} = \frac{9}{4}$
6、考查SQL,有四个字段,利用的group by with cube,返回多少条数据?
答案:16
解析:CUBE运算符是在Select语句的group by子句中指定的,group by应指定维度列和关键字with cube,结果集将包括维度列中各值的所有可能组合
7、强连通图20个顶点,最多有多少条边?
答案:e= (n-1)n= 280
强连通图是有向图,两个顶点,最多有两条边。
8、128个元素个数,二分查找最大比较次数?
答案:7
最小比较次数为1
最大比较次数为log2(n) + 1 向下取整
9、sql 字段判断为空的代码?
答案: select * from table(表名) where 字段is null or trim(字段)=‘’
10、MLP 从输入层为5,有3个隐藏层,神经元最大连接数是多少?
答案:5×5×5 = 125
11、最小二乘直线拟合的情况使用什么偏移?
答案:垂直偏移
12、信号量为什么时,进程阻塞?
答案:若信号量为0,进程则会进入阻塞
13、不能用动态规划解决的问题是?
A、0-1背包问题
B、最短路径问题
C、资源分配问题
D、库存管理问题
答案:D
14、hive 中求表中样本数的累计值,用到的方法有
A、sum() over()
B、partition by
C 、忘了
解析:partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组
15、排序算法空间复杂度不是O(1)的是?
A、插入排序
B、桶排序
C、希尔排序
D、堆排序
答案:D
16、一间柴房30年发生3次火灾,猫平均每晚上叫2次,火灾时猫叫的概率为0.7,猫叫发生火灾的概率是多少?
答案: 0.00671233
解析:
A :猫叫
B:被盗
题目求:P(B|A)
17、甲乙两人比射箭,射中的概率0.5,甲射了101,乙射了100,求甲射中比乙次数多的概率是?
解析:1/2
链接:https://www.nowcoder.com/questionTerminal/cb32d803d4314d9293f0310227a88d15
来源:牛客网
甲乙各100箭时,有三种情况,甲多,乙多,一样多,概率分别设t, t, (1-2t),至于t是多少不重要往下看。
如果第一步的结果是甲多,剩下一箭不影响结果,概率是t。
如果第一步的结果是一样多,现在就要看最后一箭,甲有1/2的概率赢,也就是(1-2t)/2。
前面两种情况相加,结果是1/2。
18、按流水的级别可以把流水线分为?
A、 处理机间流水线
B、部件功能级流水线
C、处理机级流水线
答案:A,B,C
19、TDD 依赖的原则是什么?
答案:依赖倒置原则(Dependence Inversion Principle,DIP)
解析:TDD(Test-Driven Development,测试驱动开发)开发模式就是依赖倒置原则的最高级应用。
20、二叉树,度为1的有17个,度为2的有13个,度为0的有?
答案:14个
解析:n0 = n2+1
21、http状态码 。什么码表示访问成功,什么码表示错误?
答案:2** 和4**
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
---|---|
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
22、由进程调度引起的状态切换是?
答案:就绪状态->执行状态
解析:进程的三种基本状态包括:就绪状态,执行状态,阻塞状态
处于就绪状态的进程,当进程调度程序按一种选定的策略选中一个就绪状态的进程,为它分配处理机后进程便可执行,状态转为执行状态。 【就绪状态——(进程调度)——执行状态】。
23、队列在队尾的操作的有什么?
答案:只有插入,没有删除,删除在队首
24、IP地址为192.168.78.66,子网掩码为255.255.240.0,则目的地址为?
25、硬币面值为1,5,11,要凑出15,贪心算法求解时,需要的硬币数为?
答案:3
1个11,4个1,共5个
3个5,共3个
2个5,5个1,共7个
26、没有触发器的操作是?
A、更新Update
B、插入INsert
C、删除Delete
D、查询Select
答案:D
27、2020年有2072亿元收入,同比增长3.45%,增速较上年放缓2.8个百分点。则2019年收入是多少亿元?
答案:2072/(1+3.45%) = 1540.52
28、正规式(1|4|6)(104)(a|b)表达的元素是,正规的是?
A、4104a
答案:从1、4、6中选一个元素,104不变,从a和b中选一个
29、J2EE 的四层模型
运行在客户端机器上的客户层组件
运行在J2EE服务器上的Web层组件
运行在J2EE服务器上的业务逻辑层组件
运行在EIS服务器上的企业信息系统层软件
2 编程题
(1)题目
是求以下递归的函数调用次数
输出一行,包含一个整数,表示在求func( n )过程中,func函数被调用的总次数。不必考虑计算过程中产生的数字溢出等问题。由于答案可能很大,故输出答案对1000000007取模所得值即可。
(2)思路
动态规划,来做,有这种重复计算,涉及备忘录,那就考虑dp。
状态:递归次数
装填转移:
$$dp[i] = dp[i-1]+dp[i-2]+dp[i-3]+1,i>3$$
python 实现
def func(n):
dp = [0]*n
dp[0] = 1
dp[1] = 1
dp[2] = 1
for i in range(3,n):
dp[i] =dp[i-1]+dp[i-2]+dp[i-3]+1
return dp[n-1]
n = 2000
count = func(n)
print(count%(1e9+7))