投了被基础研发平台捞了,还以为做的是c++,一开始还挺开心。结果面试官上来就说他们这边做JAVA的,我从cpp跟他们不符合,直接蚌埠住了。寻思着来都来了,就说自己可以转,由此开始了一个多小时的拷打过程。
由于面试官不会c++,我不会java,因此唯一的共同点就是计网。面试官摁着我的计网问,项目重点全在问网络,我网络又不是很熟,所以寄中寄。面试官说它不是很懂C++方法,只能一点点从底层解释上去。
开篇照例拷打项目:
RPC框架怎么实现的
RPC中传输一条消息是什么样的过程
你知道ZooKeeper吗?
为什么用的raft不用ZooKeeper?
raft里会有脑裂吗?redis脑裂怎么处理?
可以讲一讲raft的选举过程和zookeeper有什么区别吗?
KVDB为什么用跳表?
据我所知只有redis在用跳表。跳表和其他数据结构有什么有点?
为什么redis用跳表,mysql用b+树?
那为什么b+树这么多优点,为什么redis不用? (我麻了)
一条http消息进入你的服务器是如何处理的?
有没有做负载均衡?
了解过路由算法吗?
你是如何在你的服务端实现这一套tcp连接和传输的流程的?
四次挥手为什么是四次不是三次?
三次握手为啥不是两次?不是四次?
(省略n个tcp相关八股和实现问题)
tcp拥塞控制了解过吗?
如何实现流量控制?
开始撕算法。
一道括号运算,面试官让我不要用定义好的栈,我就用了vector实现。结果半路面试官以为vector是栈,又提醒我几遍自己实现,我懵了好一会才跟他解释出来vector是数组,stack是栈。最后没撕出来(太慌了),他也看不懂代码,也没法说哪错了,只能说个思想过了。
一个阻塞队列,用了个互斥锁和条件变量,撕出来了,over.
反问:
我也蚌埠住了,问他那边除了java还有没有go的工作,他说只有java。说完俩人就对着傻笑。笑完了就结束了xD.
面试官挺不错的,很可爱,会引导回答问题,可惜真的是他不懂我我不懂他。一点C++和分布式的八股没问,全是tcp八股。哎,怎么找个实习都这么难找。
#美团#