一面
(2021/9/16/14:00 ~ 14:30)半小时
emm,感觉没什么好记录的,问的都是 C/C++ 非常基础的东西。。
eg:C 中的全局变量 —— 初始化问题、存储位置问题
没做好的地方:
1. sizeof("Hello)
2. C 的全局/static 变量的初始化问题,没有搞的非常清楚
评价:面试官人挺好,并不是不苟言笑,面完就直接给我说会给我过,并评价我基础非常牢固
二面
(2021/9/17/09:00 ~ 09:32)半小时 【我怀疑,深信服就是只面 30 min。。】
- 自我介绍一下
A:balabalabalabala - Q:平时都看哪些书?
A:C++ 系列(primer、条款、对象模型、STL 源码)、Linux 系列 - Q:你平时都是怎么学习的?
A:知识地图 -> 寻找高效的学习路径 -> 对比以前 -> 困难?找帮手(视频、图解) -> 进阶 - 你说你对内存比较了解?(我槽,MD 自己给自己挖坑了。。自我介绍的不该怎么介绍的,回头要改进自我介绍)
- 出题:栈变量越界问题。题目转最下(P2-5)(绝对不要自己不会的地方,满口胡编,不懂装懂。一定要坦诚的跟面试官交流)
- 你说你看过《深度探索C++对象模型》的书,你能介绍一下 C++ 对象模型在内存中的布局吗?
- STL 用过吗?用过哪些容器?map 和 unordered_map 的底层了解吗?
- 你能介绍一下 “map/红黑树” 和 “unordered_map/哈希表” 各自的应用场景吗?
- 出题:网吧用户时间管理系统(题目转最下 P2-9)
- 用户非常多(数量比较大)
- 用户时间精确到 second(对我想到的 timingWheel 解决方案的更高要求)
- 用户可以动态追加时间(对我想到的堆解决方案的更高要求)
- 出题:确定 IP 属于哪一个/哪几个 IP 段(IP 归属段问题的一种变形)(题目转最下 P2-10)
1. 给出多个 IP 段
2. IP 段之间具有重叠的部分 - 介绍一下你最有成就感的项目
- 你项目中有设计 Channel 这个类,那就说明不同模块之间是需要通信的,那他们是怎么做到进程内通信的?(回调啊,还能怎么办嘞)
- 你项目做完之后,有没有做什么压力测试,奥,你下面写了用 webbench 做压力测试。
- 那你对当前的性能满意吗?
- 有做过什么优化吗?
- 为什么当前的性能上不去?
- 你有分析吗?
- 你是怎么分析?
- 那换一个问题,你看过 “鸟哥的 Linux 私房菜” 那你应该用过相应的命令来检测性能吧。假如你的测试岗同事,反馈收当前被测试项目的项目性能跟不上,你要怎么处理?如何定位兴能瓶颈?
HR 面
emmm,真没谈非常难的问题。
最开始直接跟我说:“你前两轮面试表现非常不错,两个面试官都对你非常满意”。
后面问的都是 HR 回问的基本问题。balabalabala~
半场对话下来,感觉对方一直在表达想要我的意愿
- 问我什么时候可以入职
- 问我对加班的看法
- 问我了解 深信服 不
- 现在拿了几家大厂的 offer
- 还有一些其他的(也可能是我自作多情(づ ̄ 3 ̄)づ )
最后,我想推进下对话,就比较直接了。
我问:“如果我入职,深信服会给我开多少?”
HR:“月薪 xxxxx,你觉得怎么样?”
我说:“( $ _ $ ) ( $ _ $ )”
(概括下,深信服开的价,第一次让我也有一种钱真的知识数字的感觉)
最后,在 9月23 号晚 23 点左右,发来了 offer 确认邮件。
P2-5
int foo(int, int)
{
int a[10];
memset(a, 0, sizeof(int) * 20);
int* p = (int*)malloc(sizeof(int) * 20);
memset(p, 0, sizeof(int) * 20);
}
int main()
{
foo(22, 33);
}
Q:这么做会导致内存出现什么问题?
A:
第一个 memset,因为 a 是数组,自低地址->高地址,会导致将数据写入 “栈” 之外的内存空间,这部分空间是被用于存储当前程序的 env 信息和传入参数
第二个 memset,因为 p 是从堆中申请空间,越界则会访问未授予访问权限的空间,会触发段错误
P2-10
解决方案:
- 使用 “最小堆” 来存储一个用户指针,指针指向时间节点
- 使用 “哈希表” 来 O(1) 复杂度定位用户,表中节点也是存储用户指针,通过指针能够访问到当前用户时间节点在
- 用户充值时间,利用 “哈希表” 来进行定位,更新时间节点的数据,查看当前 “堆” 中最上层的节点是否为
emmm,不行,还是设计的不行
P2-11
解决方案:
- 先使用二分查找,定位到第一个包含目标 IP 的 IP 段
- 然后向后遍历,寻找其他包含目标 IP 的 IP 段