先说一下感想:看完后感觉自己一道题都不会。。自己虽然学的多,但是学的都非常的杂。。而且学的很多都是基础,虽然自己非常讨厌算法,但是说实话,不学算法,终究只能停留在非常基础编码上,所以以后打算多做点算法题提高自己的编码能力!!
题目1
设已有说明语句“int a=5;”,则执行语句“a+=a*=a%=3;”后,a的值为
错误分析:
这里a在计算的同时它的值也已经改变了。
解析:
原式:
a+=a*=a%=3
a%=3 等价于:a=a%3,a=2,a%3=2
a*=a%=3 等价于:a=a*(a%=3),a=a2,因上式a=2,所以,a=22,a=4,a*(a%=3)=4
a+=a*=a%=3 等价于:a=a+a*(a%=3),因上式a*(a%=3)=4,a=4
所以,a=4+4
a=8
题目2
以下关于this指针的叙述中正确的是
x任何与类相关的函数都有this指针
X类的成员函数都有this指针
X类的友元函数都有this指针
V类的非静态成员函数才有this指针
这个题目看到答案后就瞬间明白了~~~
静态成员是没有this指针的。。。。
题3
下面函数存在的问题
void fun()
{
int *num1, *num2;
num1 = new int[10];
num2 = new int[20];
num1[0] = 100;
num2[0] = 300;
num1 = num2;
delete [] num1;
}
num1最初指向的空间没有释放
解析
这里是因为num1的指针被num2覆盖了,最后删除的时候只是把num1给删除了
题4
一个数组长度为n。指定数组内的一个元素,把数组内小等于该元素的,放在该元素左边,把数组内大于该元素的,放在该元素右边。这个需要多少次操作
答案是n
这个我找不到解析。。。
题5
如果只用比较、交互、赋值等操作,而不能使用算数操作(加减乘除等),将一个数组排序,最少需要多少次操作?
答案是 nlogn
排序算法 | 平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
冒泡排序 | O(n²) | O(n²) | O(n) | O(1) | 稳定 |
直接选择排序 | O(n²) | O(n²) | O(n) | O(1) | 不稳定 |
直接插入排序 | O(n²) | O(n²) | O(n) | O(1) | 稳定 |
快速排序 | O(nlogn) | O(n²) | O(nlogn) | O(nlogn) | 不稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
希尔排序 | O(nlogn) | O(ns) | O(n) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
计数排序 | O(n+k) | O(n+k) | O(n+k) | O(n+k) | 稳定 |
基数排序 | O(N*M) | O(N*M) | O(N*M) | O(M) | 稳定 |
这里最快的操作就是快速排序了
题6
以下哪个集合不是凸(convex)的?
我感觉好多考的都是数学题~~~ 这个是关于数学优化的问题
百度百科定义:
在凸几何中,凸集(convex set)是在凸组合下闭合的仿射空间的子集。更具体地说,在欧氏空间中,凸集是对于集合内的每一对点,连接该对点的直线段上的每个点也在该集合内。例如,立方体是凸集,但是任何中空的或具有凹痕的例如月牙形都不是凸集。
答案:{x | ||x|| >= 1}, ||x||表示x的绝对值
图像只是一条线,所以不算凸集
题7
假设每天投稿池中,每1000个视频中会有1个营销号视频,为了净化社区环境,b站同事训练了一个检测营销号视频的模型。模型评估结果如下:如果某视频是营销号视频,就一定会被模型检测出来,但是如果某视频是正常视频,也会有1%的概率被误判成营销号视频。提问:现在有一个新投稿的视频,被模型判定成了营销号视频,那么它原本真正是营销号视频的概率是多少
答案:0.09099
这个是一个非常典型的概率计算的题目。
但我书上的内容忘的差不多了。。。以后有时间我在去研究一下。
题8
神经网络中的dropout的效果跟以下哪种机器学习方法的效果类似
答案:Bagging
这种题目真的一脸懵逼,因为之前从来就没有学过。。
解析:Dropout可以认为是一种极端的Bagging,每一个模型都在单独的数据上训练,同时,通过和其他模型对应参数的共享,从而实现模型参数的高度正则化。
题9
向量 A=[1, 3, 6, 4, -9, 0]的L1范数为
答案:23
这个好像是概率论与数理统计里面的内容。。。突然发现大学学的面试都用的到QAQ
范数是指向量中各个元素绝对值之和。
题10
给定一个离散型随机变量x的分布P(x),这个变量的熵(entropy)定义为sum-P(xi)*log(P(xi)),那么当熵的值逐渐升高时,说明:
答案:变量的分布逐步平均化
又是概率论的题目。。。这课我都没怎么认真听。。。
当熵升高的时候,相当于p(x)减少。。
。。。
看了一下后面的题目。。。好多都是和人工智能算法相关的,吐了。。。