【2020算法练习一】笔试选择题 快手2020校园招聘秋招笔试--算法A试卷

郁闷一天(毫无原因的郁闷)吐个槽……
嗷嗷嗷嗷嗷哦嗷嗷嗷嗷嗷哦嗷嗷!嗷嗷,嗷嗷嗷嗷,嗷嗷嗷嗷嗷哦啊呜呜呜呜……

今天又是因为疫情没课又很闲还不能找小伙伴玩的一天,又不想干活写毕设,所以真的很烦。所以做了一套快手的题。
总结下错题和不太确定的题目:

1.下列哪一项能反映出 X 和 Y 之间的强相关性?

A.相关系数的 r 值为 0.9
B.对于无效假设 β=0 的 p 值为 0.0001
C.对于无效假设 β=0 的 t 值为 30
D.其他说法都不对

解析

正确答案: A 你的答案: A (正确)
r=0.9,说明有很强的线性相关,也就是强项关性了。

2.下列哪一项在神经网络中引入了非线性

A.SGD
B.激活函数
C,卷积函数
D.都不正确

解析:

正确答案: B
ReLU激活函数不是线性,引入了非线性

之前有做过类似的题,我的错题本上就有一道:

类题试解:

假设我们有一个使用ReLU激活函数(ReLU activation function)的神经网络,假如我们把ReLU激活替换为线性激活,那么这个神经网络能够模拟出同或函数(XNOR function)吗?
A 可以
B 不好说
C 不一定
D 不能
正确答案是:D

解析:

使用ReLU激活函数的神经网络是能够模拟出同或函数的。 但如果ReLU激活函数被线性函数所替代之后,神经网络将失去模拟非线性函数的能力。

3.若某算法的计算时间表示为递推关系式:T(N)=2T(N/2)+NlogN 且 T(1)=1

则该算法的时间复杂度为( )。
O(Nsqrt(N))
O(NlogN)
O(N(logN)^2)
O(N^2logN)
O(N^2)

解析:

应该是 O(N(logN)^2)
参考网址:主定理
在这里插入图片描述
但是博主说其实你不会主定理也没事儿,只要能找几个特殊值带入,并根据符号O的意义排除选项即可。所以……其实可以投机取巧。(望天)
主定理在《算法导论》的第53页时间复杂度章节有讲到(是的,黑色的很厚的那本)
摘录和类似的题目在此:算法导论-主定理】用主方法求解递归式 学练结合版

4.有一个卷积层,其参数如下,kernel size为338,kernel个数为16,stride为2,padding为1,输入特征图尺寸为1281288,那么在不考虑偏置的条件下这一层卷积的计算量(每做一次乘法或加法计算量累积一次)是多少?

A.9371648
B.37486592
C.4718592
D.18874368

解析:

= i n K e r n a l + 2 P a d d i n g ) / S t r i d e + 1 输出尺寸边长 = (in - Kernal + 2 * Padding) / Stride + 1 in为输入尺寸边长,Kernal为卷积核边长
3 3 3*3 的矩阵乘法进行了9次乘法,8次加法算数,由于卷积核和特征图都是8层,得到 9 8 + 9 8 1 9*8+9*8-1 ,(因为有8层,n个数相加做了n-1次加法) ,而卷积边长 128 3 + 2 1 / 2 + 1 = 64 (128-3+2*1)/2+1=64 ,卷积进行了 64 64 64*64 次,又由于kernal有16个,故:
9 8 + 9 8 1 64 64 16 = 9371648 (9*8+9*8-1)*64*64*16=9371648
由于是选择题,这个题稍微有点误差也没事,只要知道 3 3 3*3 矩阵乘法共做了17次运算和卷积的次数即可大致算出结果了。

5、求递归次数

int f(int x) 
{  
if(x <= 2)
  return1;
    returnf(x - 2) + f(x - 4) + 1;
}

请问当调用f(10)时, f() 被调用多少次?
A.14
B.15
C.20
D.24
正确答案:B

解析:

画出该递归的树结构,注意,所有内部节点都算调用,得到有15个节点数。
在这里插入图片描述

6、关于矩阵的广义逆,下列表述不正确的是

A. 若矩阵A的广义逆为B,则ABA=A,BAB=B
B. 若矩阵A的广义逆为B,则AB和BA都是对称阵。
C. 矩阵A一定存在确定唯一的广义逆。
D. 矩阵A可能不存在广义逆。
正确答案:D

解析:

矩阵的广义逆存在且唯一。

7、关于C++11中的std::vector的说法正确的是

A.使用std::vector::data()取到的地址在vector的整个生命周期中均可以使用
B.std::vector中的T类型必须支持拷贝构造函数
C.其元素访问效率比单纯使用数组要快
D.可能会占用比实际放入元素所需更多的内存
正确答案: D

解析:

参考网址:C++中vector的特性
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
相比静态数组(Static arrays),向量将会占用更多的存储空间,因为额外的内存将被未来增长的部分所使用

8、如图是gdb调试时某个崩溃发生后堆栈的内容。以下说法错误的是:

在这里插入图片描述
A.有可能是空指针导致的
B.这个进程肯定有多个线程
C.图中可以看到函数的入口地址
D.scoped_refptr.h肯定有bug

解析:

咋一看觉得很复杂,但是实际上十分简单,可以看到抛出异常的位置在scoped_refptr.h
在这里插入图片描述
实际上抛出异常的位置和发生错误的位置很可能根本不在一处,所以不能肯定有bug
在这里插入图片描述
这些都暗示了多线程
在这里插入图片描述
执行了错误访问,很可能是空指针导致的,函数入口就在上图中,可以看到。

9、若一棵二叉树的前序遍历为a, e, b, d, c,后序遍历为b, c, d, e, a,则根节点的孩子节点为

A.只有e
B.有e、b
C.有e、c
D.无法确定

解析:

应该选A,看图说话:
前序和后序遍历可能有多种情况:如图所示(还有一些其他情况没画出来)
前序:只要经过就访问
后序:只要永远地离开就访问(从此不会再经过这个节点了),
由于遍历顺序是(根节点),左子树,左子树左子节点,左子树的右子树,左子,(根节点),右子树,右子树的左子树,右子树的右子树……
前序访问顺序为: 根节点->左子树->左子树子节点->左子树右节点->右子树->右子树的左节点->右子树的右节点
后序访问顺序: 左子树左节点->左子树右节点->左子树->右子树左节点->右子树右节点->右子树->根节点
在这里插入图片描述
所以e是根节点的唯一孩子节点。

10、将50个红球和50个白球放到两个盒子中,放法不限,从中抽出一个球,那么抽到的是红球的最大概率是:

A.1/2
B.2/3
C.13/18
D.74/99

解析:

一个盒子中放入1个红球,另一个盒子放入49个红球和50个白球
概率就是 1 / 2 + 1 / 2 49 / 99 = 74 / 99 1/2+1/2 * 49/99=74/99
答案D

发布了140 篇原创文章 · 获赞 114 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/qinglingLS/article/details/105332729