1.介绍c++左值和右值。介绍右值还讲到了类类型的将亡值。然后让介绍了一下move函数。给了几个左值和右值判断正确吗?
int a =1;
int &a = 1;
int &a = b;
int &&a = 1;
const int &a = 1;
const int &&a = 1;
2.写一个代码能判断大小端
3.new一个基础类型的指针,强转成类类型,调用会不会出错?
4.类类型的空指针调用函数可以么?分情况,涉及this指针就不可以。
5.图形学,八叉树的大概实现和应用,讲了一下空间搜索和分支定界。渲染,裁剪了解吗?讲了一下。
6.操作系统,为什么要弄虚拟内存?new之后是物理内存还是虚拟内存,又讲了一下页面置换。
7.计算机网络,socket知道吗?服务器accept之后就建立连接了吗?
8.算法题。定义边界相连的三角形集合称为“岛“,给一组三角形的点坐标如:(0, 1, 2), (0, 2, 3), (4, 5, 6);问有几个“岛”,例子是2个岛。(set并查集思想)
int calculate( set> triangle) {
set> island;
while (triangle.size()) {
auto iter = triangle.begin();
set candidate = *iter;
triangle.erase(iter);
for (auto it = triangle.begin(); it != triangle.end(); ) {
set t;
set_intersection(it->begin(), it->end(), candidate.begin(),
candidate.end(), inserter(t, t.begin()));
if (t.size() == 2) {
set_union(it->begin(), it->end(), candidate.begin(),
candidate.end(), inserter(candidate, candidate.begin()));
it = triangle.erase(it);
}
else {
it++;
}
}
island.insert(candidate);
}
return island.size();
}
NOTE:一开始写出如下的代码,一直提示一堆看不懂的错误,仔细检查发现,set_union比较的是两个set,是set1.begin(),set1.end(),set2.begin(),set2.end()。而这里的triangle是一个set
set_union(triangle.begin(), triangle.end(), candidate.begin(),
candidate.end(), inserter(candidate, candidate.begin()));
几天就通知二面,到10.11还没有二面。
收到二面,已签约,拒绝了。
进来先介绍自己,让我讲讲项目,然后说有没有C++实现的部分,反正说了半天就是觉得项目不够。。我说我是做算法的。。然后就说写个代码:
leetcode 77 题:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
写完了之后说代码重复率比较高,让我写笔试的求素数题目,写完了说了几句就让我去二面了。
二面又开始介绍项目,然后我又是对自己做的一顿说,说完了之后这个面试官就感兴趣点,然后说我们问问网络,tcp udp很基础的问题,之后问了对称加解密,我还想将证书什么的,他说够了,还问我网络层怎么加密,ipsec,没回答出来。然后就问设计模式,问我会不会,我说就只知道单列模式,他说没事,然后换操作系统,问我没有初始化的全局变量放在哪,我结合虚拟内存把一套给他讲完了,还有虚拟内存和物理内存之间常问的new,,还问了c++里面的set,mutilset,unordered_set。然后就写代码:
leetcode516.最长回文子序列。和回文子串不同,子序列可以是不连续的,dp。
leetcode111.二叉树最小深度
写完了就让我出去等综合面。
综合面最久,完完全全的问了50分钟以上,包括项目,你最自豪的事情,对人生的规划,为什么不读博,一堆组合拳。回答完了感觉有点被装进去了。。。
朋友二面遇到的问题:leetcode 200 岛屿的数量;leetcode 695 岛屿的最大面积。
2019.9.12收到华为意向书,无线sp已拒。
1、介绍一下static(c/c++)
2、如果一个递归函数中用static变量有没有问题
3、递归函数在返回的时候,为什么值没有改变
4、栈除了存储局部变量还有什么
5、调用函数的过程
6、虚函数如何实现
7、虚函数指针、this指针什么时候初始化
8、一个空类有哪些默认函数
9、什么情况下需要定义拷贝构造函数、同时还要定义什么函数?
10、简单的数据结构讲了下布隆过滤器、set、红黑树
1、介绍项目
2、局部变量,全局变量,局部静态变量,全局静态变量,字符串常量在内存中哪个位置?
3、介绍进程空间
4、局部对象,全局对象,局部静态对象,全局静态对象什么时候初始化?如果一个函数有局部对象和局部静态对象,在调用时候有什么不同吗?
5、介绍stl,vector,stack,map,unordered_map底层,为什么喜欢用unordered_map,什么时候用map?
6、虚函数、虚函数表指针,虚函数表
7、如果类中已经有了虚函数,此时需不需要定义一个虚析构函数?
8、如果在一个基类构造函数中调用了虚函数,这个虚函数在派生类中已经改写,请问这个时候调用的是基类的虚函数还是派生类的虚函数?分别从编译器安全和执行讲。
9、派生类和基类有几个虚函数表?一个类的所有对象都有一个虚函数表还是?
10、当完成一个派生类初始化时,如果这个派生类中有虚函数,那么它的虚函数指针被赋值几次?
11、tcp滑动窗口的意义?讲详细一点
12、线程进程讲一讲、都拥有什么资源?
聊得很开心,面试官加了微信,推荐了一下学习方案,小米相机内核的,对c++要求比较高,还好奇问我是怎么学习的。
2019.10.10收到小米hr谈薪,相机内核sp,拒了。
1、介绍项目
2、x86 x62 int short float字节数,为什么在x86和x32下long的字节数不同?地址总线
3、无序数组最小k个数
4、使用clear会不会清空vector内存?场景题1:如果一个vector 95%的数据都小于1W个int,5%的数据大于100W个int,这时候怎么样操作使得开销最小?定时去检查一块内存,如果大于100w就重新开辟一块内存。
5、场景题2:uint类型数,两个巨大的文件,无法存入内存,怎么来判断,两者重复的?如果是字符串呢?怎么判断两个巨大文件中的交集?
1、介绍项目,很久
2、搜索路径最小代价向右向下,dp,如果能4个方向呢?会不会出现搜索完又回去死锁的情况?
3、介绍内存空间堆栈区别,详细
4、滑动窗口介绍,详细问了比较多
5、找一条二叉树最长路径并且输出
介绍项目,聊里面的东西,运动点云采集的运动补偿。面试官人很好提了很多关于多线程方面的建议,nginx,webserver,cyber RT,以及可以再去好好读读PCL源码,在linux环境下去读,职业规划等等,啊!许愿许愿!给我一个百度offer吧!!!
--->9.26 给了。加油!!!