字节跳动秋招回顾:后端开发工程师的面试经验分享

发表时间: 2019-10-12 11:30

本来对字节不抱太大希望,毕竟后台竞争太大,而且字节招客户端开发比较多。

后来抱着试一试的心态投了,然而几天过去毫无反应,20天后突然告诉我进行面试~

一面(纯技术面)

  1. 队列的实现,需要注意的地方
  2. 快速排序的实现、时间复杂度分析
  3. B树和B+树的区别、应用
  4. HashMap的实现,扩容机制,扩容时如何保证可操作
  5. Redis扩容机制(渐进式单线程扩容)
  6. Spring AOP的原理
  7. Spring IoC的原理,如何实现,如何解决循环依赖
  8. 两线程对变量i进行加1操作,结果如何,为什么,怎么解决
  9. CAS概念、原子类实现原理
  10. synchronize底层实现,如何实现Lock
  11. AQS有什么特点
  12. 可见性的底层原理
  13. JVM内存模型,为什么要这么分
  14. 本地方法栈和虚拟机栈的区别
  15. 如何查看JVM参数是否正确
  16. TCP三次握手,如何实现
  17. Socket编程底层如何实现
  18. select和epoll的区别
  19. 算法:蛇形打印二叉树

二面(项目面+技术面)

  1. 项目详聊(问了很多、很细)
  2. Innodb多列索引
  3. MySQL默认事务隔离级别,不可重复读是什么意思,如何实现可重复读
  4. Redis服务端有20GB内存,现在要缓存200GB数据,如何处理
  5. 算法:给出[[1, 2], [3, 5], [8, 8], [15, 16], [32, 38]],求间隔
  6. 什么是堆,画了个二叉树问是否符合最小堆的结构,然后根据图叙述堆排序的详细过程。
  7. TCP与UDP的区别,还有哪些其他的传输层协议,用来做什么的。
  8. 进程与线程的区别,你是怎么理解这两个概念的(快被问烂了的问题……)
  9. Volatile关键字干什么用的和底层原理,CAS干什么用的以及原理。
  10. 原子类的功能,实现原理。
  11. 手撕代码:Leetcode原题. 最长公共子串。
  12. 最后补了个redis的数据结构,跳表怎么实现的,有什么用,哪些指令相关。

三面(综合面)

  1. 自我介绍
  2. 谈谈Java垃圾回收机制
  3. 算法:给出两个升序数组A、B和长度m、n,求第k个大的数
  4. 算法:给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素
  5. 团队工作中如果有一个人没有完成 如何对上级交付
  6. 说说你的职业规划
  7. 生活工作如何平衡
  8. 现在有哪些offer了
  9. 最近有在学什么,分享一下

总结

总共三面,没一面都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学习的书籍资料

篇幅有限,这里就不一一展示了,有需要的朋友私信【资料】按照回复操作即可免费领取~