从21年八月份开始,经历了一次一面挂,一次二面挂,两次三面挂,这次终于成功上岸字节跳动飞书人力套件,面经如下:
字节教育(一面以后第二天字节宣布解散教育,但是还是撑到了三面)
- TreeMap讲一下
- 时间轮是怎么实现的
- git中ignore是干嘛的
- git merge gitrebase的区别
- 什么对象可以作为GCroot
- JVM的垃圾回收算法
- URL的编码方式
- HTTPS
- 若钓鱼网站伪造了证书应该如何处理
- DNS解析过程,DNS劫持
- ARP介绍
- 写题:向有序链表中插入节点
二面:
- 进程间通信方式
- select poll epoll
- G1的原理
- 深拷贝,浅拷贝
- HashMap
- 写题:缺失的第一个正数
三面:
- 写题:二叉树最近公共祖先
- B+树如何实现更新的
- 内存池
- Redis的String类型的数据结构
挂了。。。
抖音音乐(一面挂)
- 面向对象三大特征
- 操作系统的内存对齐,为什么要这么做
- 堆和栈存储什么的
- 虚拟内存,为什么要用虚拟内存,用虚拟内存的好处
- 快排最坏的情况,如何优化快排
- 写题:中文转阿拉伯数字
商业化技术(三面挂,面经就一二面的,三面找不到了)
一面:
- 如果现在要写一个服务,要连接数据库的话,如果你的前台请求,比如说是电商,请求比较大的话,那么服务的qps扛不住,要怎么优化。
- Rocketmq是如何在消费端进行限流的 深拷贝、浅拷贝
二面:
- 死锁的条件以及如何避免死锁
- 针对于我们在项目开发过程中当想从MySQL中删除数据的话,应该怎么做 继承和抽象的概念 Static修饰不同的地方的含义 Spring注解,比如说NotNull的注解有什么用吗(被注释的元素不能为null) 写题:单词搜索
- 基础架构
(二面挂)
一面:
- 设计相关的,Redis是一个内存性数据库,可以理解为是一个hashMap,假如说用任何语言写一个k-v的数据库,需要在基础之上为其生成快照,应该怎么设计。
- spring控制反转和面向切面的编程,描述一下是什么以及有什么用。
- 断点续传怎么实现?
- 乱序的逻辑,把一个数组打乱,需要自己实现一个shuffle,有一个随机数生成器。
- 为什么会出现泛型
- 写题:二叉树的右视图
二面: 介绍一下实习的项目
- 怎么在mq中加幂等性校验
- 有没有其他的实现方式。为啥不用Java中的delayQueue呢
- 延迟消息,除了放到消息队列里面,还有其他的方案嘛
- 用一个延迟队列做,有什么问题嘛?怎么解决呢?
- rocketmq的特点是什么,有那么多mq,跟kafka比有什么优势嘛
- 延迟消息的数量大概是什么样的呢?
- 你怎么知道线上的代码是正确的呢?
- HTTP请求的状态码的含义,502和504有什么区别?
- restfulApi有听说过嘛,设计接口的话,会符合什么规范嘛?
虚拟内存 飞书(这次三面终于过了)
一面:
- 哈啰实习的项目,介绍一个最熟悉的以及最有挑战性的项目
- 延迟消息的改造,延迟多久呀这个消息
- rocketmq如何实现任意时间的延迟消息的
- 消息在发送成功后会写redis,如果redis中没有拿到key的话,是怎么处理的
- 发完消息以后写redis失败的话,应该怎么处理,网络上的延迟导致redis写失败了应该怎么处理
- 重复消费怎么处理
- 消息的量有多大呢
- 编码风格的规范
- stream这块怎么debug哪里有异常呢
- 线程池里面有哪些核心参数
- 生产者消费者
- 平常都用spring开发是嘛
- springAOP的原理是什么,到代码细节这一块。
- 数据库,MySQL的索引,平常建索引的时候应该注意一些什么
- 啥时候会走错索引
- sql的题目,学生选课,LC单词拆分,生产者-消费者模型
二面:
- 对Linux系统的内存如何管理是否了解,进程当中看到的都是连续的虚拟地址空间,这个虚拟地址是如何跟计算机上的物理地址是如何映射的。
- 页式管理具体的机制是什么? 进程从诞生到结束的整个生命周期 就绪态什么时候运行,是如何进行调度的 进程所使用的资源是什么时候回收 分析一个输入URL到显示页面的过程,涉及到哪些协议 HTTP请求行请求头 HTTPS协议是如何保证传输数据的安全的 那我们写个sql吧 判断平衡二叉树 最短无序连续子序列 三面:
- 觉得研发流程哪个环节最重要
- 代码规范,开发语言是什么,在Java8里面哪些规范是必须遵守的。
- 代码量多少
- 上线的话,现在线上的Java服务,JVM有哪些配置,配一些什么样的参数
- 并发控制的话,在Java.util.concurrent包里面有哪些工具
- 能够实现复杂控制的并发控制的工具有了解嘛(不了解)
- countDownLatch是什么(面试官说,你是背下来的嘛,没关系)
- MySQL用过吗,innodb引擎来实现事务的隔离级别有哪些
- 可重复读能解决幻读的问题嘛(说了当前读和快照读的情况)
- 你说换一个项目吧,从软件设计架构来讲一下
- 项目的难点是什么
- 有多大海量啊
- 消息量没有体现出来你的架构思想。
- 你能再谈谈假如说你现在面临一个挑战,消息规模增加1000倍,你C端的客户增加100倍,这个架构你觉得有哪些优化的地方可以做技术架构的升级,假设你是这个项目的总负责人(PS:我不是,所以说不会doge)
- 这个系统哪些点需要被监控起来
- 比如说端到端的成功率,失败了要不要重试,某个组间挂了,有没有容灾补偿方式(都不会doge)
- 你们用的Redis的持久化方案有哪些
- 如果在线上搭一个Redis cluster,RDB是一定要开启,还是可以不开启
- Redis中加一个节点的话,怎么复制啊
- 主从复制(答到了全量复制,面试官说,那回到之前的问题,RDB需不需要开启,面试官说学知识不要那么僵硬,要灵活起来)
- 面试官说你记忆的东西还可以,要消化吃透
- 设计模式,说一下你用过的设计模式
- 写题:二叉树从根节点到叶子节点和为某一值的路径
后来HR通知我过了,给了口头offer,说过两天会联系我走一下后面的流程
虽然过程有些曲折,但是结果还是好的,自己的努力也没有辜负
最后给大家分享一下我的学习笔记,我能有这么好的结果,这份笔记也有一部分原因
有需要的小伙伴,可以管住公主号:JavaAC,即可