2019年寒武纪暑期实习面试问题总结

一、引言
这篇博文的主要目的是记录一下,找实习和工作面试过程问的一些问题,都是一些基础的问题,但往往是比较容易忽略的。所以做一个记录,方便今后学习。当然,也分享给爱学习的你[手动滑稽]!
我是做自动驾驶视觉方向的,所以一些项目都是关于项目的问题,这个就不多写了,主要写一些代码基础问题。

某武纪面试问题

1. C++的面向对象解释。
用官方的定义:面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。它具有封装性、继承性及多态性。
我的理解,面向过程是以过程为中心的,比如先做什么后做什么,面向对象是将事物对象化,定义对象的属性,通过对象之间的交互解决问题。

2.C++多态性。函数重载,虚函数

C++中多态性分为两种,一种是编译时多态,另一种是运行时多态

运行时多态】 就是虚函数,在定义虚函数之后,可以在派生类中对虚函数重定义,来实现想要的功能。多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
最常见的用法就是声明基类的指针,利用该指针指向任意一个子类对象,调用相应的虚函数,可以根据指向的子类的不同而实现不同的方法。如果没有使用虚函数的话,即没有利用C++多态性,则利用基类指针调用相应的函数的时候,将总被限制在基类函数本身,而无法调用到子类中被重写过的函数。因为没有多态性,函数调用的地址将是一定的,而固定的地址将始终调用到同一个函数,这就无法实现一个接口,多种方法的目的了。

编译时多态】就是函数重载,就是同一函数名可以对应着多个函数的实现,具体调用那个按照参数个数参数类型来决定。
在C++语言中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不用内容的函数,发出同样的消息被不同类型的对象接受时,导致完全不同的行为。

3. 基本的数据类型。
int double float short char long等
4.int型在32位操作系统和64位操作系统占多少位?

64位系统64位编译器 int占4个字节32位。
char *p;
sizeof§=8;//64位编译器占用8个字节,32位编译器占4个字节。
sizeof(int)=4;//4个字节

在这里插入图片描述

5. STL模板库中容器有哪几种?vector的头文件是啥。

序列容器:vector ,deque ,list
结合容器:set,multiset,map,multimap.

6. 结构体和共用体的区别

两者最大的区别在于内存利用。

(1)struct和union都是由多个不同的数据类型成员组成,但在任何同一时刻, union中只存放了一个被选中的成员,而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。

(2)对于union的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于struct的不同成员赋值是互不影响的。

结构体struct
各成员各自拥有自己的内存,各自使用互不干涉,同时存在的,遵循内存对齐原则。一个struct变量的总长度等于所有成员的长度之和。
联合体union
各成员共用一块内存空间,并且同时只有一个成员可以得到这块内存的使用权(对该内存的读写),各变量共用一个内存首地址。因而,联合体比结构体更节约内存。一个union变量的总长度至少能容纳最大的成员变量,而且要满足是所有成员变量类型大小的整数倍。不允许对联合体变量名U2直接赋值或其他操作。
内存对齐原则:
参考这篇博客点击这里
7、虚函数和纯虚函数的区别
虚函数必须在基类中实现,为子类提供默认的函数实现。纯虚函数在基类中定义,不能实现,只能在子类中new 出对象。C++中的纯虚函数更像是“只提供申明,没有实现”,是对子类的约束,是“接口继承”。
class A
{
public:
virtual void ss()
{
cout<<“我是基类的虚函数”<<endl;
}
};
class A
{
public:
virtual void out1(string s)=0; //我是基类的纯虚函数
};

8. 结构体中内存地址对齐?

这个当时还不懂,参考博客

9. yolov3训练过程说一下

这个自行百度吧, 我项目中写的yolo所以面试官就问这个了。

10. TensorFlow中图的解释

我的理解就是计算任务的集合。

11. TensorFlow中张量的解释

在TensorFlow中,所有的数据都为张量。其中,零阶张量表示标量(scalar),代表一个数,一阶张量表示向量,代表一维数组,n阶张量表示n维数组。

13. Ubuntu16.04和Ubuntu18.04的区别

我tm当时还没有用过16.04的系统,我哪知道区别是啥,无语。。。

14. Ubuntu中脚本语言用过吗?shell写过程序吗?用shell写查找文件的代码?

这个我是真没用过啊,偶尔用也是找百度,唉。。

最后
最后聊完之后,问能不能实习6个月,导师只让暑假出去,不到两个月时间,已经很开明了。面试官听到我说两个月之后,估计就凉凉了。。。
还有一些其他公司的时间长了忘了,也都是会问项目的一些东西。但是好像他们都比较喜欢做深度学习方面的视觉,不太喜欢传统的图像方向。
最后,希望自己也可以发现自己的不足,继续进步,分享给大家!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章