字节跳动Java研发面试总结:2个星期,4轮面试,我终于拿到了offer

Posted Javachichi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节跳动Java研发面试总结:2个星期,4轮面试,我终于拿到了offer相关的知识,希望对你有一定的参考价值。

个人背景:

坐标背景,某211本科毕业生,计算机专业,前公司是某B站,辞职之后就重新规划了一下自己的职业方向,最终目标定在了字节,比较年轻化的一家互联网公司,近几年的发展速度也比较快,综合方面来说比较适合自己,所以就投了字节的简历,Java研发方向的,之后接到面试通知,总共耗时了2个星期,一共4轮面试,整个过程比较紧张,提心吊胆的,不过好在最后终于拿到了offer,所以特分享一下字节Java岗的面试经验。

6.12_.5_.1_.jpg

一面(50分钟左右,问题比较多)

网络:
交换机和路由器区别
TCP拥塞控制
TIME-WAIT和CLOSE-WAIT
项目:
Redis减库存怎么做的
QPS要是上万怎么办,Redis怎么抗?(我答的横向拓展,nginx限流。其实应该是想问Redis集群)
Nginx怎么限流(漏桶算法、配置burst参数)
分布式事务怎么处理? (简单说了二段提交、TCC)
TCC有系统挂了怎么办? (不会。后来查的:TCC框架会记录日志,不断重复执行)

数据库:
InnoDB和MySAIM区别
讲一下索引

算法:
在这里插入图片描述

二面(55分钟)

网络:
三次握手四次挥手全过程
TCP拥塞控制
输入url到打开页面全过程
Java:
Java里四种引用
对多态的理解,底层是怎么实现的?(动态绑定)
Jvm运行时数据区
Java的深浅拷贝(clone方法)
Hashtable和HashMap区别,说下HashMap结构

项目:
为什么要用Redis
Redis热key问题(没看过… 后来查的:本地HashMap缓存热key,或者搭建Redis集群)
Redis有哪些数据结构
String是怎么扩容的(不知道,后来查的:2倍扩容,超出1M后每次扩大1M)
Mybatis insert一个对象返回id怎么做的(不会… 扯到了为什么用Mybatis ,动态代理 )

算法:
(A,B)(A,C)(B,D)(D,A)判断是否有循环引用,提示用拓扑排序(尴尬,没看过,换了超简单的第二题做出来了)
蛇形打印二叉树

三面(45分钟)

主键索引查询和非主键索引查询区别
b+树好处
一致性哈希
说一下ConcurentHashMap
设计LRU
数组找是否存在和为M的两个数

四面(HR面,大约35分钟,主要是问个人职业规划、薪资待遇,以及对字节跳动的期许等等)

面试中的技巧

答不出来怎么办?

面试中有一些问题很难,但是不要放弃,要不断尝试。很多时候,面试官并不期待你能在很短的时候内解出一道难题,他只是想看一下你遇到难题时的态度和思维方式。如果你能证明给面试官看,你解决问题的方向和方法是正确的,就算是没有找到答案,也是很不错的。

尖锐问题

几个常见的比较尖锐的问题:

1、你为什么要离开现在的公司?

这种问题一般都是来问你的离职动机的,招聘方有理由相信,你是怎样离开前东家的,就会怎样离开我。如果你开始抱怨你现在的公司了,很可能会引出很多问题把你问到最后都抬不起头来。当然,你也可以说前公司的问题,比如︰自己主导的项目被公司废弃了、公司转型了、公司业绩下滑了、在现有的公司没有成长空间了…这些都是可以说的。

2、说一下你的缺点?

这个问题也是很难很难回答的。

其实任何性格的人都有问题,比如,对我来说,我个是比较着急的人,急性子,而且是个做事的人。所以,我最大的问题就是在推进一些事的时候,会忽略别人的感受。当压力变大的时候,我甚至会说出一些别人难以接受的话(俗话说的情商为零)。

但这个不是最佳方法,缺点一定要附带正面效果。比如,我对事情的要求太高了,跟我在一起工作人的压力太大。我太内向了,所以别人和我沟通起来有点费劲。我太过关心团队了,所以,有时候会忽略了项目成本和时间进度……

最后还要补一句,我知道我的缺点,我也在努力改正,我正在通过什么样的方式改正。这非常关键,因为这基本上是面试官最喜欢看到的答案了,就是你不仅能正视自己的缺点,而且还能不断地改正。

