旷视科技面经
我是面的开发岗位 主要的语言是c++和python
一面
上午10点电话面试。
上来先是自我介绍,大概说一下学校,本硕的情况,接着是当前做过的项目和学习的技术。
接着问算法题:
第一题:给出一些整数区间的无序集合,如何将这些集合进行合并,最后返回合并到不能在合并的区间集合。这道题目比较的简单就是贪心,先对集合当中的区间按照起点进行排序,之后一遍扫描就可以解决。
第二道题目:给出一个n+2个元素构成的数组,其中所有的元素都在1-n之间,找出重复的那两个元素,最快且使用最少的空间。这道题就是LeetCode上的原题,也是非常的简单,就是使用数组的下标当做桶遍历的时候将元素对应位置的值,如果为正,置为其原来值的相反数这样在遍历到负数的时候就知道该位置的值出现过了就可以判断出其下标是重复出现的元素。o(n)的时间,o(1)的空间。
算法题我答得比较好,接下来就是一些基础知识的问答,主要问的是c++方面的:
- 虚函数是什么原理,c++是如何实现多态的。
- 有没有用过智能指针,智能指针的原理和作用。
- STL当中的容器用过哪些,了解哪些都是什么作用大概说下。
- 知道哈希函数么,STL当中那个容器是哈希实现的哪个是红黑树实现的,具体的复杂度是多少。
- 给你一个对象你只知道他的类型,你也知道这个类型只有一个方法,但是你不知道这个方法的名称,你该怎么调用这个方法?
- 析构函