美团后端开发工程师一面凉经
1. 项目相关。
2. define的使用场景
3. #define string char*有没有问题
4. 声明和定义的区别
5. .h文件和.c/.cpp文件的区别
6. 能不能#include<.c/.cpp>
7.
class A;
A getA() {
return A();
}
void func(A a) {
a.xxx();
}
int main(){
func(getA());
return 0;
} 问A被构造了几次
5. 写代码检查系统是大端还是小端
我用的union,不过输出是一个看不见的字符
union daxiao {
int a;
char b[4];
}
int main() {
daxiao c;
c.a = 1;
for (int i = 0; i < 4; ++i) {
cout << c.b[i] << endl;
}
return 0;
} 不知道错哪里
8. 熟悉的数据结构
9. Map的底层是什么?
我回答红黑树
10. 为什么用红黑树不用哈希表?
11. 红黑树怎么遍历?
12. 哈希表不能遍历吗?
13. 哈希表解决冲突有哪些方法?
14. 开放定址法中,如果两个key不一样但是哈希值一样,其中一个被分配到对应的哈希值内,这一个被删掉了之后,另一个还能被找到吗?
在上一个问题中我回答了几种,面试官问了开放定址法怎么解决冲突,我以线性探测法为例,如果当前哈希值已经有元素的话,会依次向后寻找空位放置元素。然后引出此问题。
15. socket的调用
16. socket每收到一个syn报文就分配一个新线程吗?
17. (1ull<<33)&(1<<31)=?
18. 手撕代码,ipv4地址转数字。
