欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

顺丰科技2022年秋季招聘大数据挖掘与分析工程师笔试试题

最编程 2024-05-03 21:30:45
...

顺丰科技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=03xiP(xi)×i=03yiP(yi)=32×32=94\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)

P(A)=27P(B)=336530P(AB)=0.7P(BA)=P(AB)P(B)P(A)=0.00671233P(A) = \frac{2}{7}\\ P(B) = \frac{3}{365*30}\\ P(A|B) = 0.7\\ P(B|A) =\frac{P(A|B)P(B)}{P(A)} = 0.00671233

17、甲乙两人比射箭,射中的概率0.5,甲射了101,乙射了100,求甲射中比乙次数多的概率是?

解析:1/2

链接:www.nowcoder.com/questionTer… 来源:牛客网

  1. 甲乙各100箭时,有三种情况,甲多,乙多,一样多,概率分别设t, t, (1-2t),至于t是多少不重要往下看。

  2. 如果第一步的结果是甲多,剩下一箭不影响结果,概率是t。

  3. 如果第一步的结果是一样多,现在就要看最后一箭,甲有1/2的概率赢,也就是(1-2t)/2。

  4. 前面两种情况相加,结果是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个

解析:参考:juejin.cn/post/707326…

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)={1n<=3f(n1)+f(n2)+f(n3)n>3func(n) =\left\{ \begin{aligned} 1 & & n<=3 \\ f(n-1)+f(n-2)+f(n-3) & & n>3 \\ \end{aligned} \right.

输出一行,包含一个整数,表示在求func( n )过程中,func函数被调用的总次数。不必考虑计算过程中产生的数字溢出等问题。由于答案可能很大,故输出答案对1000000007取模所得值即可。

(2)思路 动态规划,来做,有这种重复计算,涉及备忘录,那就考虑dp。 状态:递归次数 装填转移: dp[i]=dp[i1]+dp[i2]+dp[i3]+1,i>3dp[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))