字节一面后端凉经,反问环节直接喊我去投其他岗了
项目相关:1.为什么要用SOFA-Bolt?
详细讲一下RocksDB的原理,它的底层框架是什么,它的优势是什么?据我了解,RocksDB也是把数据存在内存,在你的场景下为什么不用redis?
你所知道的常见的KV存储有哪些,他们各自的优势与劣势有哪些,为什么你要自己设计这样的分布式KV存储?
2.如何实现动态代理屏蔽RPC调用细节?
为什么要选择Kryo做序列化?
为什么要设计Json和Kryo混合的序列化,你说你的目的是标识不同通道和设备信息,这些可以被写入数据包,混用两种序列化方式不会效率更低吗,似乎没有意义。
你用过哪些负载均衡的方法,你觉得基于一致性的Hash负载均衡比其他负载均衡的优势是什么?
你提到了你使用了多台服务器,如果其中一个挂掉,你的RPC框架是如何实现弥补的?(答了个主从复制,相互之间RDB或者AOF存副本,被质疑服务器框架不涉及主从复制)
八股:
1.你是如何进行JVM排查与调优的,用的哪些工具,关注了哪些可调节的参数。
2.内存垃圾回收器你了解哪些(我就答了个G1,ZGC,串行),他们的区别是什么并阐述具体几类垃圾回收器的原理和运行流程,以及对应的垃圾收集算法和他们的优势与局限性(标注清除啊,复制啊之类的)。
3.JAVA集合你了解吗,有哪些,他们的特性是什么?
Hashmap的本质是什么,什么时候会树化,它是线程安全的吗,如果是不安全的,从它本质的数据结构解释问什么不安全。有没有hash相关线程安全的集合,他是如何实现线程安全的?
4.线程池是如何创建的,你创建的时候用了哪些参数,如何解释这些参数,如何动态修改这些参数?
线程池不同状态的转移,以及在你的开发中如何使用线程池?
为什么会使用线程池,和直接分别创建线程的优势有哪些?(答了个核心是复用线程)
5.手撕,反转链表,每K个子链表反转。
不难,单纯我菜,时间内没A出来。吐槽一下,给的示例代码里不是和力扣一样有创建好的链表,得自己先写一个链表框架,我在这一步都卡了好久,下次链表二叉树也得记一下标准模板了。
总结:虽然预料到可能要被爆问压力,但是还是准备得不够,特别是项目里很多技术细节没有掌握和实操去深化,反问的时候直接喊我去投别的岗了。宇宙厂还是太狠了,面试官技术储备很扎实,好好总结准备其他厂吧。