本文主要是介绍诺瓦笔试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一 填空题
1 用到了|AB|=|A||B|。
题:A=(a1,a2,a2)ai是列向量。B的列是a1,a2,a3的组合。已知|A|,求|B|。
2 概率,两个独立的高斯分布的线性组合的期望和方差
3 概率,0-9数字随机选择三个,最大的数不是5的概率。
较为简单。
反面:1-C(5,2)/C(10,3)=11/12
或者正面来:(C(5,3)+C(4,1)*C(6,2)+C(4,3)+C(4,2)*C(6,1))/C(10,3)。
4 简单向量垂直的性质
5 CMYK的C和Y混合的颜色。
6 gamma变换的γ大于1的情况。
9 简单的卷积知识
10 简单的神经网络计算
二 逻辑题
1. 简单的推理题
2 有一块正方形蛋糕,左上角1/4切下,剩下3/4如果分配给4个人,形状一样。
也不算难。
三 综合题
1 简单的RGB转灰度,边缘提取,锐化和模糊的知识。
2 简单的空域滤波和频域滤波知识。
低通滤波可以做锐化吗?显然不能啊。
0 -1 0
-1 4 -1
0 -1 0
和
-1 -1 -1
-1 8 -1
-1 -1 -1
滤波的区别。
import cv2
from matplotlib import pyplot as plt
import numpy as np
a = cv2.imread("timg.jpg")
b = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]])
c = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]])
d = cv2.filter2D(a, -1, b)
e = cv2.filter2D(a, -1, c)
plt.subplot(1, 3, 1)
plt.imshow(a, cmap='gray')
plt.subplot(1, 3, 2)
plt.imshow(d, cmap='gray')
plt.subplot(1, 3, 3)
plt.imshow(e, cmap='gray')
plt.show()
第一个对于提取水平竖直的边缘比较有效,而第二个几乎各个方向的都能提取。
注意边缘提取和锐化的区别:
边缘提取的kernel的和为0,而锐化则为1,其实锐化=原图+边缘图
import cv2
from matplotlib import pyplot as plt
import numpy as np
a = cv2.imread("timg.jpg")
b = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]])
c = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]])
d = cv2.filter2D(a, -1, b)
e = cv2.filter2D(a, -1, c)
plt.subplot(1, 3, 1)
plt.imshow(a, cmap='gray')
plt.subplot(1, 3, 2)
plt.imshow(d, cmap='gray')
plt.subplot(1, 3, 3)
plt.imshow(e, cmap='gray')
plt.show()
3 想办法分离远近光灯。大概就是RGB转灰度然后滤波形态学处理噪点和孤立点,然后图像增强对比度,这样近光灯和远光灯的亮度就不同了,然后阈值分割即可。
4 算法题:
桌子上一堆红包,切两刀,分为三组,如果第一组和第三组的总金额相同,输出总金额(可以为空)。
要求c/c++。
这个思路不难,先比较左1和右1,如果左1<右1,比较左1+左2和右1,以此类推,直到两刀相遇,如果此时还不等,那就返回0。
复杂度为O(n)。
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{int hb[]={2,3,5,6,2,1,8,9,1,4};int l=sizeof(hb)/sizeof(int);int *s=hb,*e=hb+l-1;int sum1=*s,sum2=*e;while(s<=e){if (sum1==sum2){cout<<sum1;exit(0);}else{if (sum1>sum2){e--;sum2+=*e;}else{s++;sum1+=*s;}}}cout<<0;return 0;
}
1s以内。
验证:
2+3=3+1+1=5。应该没啥问题。
这篇关于诺瓦笔试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!