美团二面 3.26 更新:3.28 晚 OC
1h10min
1.自我介绍
2.问我比赛相关
3.问我项目是自己做的还是给研究所做的,有几个模块
4.我看你项目里用到的自定义的 rpc 框架,你能讲讲为什么不用 grpc 吗(这里扯皮扯了好久)
5.grpc 用的人这么多,说明兼容性,可用性这么高,为啥还要自己写一个(主要是自己想学习 rpc,从底层理解,但是面试官想要知道在项目里为什么不用 gprc,自己开发不是有很多不稳定性,兼容性的验证,裂开)
6.rpc 框架消息格式的变化会不会引起 rpc 框架内部一些调用的变化
7.对于序列化反序列化你认为是属于 rpc 框架的应用层还是传输层(这里我最开始回答网络结构里的应用层,但是面试官想要知道针对 RPC 框架你认为在什么层,然后我就回答传输,因为 rpc 思想的本质是隐藏网络方法调用的细节,序列化反序列化属于用户不可见)
8.然后又回到了问题 4.。。。。。。上面几个问题引出了你没有必要自己写 rpc,为啥还要自己写(摊牌了,为了学习分布式自己加的)
9.NIO 为什么快(这里我讲了多路复用和Netty 的两个线程池,然后面试官一直在让我想想有没有更底层的让他更快,思考了一会儿想起来了零拷贝,感觉这要是没回答上来就寄了)
10.TCP 沾包怎么解决的(我回答了设置消息长度字段,他问除了这个还有没有,我想不起来了就回答无)
11.Zookeeper是 CAP 的啥呀(面了这么久第一次见问 ZK 的有点吃惊)
12.怎么实现强一致性的
13.ZK 有哪几种节点类型,实现分布式锁的时候要注意什么
14.ZK 怎么选主的(我就很简单的回答了一下选择最大事务 id 的节点为主)
15.你知道 ZK 的选主算法叫啥吗(不知道)那你还知道其他的选主算法吗(本来想回答 Redis,但是脑子一片空白,自己没看 Redis 怎么选主的,就回答不知道)
16.你是用 websocket 建立客户端与服务端的连接,你是用了什么方式去保持和维护这个连接
17.我看你用到了 RocketMQ,你讲讲怎么用的,遇到了什么问题(结合项目分析了消息重复和顺序消费我怎么解决的)
18.你怎么学习新技术的
19.有看过那些经典的学习资料,这种学习资料哪来的
20.你刚刚有说 Github 和书籍,那你能说几个印象不错的项目和书吗(幸好我简历里有一个项目就是 Github 的改版)
到这里 58min
手撕 一个字符串,有大写小写和非法字符,所有大写转小写删除非法字符并按照 abc 顺序输出,要求O(n)
反问