本来对字节不抱太大希望,毕竟后台竞争太大,而且字节招客户端开发比较多。
后来抱着试一试的心态投了,然而几天过去毫无反应,20天后突然告诉我进行面试~
一面(纯技术面)
- 队列的实现,需要注意的地方
- 快速排序的实现、时间复杂度分析
- B树和B+树的区别、应用
- HashMap的实现,扩容机制,扩容时如何保证可操作
- Redis扩容机制(渐进式单线程扩容)
- Spring AOP的原理
- Spring IoC的原理,如何实现,如何解决循环依赖
- 两线程对变量i进行加1操作,结果如何,为什么,怎么解决
- CAS概念、原子类实现原理
- synchronize底层实现,如何实现Lock
- AQS有什么特点
- 可见性的底层原理
- JVM内存模型,为什么要这么分
- 本地方法栈和虚拟机栈的区别
- 如何查看JVM参数是否正确
- TCP三次握手,如何实现
- Socket编程底层如何实现
- select和epoll的区别
- 算法:蛇形打印二叉树
二面(项目面+技术面)
- 项目详聊(问了很多、很细)
- Innodb多列索引
- MySQL默认事务隔离级别,不可重复读是什么意思,如何实现可重复读
- Redis服务端有20GB内存,现在要缓存200GB数据,如何处理
- 算法:给出[[1, 2], [3, 5], [8, 8], [15, 16], [32, 38]],求间隔
- 什么是堆,画了个二叉树问是否符合最小堆的结构,然后根据图叙述堆排序的详细过程。
- TCP与UDP的区别,还有哪些其他的传输层协议,用来做什么的。
- 进程与线程的区别,你是怎么理解这两个概念的(快被问烂了的问题……)
- Volatile关键字干什么用的和底层原理,CAS干什么用的以及原理。
- 原子类的功能,实现原理。
- 手撕代码:Leetcode原题. 最长公共子串。
- 最后补了个redis的数据结构,跳表怎么实现的,有什么用,哪些指令相关。
三面(综合面)
- 自我介绍
- 谈谈Java垃圾回收机制
- 算法:给出两个升序数组A、B和长度m、n,求第k个大的数
- 算法:给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素
- 团队工作中如果有一个人没有完成 如何对上级交付
- 说说你的职业规划
- 生活工作如何平衡
- 现在有哪些offer了
- 最近有在学什么,分享一下
总结
总共三面,没一面都1个小时以上,1面是技术面,问得广又问得深且喜欢问实现和原理;2面项目面,主要是项目和架构;3面综合面,猜测是考察对知识的整体认知和对自己的学习方法、未来规划的认识。当然3轮面试都少不了的手撕代码(三面的算法题差点炸了)
另外,1面有些问得深答不出来,当时面试官问得老多了,一点停下来的感觉都没有。
最后,分享一波我在复习过程中刷的题(含详细答案解析)和一些学习资料,都已整理成PDF文档或者Word文档,有需要的朋友可以转发+私信关键词【资料】免费领取~
(1)最新java架构专题系列面试真题+解析(包含Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分布式、高并发、性能调优、微服务...)
(2)最新大厂面试真题+解析(百度,华为,腾讯,网易,迅雷...)
(3)Java学习的书籍资料
篇幅有限,这里就不一一展示了,有需要的朋友私信【资料】按照回复操作即可免费领取~