攒人品的 WXG 后台开发二面面筋

在等第二轮面委等的无聊,写一篇之前的二面面筋攒个人品吧。

大约是 9.6 晚上八点开始面试,接近十一点面试完,感觉人已经被榨干了,但是确实收获了很多。

也许还问了别的东西,但是只记得这些了,给大家分享一下。


面试官:看上次面试问的都是操作系统方面的啊,这次我们问点网络吧

1. TCPUDP的区别,为啥三次握手、四次挥手?

2. 打洞听说过吗?打洞是用什么协议实现的呢?UDP还是TCP?有哪些使用UDPTCP的协议呢?

3. HTTP了解吗,HTTP1HTTP1.1HTTP2有啥区别,HTTP header都有啥内容啊,HTTP方法有哪些啊,GET/POST区别是啥,长链接的发送顺序和接受顺序要一致嘛,可能被阻塞嘛?

4. HTTPS了解吗,握手流程是怎么样的,加密是对称还是非对称,协议相比HTTP有什么好处呢?HTTPHTTPS的端口分别是啥?

5. 如果用户输入的是http://xxx.com的网址,但是已经升级到了HTTPS,会发生什么呢?你会怎么处理呢?

6. socket 编程了解吗,调用write函数进行了几次内存拷贝呢?那是否可以减少拷贝次数呢?如果缓冲区写满了会怎样,还可以继续write吗?

7. 你刚刚提到mmap,怎么实现的了解吗?是只能映射用户空间和内核空间吗?


面试官:来问点别的东西吧

1. 进程和线程了解吗,有啥区别?线程之间怎么同步的?

2. 考虑你有一个服务,可能会起十个进程,如果某一个进程挂了,需要能感知到并且重新拉起来,请问你会怎么设计?

3. 线程之间是怎么同步的呢?同一台机器上的进程之间如何做到互斥的进行某个操作呢?

4. 你刚刚提到原子操作,怎么实现的了解吗?

5. select epoll 了解嘛?有什么区别,ET/LT模式?epoll 的一些实现?如果需要跨平台,你会用select还是epoll


面试官:来做两道题吧

1. 很简单,找出序列中和最大的连续子序列的下标起始和结尾;

2. 是一道工程题,楼主还是第一次做这种题:


考虑你向业务方提供热更新的服务,业务方可能是在多线程的场景下,会去读取config文件,也会不定时去更新config文件,config文件很大(大约50G),只有一份且存在磁盘上,内存大约128G。问如何设计这个updater类,使得业务方在更新时可以无感知的进行读取config的操作。

在面试官的引导下以及redis重哈希的启发,想出了double buffering的思路,然后去实现,同时要考虑多个线程更新config、多个线程读取config、文件在内存中副本的保存(因为太大了)等等情况,尽量和真实场景贴近。


可能还有其它的问题,但楼主脑容量太小,已经flush掉了

这次面试确实实楼主有史以来面到的最难的面试了,问题都相当有深度,同时要求能在具体的场景下结合知识点给出解决方案,感觉一眨眼就面了三个小时,辛苦面试官和楼主一起面到11点了。


希望面委会第二面赶紧来吧
Offer 快到碗里来!!!
#腾讯##C++工程师##校招##面经#
全部评论
老哥,我还在等第一轮面委
点赞 回复 分享
发布于 2019-09-16 21:54
好难啊....
点赞 回复 分享
发布于 2019-09-16 23:28
sp大佬
点赞 回复 分享
发布于 2019-09-16 23:43
太强了
点赞 回复 分享
发布于 2019-09-16 23:46
请问大佬,一次write调用只是进行一次内存拷贝对吧(从用户内存空间拷贝到内核内存空间),那么如何减少拷贝次数呢
点赞 回复 分享
发布于 2019-09-17 11:25
准备二轮面委中,楼主哪个部门的
点赞 回复 分享
发布于 2019-09-17 16:39
那个update类,可以考虑下读写分离,参照JAVA CopyOnWriteList
点赞 回复 分享
发布于 2019-11-15 22:42

相关推荐

不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
10-31 14:54
已编辑
门头沟学院 算法工程师
点赞 评论 收藏
分享
评论
6
75
分享
牛客网
牛客企业服务