从21年八月份开始,经历了一次一面挂,一次二面挂,两次三面挂,这次终于成功上岸字节跳动飞书人力套件,面经如下:

字节教育(一面以后第二天字节宣布解散教育,但是还是撑到了三面)

  1. TreeMap讲一下
  2. 时间轮是怎么实现的
  3. git中ignore是干嘛的
  4. git merge gitrebase的区别
  5. 什么对象可以作为GCroot
  6. JVM的垃圾回收算法
  7. URL的编码方式
  8. HTTPS
  9. 若钓鱼网站伪造了证书应该如何处理
  10. DNS解析过程,DNS劫持
  11. ARP介绍
  12. 写题:向有序链表中插入节点

二面:

  1. 进程间通信方式
  2. select poll epoll
  3. G1的原理
  4. 深拷贝,浅拷贝
  5. HashMap
  6. 写题:缺失的第一个正数

三面:

  1. 写题:二叉树最近公共祖先
  2. B+树如何实现更新的
  3. 内存池
  4. Redis的String类型的数据结构

挂了。。。

抖音音乐(一面挂)

  1. 面向对象三大特征
  2. 操作系统的内存对齐,为什么要这么做
  3. 堆和栈存储什么的
  4. 虚拟内存,为什么要用虚拟内存,用虚拟内存的好处
  5. 快排最坏的情况,如何优化快排
  6. 写题:中文转阿拉伯数字

商业化技术(三面挂,面经就一二面的,三面找不到了)

一面:

  1. 如果现在要写一个服务,要连接数据库的话,如果你的前台请求,比如说是电商,请求比较大的话,那么服务的qps扛不住,要怎么优化。
  2. Rocketmq是如何在消费端进行限流的 深拷贝、浅拷贝

二面:

  1. 死锁的条件以及如何避免死锁
  2. 针对于我们在项目开发过程中当想从MySQL中删除数据的话,应该怎么做 继承和抽象的概念 Static修饰不同的地方的含义 Spring注解,比如说NotNull的注解有什么用吗(被注释的元素不能为null) 写题:单词搜索
  3. 基础架构

(二面挂)

一面:

  1. 设计相关的,Redis是一个内存性数据库,可以理解为是一个hashMap,假如说用任何语言写一个k-v的数据库,需要在基础之上为其生成快照,应该怎么设计。
  2. spring控制反转和面向切面的编程,描述一下是什么以及有什么用。
  3. 断点续传怎么实现?
  4. 乱序的逻辑,把一个数组打乱,需要自己实现一个shuffle,有一个随机数生成器。
  5. 为什么会出现泛型
  6. 写题:二叉树的右视图

二面: 介绍一下实习的项目

  1. 怎么在mq中加幂等性校验
  2. 有没有其他的实现方式。为啥不用Java中的delayQueue呢
  3. 延迟消息,除了放到消息队列里面,还有其他的方案嘛
  4. 用一个延迟队列做,有什么问题嘛?怎么解决呢?
  5. rocketmq的特点是什么,有那么多mq,跟kafka比有什么优势嘛
  6. 延迟消息的数量大概是什么样的呢?
  7. 你怎么知道线上的代码是正确的呢?
  8. HTTP请求的状态码的含义,502和504有什么区别?
  9. restfulApi有听说过嘛,设计接口的话,会符合什么规范嘛?

虚拟内存 飞书(这次三面终于过了)

一面:

  1. 哈啰实习的项目,介绍一个最熟悉的以及最有挑战性的项目
  2. 延迟消息的改造,延迟多久呀这个消息
  3. rocketmq如何实现任意时间的延迟消息的
  4. 消息在发送成功后会写redis,如果redis中没有拿到key的话,是怎么处理的
  5. 发完消息以后写redis失败的话,应该怎么处理,网络上的延迟导致redis写失败了应该怎么处理
  6. 重复消费怎么处理
  7. 消息的量有多大呢
  8. 编码风格的规范
  9. stream这块怎么debug哪里有异常呢
  10. 线程池里面有哪些核心参数
  11. 生产者消费者
  12. 平常都用spring开发是嘛
  13. springAOP的原理是什么,到代码细节这一块。
  14. 数据库,MySQL的索引,平常建索引的时候应该注意一些什么
  15. 啥时候会走错索引
  16. sql的题目,学生选课,LC单词拆分,生产者-消费者模型

二面:

  1. 对Linux系统的内存如何管理是否了解,进程当中看到的都是连续的虚拟地址空间,这个虚拟地址是如何跟计算机上的物理地址是如何映射的。
  2. 页式管理具体的机制是什么? 进程从诞生到结束的整个生命周期 就绪态什么时候运行,是如何进行调度的 进程所使用的资源是什么时候回收 分析一个输入URL到显示页面的过程,涉及到哪些协议 HTTP请求行请求头 HTTPS协议是如何保证传输数据的安全的 那我们写个sql吧 判断平衡二叉树 最短无序连续子序列 三面:
  3. 觉得研发流程哪个环节最重要
  4. 代码规范,开发语言是什么,在Java8里面哪些规范是必须遵守的。
  5. 代码量多少
  6. 上线的话,现在线上的Java服务,JVM有哪些配置,配一些什么样的参数
  7. 并发控制的话,在Java.util.concurrent包里面有哪些工具
  8. 能够实现复杂控制的并发控制的工具有了解嘛(不了解)
  9. countDownLatch是什么(面试官说,你是背下来的嘛,没关系)
  10. MySQL用过吗,innodb引擎来实现事务的隔离级别有哪些
  11. 可重复读能解决幻读的问题嘛(说了当前读和快照读的情况)
  12. 你说换一个项目吧,从软件设计架构来讲一下
  13. 项目的难点是什么
  14. 有多大海量啊
  15. 消息量没有体现出来你的架构思想。
  16. 你能再谈谈假如说你现在面临一个挑战,消息规模增加1000倍,你C端的客户增加100倍,这个架构你觉得有哪些优化的地方可以做技术架构的升级,假设你是这个项目的总负责人(PS:我不是,所以说不会doge)
  17. 这个系统哪些点需要被监控起来
  18. 比如说端到端的成功率,失败了要不要重试,某个组间挂了,有没有容灾补偿方式(都不会doge)
  19. 你们用的Redis的持久化方案有哪些
  20. 如果在线上搭一个Redis cluster,RDB是一定要开启,还是可以不开启
  21. Redis中加一个节点的话,怎么复制啊
  22. 主从复制(答到了全量复制,面试官说,那回到之前的问题,RDB需不需要开启,面试官说学知识不要那么僵硬,要灵活起来)
  23. 面试官说你记忆的东西还可以,要消化吃透
  24. 设计模式,说一下你用过的设计模式
  25. 写题:二叉树从根节点到叶子节点和为某一值的路径

后来HR通知我过了,给了口头offer,说过两天会联系我走一下后面的流程

虽然过程有些曲折,但是结果还是好的,自己的努力也没有辜负

最后给大家分享一下我的学习笔记,我能有这么好的结果,这份笔记也有一部分原因

有需要的小伙伴,可以管住公主号:JavaAC,即可