字节抖音秋招提前批后端1,2,3面面经(已意向)
秋招在牛客上收获很多,也很感谢各位小伙伴写的面经,所以拿到第一个意向后第一时间写一下自己的经历,希望能帮助到后面需要找工作的各位同学。
字节的面试体验就一个字 快,效率实在是太高了。(周五在字节官网投的简历,过了半个多小时hr就联系我了,然后第二周把一二三面直接面完,三面第二天就发意向书,效率属实太高了。
先讲一下个人情况,有一段不是很长的实习,然后学校里有个简单的分布式相关的项目,算法题大概500左右。下面是面经,希望能对后面找工作的同学有所帮助。
一面
- 怼实习项目和学校项目
- Spring的ioc和aop说一说
- 如果让你实现一个ioc,你要怎么做?
- aop实现原理,以及jdk动态代理会遇到的问题
- 那cglib就没有什么问题了吗?
- cookie和session区别
- session存不下怎么办?
- 键入一个url网址的过程
- tcp连接的三次握手,没有第三次行不行?
- tpc和udp的区别,以及他们适用的范围(应用层哪些用的tcp,哪些用的udp)
- 说一说java并发(volatile,synchronized)
- synchronized的效率如何?(锁升级)
- 了解过其他并发包吗?(vector, copyOnWrite, ConcurrentHashMap, AQS的锁,reentrantLock)
- 自己写代码如何避免死锁?
- 了解哪些排序算法,都讲一讲?
- 快排最坏复杂度?归并呢?
- HTTPS加密过程
- 为什么一开始要用非对称加密,直接用对称加密不行吗?了解过公钥加密和私钥加密的应用范围吗?
- 自己如何使用udp实现可靠的数据传输?
- 八个硬币,有一个最轻,其他一样重,用天平最少几次能选出最轻那个
- 写题:1,2,3,4。。。。。n 中选k个数,输出所有选择的可能性。
二面
- tcp的滑动窗口说一下
- 发送窗口会变成0吗?
- linux了解哪些命令?
- grpc用的什么序列化(protobuf)
- protobuf怎么编码的?
- 修改了protobuf的字段,应该先上线服务提供方,还是服务调用方??
- redis如何实现分布式锁?(使用set五个参数那个命令)
- redis如何保证原子性?(redis是单线程执行的,单个命令就是原子执行的)
- redis的数据结构了解哪些?说了跳表,然后跟面试官聊了五分钟的跳表。
- MySql的隔离级别和产生的问题
- MySql的索引说一下?
- B树使用场景?
- 给一个表,id,a,b,c (a,b)是联合索引 select * from db where a > x and b == y;能否使用上索引?那查找过程呢?a走不走索引?b走不走?
- update set c == x,会加什么锁?,那update set id == x呢?
- 写题:二叉树的右视图
- 口述思路:一个无序数组,找到一个数,左边都比他小,右边都比他大
三面
- 介绍实习项目
- 聊RPC,protobuf序列化方式
- 介绍一下服务治理
- java代码编译加载执行的过程
- 类加载过程讲一讲
- 如何去找到入口去执行第一段代码
- linux系统的虚拟地址空间讲一讲
- 进程内存空间怎么分布的?(linux和jvm中)
- 除了堆和栈还有哪些区域?
- 什么是堆外内存?
- 悲观锁和乐观锁以及现实场景
- mysql怎么体现乐观锁?
- Mysql 中某索引列 已经 存在 5,9记录,第一个事务Insert 6,第二个事务 select for update where col > 4? (问:第二个事务是否会被block?如果没有for update会不会被阻塞?那如果第二个事务insert 7会不会加锁?)
- 注册的用户密码应该怎么存储?
- md5和加密算法有啥区别?
- 讲一讲非对称和对称加密的概念
- 非对称加密的公钥加密私钥解密和私钥加密公钥解密使用场景?
- jvm垃圾回收和收集器的概念(讲了引用计数,可达性分析,回收算法,cms收集器)
- 为什么年轻代用复制,老年代用标记整理?
- 如何对mysql查询进行优化?
- explain了解哪些参数?
- 写题:二叉树中找出满足节点和为某一给定值k的所有路径(路径是指的根节点到叶子结点)
- 闲聊阶段