郁闷一天(毫无原因的郁闷)吐个槽……
嗷嗷嗷嗷嗷哦嗷嗷嗷嗷嗷哦嗷嗷!嗷嗷,嗷嗷嗷嗷,嗷嗷嗷嗷嗷哦啊呜呜呜呜……
今天又是因为疫情没课又很闲还不能找小伙伴玩的一天,又不想干活写毕设,所以真的很烦。所以做了一套快手的题。
总结下错题和不太确定的题目:
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+2∗Padding)/Stride+1in为输入尺寸边长,Kernal为卷积核边长
3
∗
3
3*3
3∗3 的矩阵乘法进行了9次乘法,8次加法算数,由于卷积核和特征图都是8层,得到
9
∗
8
+
9
∗
8
−
1
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
(128−3+2∗1)/2+1=64 ,卷积进行了
64
∗
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
(9∗8+9∗8−1)∗64∗64∗16=9371648
由于是选择题,这个题稍微有点误差也没事,只要知道
3
∗
3
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
1/2+1/2∗49/99=74/99
答案D