再战WXG,全程碾压式面试!
指全程被面试官碾压
太菜了猫猫
开局自我介绍都没有,直接两道hard起手(hot100),言下之意撕不出来也不用自我介绍了。
撕完25min,面试官找了十分钟会议室,然后看了五分钟我的代码,40min时正式开始面试。总计90min。
面试官每次是引入一个话题,然后根据我的回答进一步问问题,一直问,一直问,直到我回答不出为止。
最重要的是!他不是一个问题一个问题问的,他是一堆问题一堆问题问的!我他喵前一句没回答完,他又问十句!记不太清他问的啥了,只能根据录音里我的回答内容反推一下,问题仅供参考
1.自我介绍
2.实习转正情况
Raft开始
3.介绍raft
4.何时发起leader选举
5.如何避免选举失败(超时时长随机化)
6.raft集群有没有不可用的时间,比如日志提交时?
无,高可用,日志写入期间向leader读老日志
7.为什么要大于N/2的节点确认后才提交日志,小于N/2行吗?不向从节点确认行吗?
8.raft如何保障leader的日志是最新的
raft这块结束,猫猫个人觉得答得还行,没有被某个问题卡住
网络开始
9.读过nginx源码没
咋可能读过(
10.TCP长连接和短连接,什么时候用
低频次、无状态、非交互式的场景用短连接,其它的一般长连接
11.心跳有什么用
检测异常连接,防止中间设备如NAT、防火墙等清除会话(这里一开始记错了,说成了是TCP长时间没消息会断开连接,引得面试官质疑,当场百度,我忏悔呜呜,TCP有keep alive,默认不开启,不会自动断开连接,但是中间设备会自动清除会话)
OS开始
12.C++和Go的区别,从服务端编程的角度讲讲
13.C++和Go的协程实现对比
14.协程什么时机切换
15.协程比线程的优势
16.协程切换,需要保存哪些上下文?
答得PC、SP,寄存器中一些其它值
17.寄存器中保存了哪些信息?
我说局部变量、参数、临时值啥的,这里面试官质疑了一下,我又说和CPU架构有关,x86和RISC-V这些不同
18.上下文保存在哪里
我回答栈,或者特殊的页面上,和架构有关
19.函数调用时如何切换上下文的
函数调用信息保存在栈帧中,通过栈帧指针实现函数跳转
20.具体一点,说说函数调用的过程,哪些信息保存在哪里,哪些是调用者保存的哪些是被调用者保存的
真记不清了,猫猫举了一个进程的例子,进程的栈中切分为多个函数的栈帧,按函数的调用顺序从下至上布局,通过栈帧指针的移动实现函数调用,同时函数的局部变量、返回值之类的保存在栈帧中,总之我答得很模糊,面试官不太满意。
21.虚拟内存
22.TLB为什么快
TLB可以缓存,页表查找是需要多级映射
23.吧啦吧啦,问了一堆问题,大概就是问虚拟内存要怎么分配,物理内存又要怎么分配
答了写时复制的一点东西,先分配虚拟内存,实际要用时触发page fault,分配物理内存
24.哪些内存分配在栈上,哪些内存分配在堆上,咋分配的,通过啥函数分配
局部变量啥的在栈上,动态分配的在堆上,小内存用brk,移动堆顶指针,连续的,大内存用mmap,创建独立的内存映射。(其实还有个内存池,忘了)
25.mmap分配的内存在哪
栈和堆中间的内存映射区
26.内存布局,内核态和用户态在哪
27.为什么进程切换比线程慢
页表切换、CPU缓存命中率降低(这一点被面试官质疑了,没搞懂他的说法)
28.切换页表的过程为什么会很慢?难道不是就一个页表指针切换的事吗?
蒙了,我解释了一下两个进程位于不同的地址空间,实际上没有“指针”这种说法,但还是解释不出为什么页表切换为什么慢。
经过面试官提醒,是TLB刷新的原因,页表切换其实是很快的,关键在于TLB会完全刷新。
OS到此结束
C++开始
29.静态多态、动态多态
30.程序运行过程中,是如何找到vptr的?如何根据vtable确定要执行哪个虚函数?
31.vptr属于类还是对象的,在什么时机创建,存放在哪里
32.这里答得很一般,让我从类的内存模型思考一下
33.普通函数和虚函数的虚拟地址是什么确定的?是编译链接期间还是运行期间?
34.父类指针指向子类对象,为什么程序能知道调用的是子类对象的方法?到底是怎么做到的?对象怎么拿到vptr的?
35.引申了一下C++程序执行的四个阶段,链接阶段如何进行符号解析和重定向
总得来说还是在围绕虚函数还有程序动态运行时的地址分配来谈,但这一段猫猫答得很乱,虚函数还是得下去仔细看看
36.反问,看中校招生哪些能力
#我的秋招日记# #牛客创作赏金赛#
开局自我介绍都没有,直接两道hard起手(hot100),言下之意撕不出来也不用自我介绍了。
撕完25min,面试官找了十分钟会议室,然后看了五分钟我的代码,40min时正式开始面试。总计90min。
面试官每次是引入一个话题,然后根据我的回答进一步问问题,一直问,一直问,直到我回答不出为止。
最重要的是!他不是一个问题一个问题问的,他是一堆问题一堆问题问的!我他喵前一句没回答完,他又问十句!记不太清他问的啥了,只能根据录音里我的回答内容反推一下,问题仅供参考
1.自我介绍
2.实习转正情况
Raft开始
3.介绍raft
4.何时发起leader选举
5.如何避免选举失败(超时时长随机化)
6.raft集群有没有不可用的时间,比如日志提交时?
无,高可用,日志写入期间向leader读老日志
7.为什么要大于N/2的节点确认后才提交日志,小于N/2行吗?不向从节点确认行吗?
8.raft如何保障leader的日志是最新的
raft这块结束,猫猫个人觉得答得还行,没有被某个问题卡住
网络开始
9.读过nginx源码没
咋可能读过(
10.TCP长连接和短连接,什么时候用
低频次、无状态、非交互式的场景用短连接,其它的一般长连接
11.心跳有什么用
检测异常连接,防止中间设备如NAT、防火墙等清除会话(这里一开始记错了,说成了是TCP长时间没消息会断开连接,引得面试官质疑,当场百度,我忏悔呜呜,TCP有keep alive,默认不开启,不会自动断开连接,但是中间设备会自动清除会话)
OS开始
12.C++和Go的区别,从服务端编程的角度讲讲
13.C++和Go的协程实现对比
14.协程什么时机切换
15.协程比线程的优势
16.协程切换,需要保存哪些上下文?
答得PC、SP,寄存器中一些其它值
17.寄存器中保存了哪些信息?
我说局部变量、参数、临时值啥的,这里面试官质疑了一下,我又说和CPU架构有关,x86和RISC-V这些不同
18.上下文保存在哪里
我回答栈,或者特殊的页面上,和架构有关
19.函数调用时如何切换上下文的
函数调用信息保存在栈帧中,通过栈帧指针实现函数跳转
20.具体一点,说说函数调用的过程,哪些信息保存在哪里,哪些是调用者保存的哪些是被调用者保存的
真记不清了,猫猫举了一个进程的例子,进程的栈中切分为多个函数的栈帧,按函数的调用顺序从下至上布局,通过栈帧指针的移动实现函数调用,同时函数的局部变量、返回值之类的保存在栈帧中,总之我答得很模糊,面试官不太满意。
21.虚拟内存
22.TLB为什么快
TLB可以缓存,页表查找是需要多级映射
23.吧啦吧啦,问了一堆问题,大概就是问虚拟内存要怎么分配,物理内存又要怎么分配
答了写时复制的一点东西,先分配虚拟内存,实际要用时触发page fault,分配物理内存
24.哪些内存分配在栈上,哪些内存分配在堆上,咋分配的,通过啥函数分配
局部变量啥的在栈上,动态分配的在堆上,小内存用brk,移动堆顶指针,连续的,大内存用mmap,创建独立的内存映射。(其实还有个内存池,忘了)
25.mmap分配的内存在哪
栈和堆中间的内存映射区
26.内存布局,内核态和用户态在哪
27.为什么进程切换比线程慢
页表切换、CPU缓存命中率降低(这一点被面试官质疑了,没搞懂他的说法)
28.切换页表的过程为什么会很慢?难道不是就一个页表指针切换的事吗?
蒙了,我解释了一下两个进程位于不同的地址空间,实际上没有“指针”这种说法,但还是解释不出为什么页表切换为什么慢。
经过面试官提醒,是TLB刷新的原因,页表切换其实是很快的,关键在于TLB会完全刷新。
OS到此结束
C++开始
29.静态多态、动态多态
30.程序运行过程中,是如何找到vptr的?如何根据vtable确定要执行哪个虚函数?
31.vptr属于类还是对象的,在什么时机创建,存放在哪里
32.这里答得很一般,让我从类的内存模型思考一下
33.普通函数和虚函数的虚拟地址是什么确定的?是编译链接期间还是运行期间?
34.父类指针指向子类对象,为什么程序能知道调用的是子类对象的方法?到底是怎么做到的?对象怎么拿到vptr的?
35.引申了一下C++程序执行的四个阶段,链接阶段如何进行符号解析和重定向
总得来说还是在围绕虚函数还有程序动态运行时的地址分配来谈,但这一段猫猫答得很乱,虚函数还是得下去仔细看看
36.反问,看中校招生哪些能力
#我的秋招日记# #牛客创作赏金赛#
全部评论
汗流浃背了
佬很厉害了 真的问的太难了

又是一个半小时高强度拷打


。。。。。没几个会的
不愧是wxg,面试造火箭
WXG是最难进的,三轮技术面后还有面委
校招生看哪些能力呢?
相关推荐
09-02 12:09
郑州大学 后端工程师 

点赞 评论 收藏
分享

点赞 评论 收藏
分享
点赞 评论 收藏
分享