vlambda博客
学习文章列表

大厂面试题 | 字节跳动Java工程师3轮面试汇总!


公司:字节跳动

岗位:Java开发工程师

(以下题目展示顺序非面试顺序)


一面

1. 爬楼梯 => 不允许到达7的倍数层 => 优化为线性(不能使用动态规划)

2. 数据库设计:文件的增加、删除、移动、列出子目录。设计一个表结构。

3. 浏览器请求一个域名,经历了什么。

4. DNS是基于什么协议,有没有基于HTTP的DNS协议。真tm有,晕了。

5. 什么是网关,网关的作用,限流的算法:固定/滑动窗口,消息队列,令牌桶。消息队列怎么限流,消费方如何返回给消息生产方。【同步的话就阻塞,等待返回;异步的话,可以从另一个topic里面取?(不确定)】

6. HTTP的方法,GET和POST的区别,HTTP状态码。502和504有什么区别。

7. HTTP如何保存用户状态。cookie

8. HTTPS 对称加密和非对称加密

9. HashMap是怎么添加元素的

10. TreeMap和HashMap的区别,这个TreeMap真的没用过啊。

11. 为什么TCP建立连接的时候少一次握手?

12. 有没有用过HTTP3.0.


二面

1.上来直接一道leetcode-hard,股票买卖III。(人懵了)昨天看过,但是没记住DP的递推公式。

2.Java中的 Map,HashMap和TreeMap的底层(红黑树),我说成了B+树。【红黑树适合内存中插入删除较多的场景,弱平衡二叉搜索树;B+树具有比较好的磁盘IO特性】

- 引申出了并发安全Map

- 乐观锁悲观锁怎么实现

- 底层怎么实现


3.TreeMap底层的数据结构,我说是B+树,由此引申出了InnoDB的存储引擎,以及为啥要使用B+树。

3.1 为啥不使用AVL或者红黑树

3.2 不考虑磁盘IO,B+树和AVL树的查询效率? O(MlogN)


4.Redis中用来做排行榜的数据结构(Zset)

4.1 底层是什么

4.2 zset为啥需要维护一个map

4.3 查询的时间复杂度是多少


5.画TCP的状态机

6.数据库表格的设计题。

7.反问。面试官说我基础挺好的,面试准备了挺久的吧。工程开发经验比较少,我说我是AI转开发的。


三面

大boss面,上来一通狂怼。

1. 问实习。(问得非常细,这块最好弄熟,不然很尴尬)

1.1 还聊了一堆家常。


2. 问对哪个语言比较熟悉,Java。

3. Java中==和equals的区别

为啥重写equals的时候要重写hashcode

如果不重写hashcode会出现什么问题。


4. Java中的类加载机制。

5. 为什么要使用双亲委派模型。


6. 写题:

6.1 使用rand3生成rand5,一直追问,怎么提升成功的概率,成功的概率是多少,极限是多少。

6.2 在数组中找出和为定值的两个数。优化了四次

6.2.1 使用HashMap

6.2.2 使用双循环

6.2.3 使用排序+双指针

6.2.4 手写排序


7.有啥要问的嘛?


-END-

大厂面试题 | 字节跳动Java工程师3轮面试汇总!


点击关注黑马程序员
获得更多实用干货
大厂面试题 | 字节跳动Java工程师3轮面试汇总!大厂面试题 | 字节跳动Java工程师3轮面试汇总!