商汤研究院-深度学习平台C++研发实习生
面试时间:2021-01-26 15:00
面试形式:牛客网网址
一面:
自我介绍
1、vector内存增长方式
vector是动态数组,size()返回的是已用空间大小, capacity()返回的是总空间大小
当空间不够时(size == capacity),增长为之前的1.5倍
2、map和unordered_map的区别
map是有序的,以二叉搜索树保存
unordered_map是无序的,以Hash表保存
3、两个命名空间std和cv里的函数重名怎么办
命名:: 函数名
不加会报错
4、auto类型
auto的原理就是根据后面的值,来自己推测前面的类型是什么。
auto的作用就是为了简化变量初始化,如果这个变量有一个很长很长的初始化类型,就可以用auto代替
5、智能指针
包含在头文件<memory>中,分别有三个智能指针,分别为shared_ptr,unique_ptr,weak_ptr。
shared_ptr的多个对象指向同一个指针
机试
1、合并有序链表
限定语言:C++、Java
将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的。
1 struct node{ 2 int val; 3 node* next; 4 }; 5 6 node* merge(node* n1, node* n2){ 7 8 node* dump = new node(); 9 node* tmp = dump; 10 11 while(n1!=NULL && n2!=NULL){ 12 if(n1->val < n2->val){ 13 tmp->next = n1; 14 n1 = n1->next; 15 } 16 else{ 17 tmp->next = n2; 18 n2 = n2->next; 19 } 20 tmp = tmp->next; 21 } 22 tmp->next = n1 != NULL ? n1 : n2; 23 return dump->next; 24 25 }
2、从排序数组中删除重复项
自己写的用了两个数组,正常只用一个数组
二面:
自我介绍
1、重载与重写的区别
2、虚函数如何实现多态,调用对应的函数
3、堆排序 过程以及时间复杂度
4、CUDA的基本流程
机试:
CUDA入门题

浙公网安备 33010602011771号