一面约面试:
原定约了一个大概一周左右之后的日期,但是自我感觉准备的非常不充分,简历上写的中间件,缓存,数据库等模块,但对于它们底层的原理都了解的非常不深入。感觉有点虚,于是延后了3天。三天以后还是没有掌握太好,于是又延后了一周。其他公司约面试大都是给个指定的时间,但是字节的面试约时间非常灵活,充分尊重面试者的意愿,点赞!不过要提个醒,如果在已经把知识掌握好的情况下,一定要尽早面试,越早越好,你懂的。
一面
在推迟两次面试之后,终于迎来了一面,感觉字节跳动的面试官非常友善,可能是由于公司文化吧,哈哈。
一面包括如下问题:
1、本地缓存应该如何实现?
2、怎样解决本地缓存的数据污染的问题?
3、Hadoop里的MapReduce的流程?(和简历相关)
4、怎样决定一个Key分到哪台Reduce机器上?(和简历相关)
5、Hive里的列存储原理?(和简历相关)
6、Java里的PriorityQueue是什么?
7、堆中插入一个元素的过程是什么?
8、出堆的过程是什么?
9、出堆的复杂度是多少?
10、讲一下log(n)?
11、Kafka为什么吞吐量那么高?
12、Kafka如何保证Exactly once?
13、Kafka的Producer如果一个消息没有发送成功怎么办?
14、MySQL索引是怎么实现的?
15、Hash和B+树有什么区别?
16、为什么MySQL会用B+树?
17、MySQL聚簇索引有什么好处?
18、Linux中怎样对一个文件排序?
19、Linux用过哪些命令?
20、ConcurrentHashMap和HashTable有什么区别?
21、讲一下自旋的过程?
22、手撕一个LRU链表。
一面过后,第二天中午打了电话,约3天后二面。
二面:
1、MySQL调优的思路是什么?
2、Change Buffer是什么?只有普通索引会用到吗?唯一索引会用吗?
3、最左匹配原则?对(a,b,c)建立了一个联合索引,那么查b会走上这个索引吗?
4、对score字段建了一个索引,那么查select id from where score > 50.0需要回表吗?
5、进程和线程的区别是什么?
6、进程通信的方式有哪些方式?
7、这些通信方式中最快的是哪种?
8、一个进程的多个线程之间有哪些东西是可以共享内存的?
9、DNS的用途是什么?
10、DNS解析的过程是什么样的?
11、DNS解析中迭代查询和递归查询的区别是什么?
13、DNS使用的是UDP还是TCP?
14、为什么使用UDP?它比TCP有哪些好处?
15、UDP除了可以避免握手之外,还有哪些好处?
16、你知道常见的DNS记录的格式吗?
17、Java中面向对象的三个基本特征?
18、知道Volatile吗?在什么场景下需要它?(回答CAS要用)
19、如果CAS不用volatile会怎么样?
20、volatile的缺点是什么?
手撕代码:1、Leetcode第328题奇偶链表
2、给两棵二叉树,判断第一棵可否通过若干次子节点上的镜像翻转变成第二棵?
二面过后,当晚打电话约了4天之后的三面。
三面
从一面到三面车速不停加快,越来越刺激。
1、问项目
三面的面试官问项目比较仔细,建议大家一定要对于项目中的各个模块以及组件选择原因有深刻的思考,不然很容易翻车的。比如我用到了Redis集群,面试官一直在质疑我的数据量不大为什么需要做集群,以及不停的追问Redis集群的配置的细节。
2、Kafka为什么吞吐量这么高?
3、Kafka的Producer往Broker上发消息是怎么实现的?
4、消息发到哪个Partition是怎么决定的?
5、Producer发送消息有几个流程?
6、Kafka动态扩容之后怎样让Producer知道?
7、MySQL做一个转账功能怎么实现?
8、你能详细讲一下事务执行的详细过程吗?
9、转账功能怎样保证不会发生线程安全问题?
10、怎样保证并发大的情况下一个账户的余额不会被减到负的?
11、Java要new一个对象会用到哪些内存?
12、java要int a = 1; 会用到哪些内存?
13、Interface和抽象类的区别?
14、什么场景下用Interface,什么场景下用抽象类?
场景题:
要实现一个定时任务,包括两个功能:注册一个任务以及它的过期时间,以及怎样实时的启动到期的任务。
版权归原作者 兔老大RabbitMQ 所有, 如有侵权,请联系我们删除。