(李飞飞的IMAGENET,何凯明的RCNN/ SPP / MaskRCNN,贾扬清Caffe / Fair,任晓枫KITTI / Graphics,汤晓鸥Facial Descriptors)
《机器学习与模式识别》、《剑指offer》、《计算机视觉算法与应用》
1. 问:构造函数的作用?并把构造函数的定义格式写出来。
构造函数用于解决类中的对象初始化的问题
构造函数是一类特殊的函数,与其他的成员函数不同的是构造函数构造函数不需要用户来调用它,而是建立对象的时候自动的执行
https://blog.csdn.net/tiantang46800/article/details/6938762
2. 问:谈谈对多态的理解。
多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。
C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函数,只有重写了虚函数的才能算作是体现了C++多态性)而重载则是允许有多个同名的函数,而这些函数的参数列表不同,允许参数个数不同,参数类型不同,或者两者都不同。编译器会根据这些函数的不同列表,将同名的函数的名称做修饰,从而生成一些不同名称的预处理函数,来实现同名函数调用时的重载问题。但这并没有体现多态性。
多态与非多态的实质区别就是函数地址是早绑定还是晚绑定。如果函数的调用,在编译器编译期间就可以确定函数的调用地址,并生产代码,是静态的,就是说地址是早绑定的。而如果函数调用的地址不能在编译器期间确定,需要在运行时才确定,这就属于晚绑定。 那么多态的作用是什么呢,封装可以使得代码模块化,继承可以扩展已存在的代码,他们的目的都是为了代码重用。而多态的目的则是为了接口重用。也就是说,不论传递过来的究竟是那个类的对象,函数都能够通过同一个接口调用到适应各自对象的实现方法。
最常见的用法就是声明基类的指针,利用该指针指向任意一个子类对象,调用相应的虚函数,可以根据指向的子类的不同而实现不同的方法。如果没有使用虚函数的话,即没有利用C++多态性,则利用基类指针调用相应的函数的时候,将总被限制在基类函数本身,而无法调用到子类中被重写过的函数。因为没有多态性,函数调用的地址将是一定的,而固定的地址将始终调用到同一个函数,这就无法实现一个接口,多种方法的目的了。
https://blog.csdn.net/Hackbuteer1/article/details/7475622
3. 问:虚函数和纯虚函数的区别。
定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。
https://blog.csdn.net/Hackbuteer1/article/details/7558868
4. 问:静态链接库和动态链接库的区别。
5. 问:const放在函数的前中后分别有什么区别。
6. 问:vector如何实现动态增长,如何实现申请一大片连续空间;
关于vector,简单地讲就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时会自动申请另一片更大的空间,然后把原有数据拷贝过去,接着释放原来的那片空间,新空间为原空间大小的2倍;当释放或者说是删除里面的数据时,其存储空间并不会释放,仅仅只是清空了里面的数据。
https://blog.csdn.net/mfcing/article/details/8746256
https://blog.csdn.net/c_base_jin/article/details/51099807
7. 问:链表,键值,堆栈分段存储;
https://blog.csdn.net/amork/article/details/7258216
8. 问:全局与局部静态变量区别;
1.全局静态变量只能被当前源文件引用,不能被工程里其它源文件引用。 除了这点特殊,其它与普通的全局变量一样。
2.局部静态变量,只执行一次初始化,只能被所在函数引用,函数执行 完毕,变量仍存在,生存周期贯穿整个程序。
9. 问:explicit关键字的作用;
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生,声明为explicit的构造函数不能在隐式转换中使用。
C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。
1 是个构造;2 是个默认且隐含的类型转换操作符。
所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一个AAA的对象。
这样看起来好象很酷, 很方便。 但在某些情况下, 却违背了程序员的本意。 这时候就要在这个构造器前面加上explicit修饰, 指定这个构造器只能被明确的调用/使用, 不能作为类型转换操作符被隐含的使用。
10. 问:如何实现多态;
1.通过对象直接调用成员函数时,始终默认使用该对象的类的成员函数(除非用::显示指定类名)
2.通过指向对象的指针或引用调用成员函数时,如果该函数是实函数,则调用该指针或引用的类的成员函数;如果该函数是虚函数,则调用该指针或引用指向的对象的类的成员函数。
11. 问:解释一下动态对象捆绑技术;
12. 问:解释一下运算符重载;
13. 问:谈谈你对指针函数与函数指针的理解;
14. 问:SVM原理;
15. 问:CNN-loss;
16. 问:梯度消失;
17. 问:GAN;SiameseNet;
18. 问:SiameseNet;对临界资源、互斥锁与自旋锁的理解,
19. 问:对临界资源、互斥锁与自旋锁的理解,
20. 问:链表和红黑树;
21. 问:稀疏表达;
22. 问:DCF原理;水平集分割;遗传算法原理;
23. 问:水平集分割;
24. 问:遗传算法原理;
25. 问:SIFT算法原理;
26. 问:深拷贝,浅拷贝;
27. 问:解释一下线性分类和非线性分类的区别;
28. 问:为什么Python可以实现跨平台,Python的时间消耗最多的环节在哪里,谈谈你知道的依赖Python的机器学习库和计算机视觉库;
29. 问:在MOBA游戏如英雄联盟、王者荣耀中,一般有多个玩家同时游戏,要如何实现游戏的实时性,如何处理玩家角色之间的同步?
30. 问:说一下你对跟踪的理解并谈谈主流的跟踪方法?
31. 问:快速排序算法(堆排序);
32. 问:动态优化的边界条件;
33. 问:L1正则化L2正则化的优缺点,为什么需要L1.5正则化;
34. 问:全局与局部静态变量区别;
35. 问:explicit关键字的作用;
36. 问:如何实现多态,
37. 问:解释一下运算符重载;
38. 问:谈谈你对指针函数与函数指针的理解;
39. 问:游戏中需要对毛发进行深度刻画,从渲染引擎角度设计一个基本的算法
40. 问:malloc,alloc与new的区别
http://www.cnblogs.com/ywliao/articles/8116622.html