字节正式批面经分享
之前提前批挂了,被捞去正式批,不过正式批一面就给我开头棒喝,问的问题我都答得不好。。。把问题给UU们分享一下,看看UU们对这些问题有没有什么思路
虽然接到了二面通知,不过一面就这么难了,二面好紧张。。。
一面9.7
1.对netty框架的了解,大概说说?(对channel的理解有问题)
2.NIO对BIO的优势?
3.如果只处理一个消息,NIO对比BIO有优势吗?
通常来说,对于单一请求,BIO可能看起来更简单,因为它是阻塞的,代码直观简单。但是,NIO在处理并发请求时更具优势,尤其是大量长连接。
4.使用十个线程调用10个请求,和用一个NIO的events来处理这10个请求,区别是什么呢?
5.Netty类有好几种线程,有哪几类呢?
6.accept中有多少个线程?
7.Netty中(或者reactor中),accept线程和负责读写的线程是如何交互的?(比如accept线程有1个,处理读写的线程有5个)
8.举例:一个accepter中有五个IO线程有一个FD,这个FD是扔到IO线程中读写吗,accpet怎么选择哪个读写线程去进行对应的FD操作?
10.核心,acceptor和IO线程的关系是什么?
11.ZK相关,客户端怎么用ZK,ZK虽然有更新机制,客户端怎么响应ZK的更新
12.就是client不要每次访问zk,zk有什么把信息保存到客户端,让客户暖直接读这个信息的策略,ZK持久化
13.ZK的更新(信息到客户端的)的操作是怎么进行的,你怎么去跟本地它也要更新,然后你请求级别要去读对吧?中间交互是怎样做的?
14.可不可以使用异步通知,由ZK来进行推送?客户端拉好还是zk推好(后者)
15.序列化,为什么用kryo(面试官真的很想问pb)
16.client发起调用,延迟100ms,server中查看发现业务耗时只有50ms,其中gap有50ms,这符合预期吗
17.如何排查这50ms到底花在哪了,或者50ms来自什么原因(用trace)
18.手撕:写个copyonWrite吧(看不懂C++)那换个权重负载均衡吧
#字节##字节跳动##面试##面经#