美团后端开发工程师一面凉经
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地址转数字。