背景:9.22突然打电话问要不要面试,我说微信之前不是说今年不秋招,对面说政策有调整,所以又开始秋招了,还说如果能提前实习,流程可以推进地快一些(我也不懂这说的是什么意思),但面试流程是正常地应届生秋招流程,非实习生流程。之前暑期实习面过一次微信搜索部门,被一面薄纱,所以对wxg其实没什么好感,但怕贸然拒了以后,没有其他部门愿意捞了(之前有听过这种情况),所以也就答应了,想着早面完早进入复活赛。一面(9.25 1小时 大头兵面)面试官介绍是企业微信的,然后就开始面试,一面出乎意料的比较简单,八股和项目基本五五开。自我介绍问实习经历raft算法、zab协议的区别raft如何选举新的leaderraft选举leader需要至少几个节点同意raft在集群规模3个、4个节点的情况下,分别需要几个节点同意,才能选出leader进程、线程、协程之间的区别,优缺点协程有什么缺点http2相较于http1的区别tcp连接3握4挥binlog和redo log的区别乐观锁与悲观锁是什么leveldb的出现是为了解决什么问题leveldb有什么优点leveldb的快照了解吗(不了解)在浏览器中输入网址并回车后,发生了什么做一道题(leetcode简单难度,本来是有两道,但是八股问完已经面了快50分钟了,面试官说来不及做两道了,一道就可以)反问:企业微信里面具体做什么的(答:基础架构,存储,消息队列)二面(9.26 1小时30分钟 应该是主管面)本来以为一面问的并不是很深入,可能是个kpi,结果一面结束当天晚上就约了2面上来什么多余的话也没说,直接甩来4道编程题,给一个小时的时间去做4道题大概1道easy,2道mid,1道hard;能记得的是有一道斐波那契数列,一道判断字符串子序列,一道搜索旋转排序数组,一道统计逆序对的个数,做了大概整一小时然后是实习和八股cpu常见的寄存器有哪些zeromq的架构是怎样的,有什么特点etcd底层是如何存储的b+树相较于二叉树有什么优点paxos和raft的区别paxos中节点宕机后如何去恢复数据Linux中的虚拟内存了解吗,虚拟内存和物理内存之间的关系是什么rdma了解吗?rdma有什么好处?了解什么是rdma的原语吗?面试结束,没有反问三面(9.26 1小时30分钟 总监面)二面结束后没有反问环节,以为自己寄了,结果晚上吃完饭一看,状态竟然从初试变复试了,很激动。然后过了一小时,2面面试官打电话问晚上是否有时间面试,因为他们总监正好晚上有空。本来想因为太晚,改天的,但是怕今天不面,时间往后拖太多,到国庆后了,所以就答应了。约了晚上7点半的面试,但是面试官迟了大概15分钟,7:45才开始看了好多腾讯面经,以为总监面不用做题,或者做一道题,以聊天和深挖项目为主,没想到总监面上来也是直接给我甩了3道题,1小时做完。第一道是设计一个直播系统,每个直播间有房间号和热度,需要对直播房间列表里面的房间进行插入和删除,并且要能获得热度前100的直播间。(哈希表+小顶堆实现)第二道,有一个rand函数,生成0-65535之间的任意随机数,现有300000员工抽奖,抽1000个,保证每个员工获奖概率相同。(其实就是leetcode里面的用rand7生成rand10相同的思想,就是要注意等概率。当时做的时候没有想到更深层次的等概率,所以这道题应该算是没完全做出来)第三道,一个二叉排序树,从1-n,现给3个数p,q,m,判断三者的公共祖先。(二分查找,判断当前查找对象是否同时是p,q,m的祖先)三道做完大概花了1小时多一点,剩下的时间基本上就是在讲这三道题,第二道题一开始做错了,后来也没想到正确方法(太紧张了),比较糟糕,讲完以后简单问了几个八股:probuf序列化与反序列化的原理redis主从如何同步然后就直接到了反问环节,问了一下结果大概1周内会出,就结束了。四面(9.27 1小时 面委会1面)三面因为有一道题没做对,感觉对面总监好像不太满意,然后对面又说一周后才出结果,我想一周后不都国庆了吗,以为这是在变相告诉我挂了,所以这回真以为自己寄了。结果第二天早上11点左右,hr就打电话约了面委的1面。面试官上来就问3门八股(计网、数据库、操作系统)哪个最熟悉,然后就开始八股和设计题的狂轰乱炸(不是说面委都不怎么懂技术的吗。。。)你的c++ webserver是如何实现的epoll是如何做到高并发的你的webserver中如何保证高并发接收数据接收的数据存在哪(自己设计的buffer里)buffer是如何设计的你的webserver如何解析http请求(有限状态机)如何识别http请求结束了如果一个tcp请求装不下内容,如何设计webserver,使其可以在高并发环境下把来自不同连接的内容分开(hashmap)了解c语言里的malloc吗如何自己设计并实现一个malloc和free,保证分配和释放内存的合理,并且不产生内存泄漏项目中用到了cache,cache满了怎么办(淘汰)怎么淘汰(主动、被动、LRU、LFU)LRU内部如何实现(双向链表+哈希表)Linux中,如何杀死名字为server的进程了解什么数据库存储引擎,他们的底层是如何实现的b+树有什么优缺点innodb为什么用b+树,不用二叉树或红黑树epoll为什么用红黑树而不用b+树文件在磁盘里怎么存储,是连续的还是不连续的?如何设计函数,完成对文件的追加写如果追加写的时候发现空间满了怎么办如果满的仅仅只是文件夹的空间,硬盘里仍有空间该怎么办(不会)如果让你去设计并实现一个消息队列,需要怎么做,用到什么通信方法消息队列的消息存在内存还是硬盘存在硬盘中的消息如何存储没有反问,面试官好像接下来还有会,所以刚刚到一小时,就急匆匆地结束了面试。五面(10.9 1小时30分 面委会2面)因为面委会1面大部分基本上都答上来了,也没第一时间挂,所以想着面委会1面应该是过了,但是没想到还有面委会2面。面委2面地体验就没上一次那么好了,比较难受。自我介绍前30分钟大概是问实习经历,我上一段实习侧重中层和上层地业务开发,但是面试官一直在问我用到的各种组件的底层实现,很难顶,幸好之前实习的时候看过这些文档。然后是问一些设计题吧:kafka底层是如何实现的,怎样保证高并发(不清楚)zeromq底层是如何实现的,怎样保证高并发(说了一部分,这些都没看过。。。我更关注的主要是整体架构)常见的负载均衡算法然后是两道算法题(真的要做吐了🤮)第一道是输入一个由数字组成的字符串,打印所有字符串可以组成的ip地址第二道是输入一个整数a和整数b,计算a/b的结果,其中无限循环小数需要用括号括住循环节,如1/2=0.5,1/3=0.(3),1/6=0.1(6)反问:什么时候能出结果(答:不清楚,是不是最后一轮,之后还有没有也不清楚,具体去问hr)更新:10.20 hr面10.23 录用评估10.26 oc
点赞 239
评论 45
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务