商汤研究院-深度学习平台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 }
View Code

2、从排序数组中删除重复项

自己写的用了两个数组,正常只用一个数组

二面:

自我介绍

1、重载与重写的区别

2、虚函数如何实现多态,调用对应的函数

3、堆排序 过程以及时间复杂度

4、CUDA的基本流程

机试:

CUDA入门题

 

 

posted @ 2021-01-27 11:29  Gumpest  阅读(94)  评论(0)    收藏  举报