3、说一下你的优点?

这个问题是比较坑的,你的优点是需要用证据来说明的。

很多人的通用回答是,我的优点就是学习能力强,因为我掌握的技术面很广,而且,我什么样的技术都学,比如最新的Cloud Alibaba技术。还要回答这个问题的时候,一定要反衬出你的价值观,HR就是想了解你的价值观。比如,我比较踏实,我想把技术一直做到老。再比如,我有韧性,我受过哪些挫折、失败、不公、无奈和无助,我没有当逃兵…

4、你为什么换工作换得这么勤?

很多公司的HR都会对应聘者频繁换工作持比较负面的评价。频繁换工作在职业生涯中真不是一件好事,因为用人方会觉得要么是你太不踏实了,要么是你太不行了。所以,工作不要换得太频繁。但是如果换得太频繁了,我给你一个建议,在简历里面写上离职原因。

经验分享

如今技术发展的速度非常快,接下来你该从哪些地方开始自己的一个正确系统的学习方向呢? 给那些开发1到7年的Java朋友们:

说明:本文限于篇幅,故而只展示部分的文档截图,完整的Java学习文档秃头哥已经帮你整理好了,有需要的朋友文末有领取方式!

Java从入门到架构成长笔记目录

img

新手村—入门到开发半年(吃透12K+起步)

Java基础篇: 基础语法+集合+异常+反射+IO+TCP+多线程
Java web篇: mysql数据库+JDBC+Servlet
三大框架篇: Spring+SpringMVC+MyBatis+商城实战项目
SpringBoot+SpringCloud分布式开发篇: 微服务入门+实战
项目经验篇: 秒杀系统设计+SpringBoot商城实战

Java基础篇

img

三大框架篇

img

项目经验篇(秒杀+SpringBoot实战)

img

打怪升级第一步—开发1到3年

Java并发编程底层篇: 并发基础+JMM+线程池+阻塞队列+并发集合+并发工具类+锁+atomic
JVM与性能调优篇: 内存区域+垃圾回收器和内存分配策略+类加载机制+调优
网络编程篇: TCP/HTTP+Netty+多路复用
SQL调优篇: SQL优化原则+锁+索引+调优+事务+执行计划
Tomcat底层篇: 架构+基础+调优+集群+安全
设计模式篇: 六大原则+23种设计模式
Spring源码篇: IOC+AOP+声明事务源码解读
MyBatis源码篇: MyBaits源码架构分析+MyBaits核心模块分析+二级缓存

并发编程篇

img

JVM及调优篇

img

网络编程篇

img

MySQL调优篇

img

设计模式篇

img

Spring源码篇

img

MyBatis源码篇

img

打怪升级第二步:4-5年资深高开

img

分布式思维基础: 大型互联网架构演进过程+架构师应具备的分布式知识+主流分布式架构设计详解
分布式监控: Zookeeper+Nginx
分布式消息队列: RabbitMQ+RocketMQ+Kafka
分布式存储: Redis+MongDB+Mycat

分布式监控

img

消息队列

img

分布式存储

img

打怪升级第三步:5到7年架构进阶

微服务架构进阶: Docker+SpringCloud+Spring Cloud Alibaba+K8S
亿级流量性能调优实战: 调优基础+基础代码性能优化+设计模式与性能+并发编程性能优化+JVM深度调优+数据库性能调优
一线大厂分布式场景实战: 分布式事务解决方案+一线大厂单点登陆方案+分布式任务调度方案+高并发场景下分布锁方案+缓存解决方案

性能调优实战笔记

img

大厂分布式场景实战笔记

img
由于篇幅原因,就不做一 一展示了!这份笔记已准备了在线版和离线版!!

需要以上全部笔记的小伙伴,可以一键三连,下方获取免费领取方式!
在这里插入图片描述

以上是关于字节跳动Java研发面试总结:2个星期,4轮面试,我终于拿到了offer的主要内容,如果未能解决你的问题,请参考以下文章

字节跳动面试总结(2019年8月)

面试4轮字节Java研发岗,最终拿下Offer(原题复盘)

2022暑期实习字节跳动数据研发面试经历

2022暑期实习字节跳动数据研发面试经历

Android面试:字节飞书5轮面试Android Framework层的源码就问了4轮!

字节跳动2022年最新面试经验分享,2个部门6轮面试全复盘(算法岗)