字节跳动Java研发面试总结:2个星期,4轮面试,我终于拿到了offer
Posted Javachichi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节跳动Java研发面试总结:2个星期,4轮面试,我终于拿到了offer相关的知识,希望对你有一定的参考价值。
个人背景:
坐标背景,某211本科毕业生,计算机专业,前公司是某B站,辞职之后就重新规划了一下自己的职业方向,最终目标定在了字节,比较年轻化的一家互联网公司,近几年的发展速度也比较快,综合方面来说比较适合自己,所以就投了字节的简历,Java研发方向的,之后接到面试通知,总共耗时了2个星期,一共4轮面试,整个过程比较紧张,提心吊胆的,不过好在最后终于拿到了offer,所以特分享一下字节Java岗的面试经验。
一面(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从入门到架构成长笔记目录
新手村—入门到开发半年(吃透12K+起步)
Java基础篇: 基础语法+集合+异常+反射+IO+TCP+多线程
Java web篇: mysql数据库+JDBC+Servlet
三大框架篇: Spring+SpringMVC+MyBatis+商城实战项目
SpringBoot+SpringCloud分布式开发篇: 微服务入门+实战
项目经验篇: 秒杀系统设计+SpringBoot商城实战
Java基础篇
三大框架篇
项目经验篇(秒杀+SpringBoot实战)
打怪升级第一步—开发1到3年
Java并发编程底层篇: 并发基础+JMM+线程池+阻塞队列+并发集合+并发工具类+锁+atomic
JVM与性能调优篇: 内存区域+垃圾回收器和内存分配策略+类加载机制+调优
网络编程篇: TCP/HTTP+Netty+多路复用
SQL调优篇: SQL优化原则+锁+索引+调优+事务+执行计划
Tomcat底层篇: 架构+基础+调优+集群+安全
设计模式篇: 六大原则+23种设计模式
Spring源码篇: IOC+AOP+声明事务源码解读
MyBatis源码篇: MyBaits源码架构分析+MyBaits核心模块分析+二级缓存
并发编程篇
JVM及调优篇
网络编程篇
MySQL调优篇
设计模式篇
Spring源码篇
MyBatis源码篇
打怪升级第二步:4-5年资深高开
分布式思维基础: 大型互联网架构演进过程+架构师应具备的分布式知识+主流分布式架构设计详解
分布式监控: Zookeeper+Nginx
分布式消息队列: RabbitMQ+RocketMQ+Kafka
分布式存储: Redis+MongDB+Mycat
分布式监控
消息队列
分布式存储
打怪升级第三步:5到7年架构进阶
微服务架构进阶: Docker+SpringCloud+Spring Cloud Alibaba+K8S
亿级流量性能调优实战: 调优基础+基础代码性能优化+设计模式与性能+并发编程性能优化+JVM深度调优+数据库性能调优
一线大厂分布式场景实战: 分布式事务解决方案+一线大厂单点登陆方案+分布式任务调度方案+高并发场景下分布锁方案+缓存解决方案
性能调优实战笔记
大厂分布式场景实战笔记
由于篇幅原因,就不做一 一展示了!这份笔记已准备了在线版和离线版!!
需要以上全部笔记的小伙伴,可以一键三连,下方获取免费领取方式!
以上是关于字节跳动Java研发面试总结:2个星期,4轮面试,我终于拿到了offer的主要内容,如果未能解决你的问题,请参考以下文章