字节跳动
一面
1.自我介绍
2.项目难点,如何解决的
3.redis:底层数据结构,过期策略,持久化方式及区别
4.kafka:如何保证消息持久性,如何确保消息不丢失,消息同步机制
5.zk如何选主(zab),一个写请求如何执行的,选举为什么要过半
6.java魔数是啥(这个不会。。。)
7.算法题
实现该方法,15分钟
public void printComposite(int[] array, int n) {…}
//给定一个array={1,2,3,4,5}
//当n=2, 输出[1,2],[1,3],[2,3]…
//当n=3, 输出[1,2,3],[1,2,4],[2,3,4]…
二面
1.自我介绍
2.java:aqs是如何实现的,synchronized如何实现的,这俩有啥区别,cas是啥
3.线程池有用过吗,讲下线程池是怎么实现的
4.其他问题忘了…
5.mysql锁机制
在Innodb,RR隔离级别下:
SELECT * FROM users WHERE name = ‘zhangsan’;
给name字段加不同的索引,有什么区别(锁)
case:
(1).唯一索引
(2).普通索引
(3).不创建索引
6.编程题:实现blockingqueue的put和get方法
三面
1.自我介绍,项目介绍,讲一个自己发现问题并解决的经历,聊业务
2.spring-bean是如何加载的,如何解决循环依赖
3.假如希望做一个集群限流器,怎么做,我答可以用redis,实现一个滑动窗口。再追问具体如何实现
4.其他问题忘了…
5.算法题,二叉树最远距离
定义:二叉树节点间距离指的是连接两个节点的边的个数,例如:下图中节点 S 和节点 E 的距离是3.
问题:对于一棵任意形状的二叉树,求二叉树中距离最远的两个节点的距离值。
示例:下面这棵树中最远距离是6 (节点S和H 或S和K 等).
A
/ \
B C
/ \ / \
D E F J
/ \ / \
S T H K
6.业务程序设计题
给了一个业务场景,大体意思是让设计一个异步导出excel的功能,如果有多个任务,如何平均分配到不同节点上
如果有大任务和小任务,希望小任务优先执行,如何设计
HR面
自我介绍,对公司面试的评价,实习时间
为什么转专业?
你认为你有什么优点?有什么缺点?有什么兴趣爱好?
在团队中习惯充当什么样的角色 遇到过比较困难的事情是什么?觉得自己很幸运的事情是什么?
对于未来的规划?有没有使用过公司的其他产品?有没有转正想法?
总结:
只有不断学习才能进步,机会是留给有准备的人!!我深知这个道理,所以年前也没闲着,在家狠狠地复习了一下!
这次能够拿到头条的offer也是多亏了这一个多月的复习,学到了不少的知识点,也劳心汇集了不少的资料文献,非常有帮助,欢迎您来和我一起学习,咱们共同进步
复习资料包括JVM、Spring、Redis、kafka、MySQL、数据库、并发编程、数据结构与算法等一系列Java学习资料。
Java企业面试真题合集:
Java核心复习点复习资料: