商汤科技 (岗位:C++开发(图像处理和CV))
2021.10.12技术一面约 70分钟
1. 自我介绍
2. 问了研究方向中的模型压缩方面的问题:
Transformer中Q, K, V权重矩阵的作用,还有公式中为什么除以dk ?
CV算法中高斯模糊是怎样的?
3. C++构造函数初始化时什么时候只能用初始化列表?
4. 函数调用的时候参数进栈的顺序是怎样?为什么这样设计?
5. 下面两个字符串拼接函数,哪个效率更高?为什么?请说出都调用了哪些构造函数?
string strcpy1(string s1, string s2){
return (s1 + s2);
}
string strcpy2(string s1, string s2){
temp = s3;
s3 = s1 + s2;
return temp;
}
答案:strcpy1的效率更高。strcpy2需要先创建一个s3对象,需要调用初始化构造函数,然后s3 = s1 + s2这一句,需要先调用拷贝构造函数分别生成s1和s2, 然后再调用拷贝构造函数将结果拷贝到s3。
6. 什么是左值和右值?右值引用解决什么问题?
7. 数据结构大根堆和小根堆和栈是怎样的?
8. 一个无序数组建堆的过程是怎样的?时间复杂度是多少?
9. 三个智能指针的用途分别是怎样的?
10. 代码实现:输入一个算数表达式string,如1+2*3+45,输出表达的结果
面的岗位是C++所以必须用C++写不能用python。