字节广告业务面经
大概从2.17面到了现在,中间挂了,被同部门另一个团队接着面。
字节一面-0217
- 面试官介绍部门(穿山甲?)
- 自我介绍
- 项目介绍 后续就基本是逐条询问了
- 服务的注册发现流程
- rpc调用流程
- 几种序列化算法的对比,以及常用场景
- 几种负载均衡的使用场景
- random 请求可能不够均匀、
- round robin 请求均匀、
- consistent hash 相同请求打到一台实例上
- redis的hash结构如何实现
- 渐进式hash原理
- set和bitmap如何实现点赞和签到
- 为什么用MQ?——解耦
- rabbitmq如何保证消息的不重不漏
- rabbitmq能不能多个消费者消费一个Queue,
- 一条消息只被消费一次一条消息被消费多次
- 只能通过交换机,将一条消息广播到多个Queue上。
- 缓存的任务场景、缓存穿透击穿的解决方案
- 算法题:归并排序,询问了时间复杂度的计算
- 反问:有哪些不足:不方便说
字节二面-0220
- 自我介绍
- 深度拷贝的几种方法:只说了个序列化
- 内存溢出和内存泄漏哪些区域容易发生内存溢出
- 项目中 redis 使用到的数据类型
- 缓存一致性如何保证?
- 应该从读写几个角度介绍,不能仅仅说个先更新数据库再更新缓存
- MQ的有序性和可靠性
- innodb引擎和myisam的区别:事务索引树:myisam只有非聚集索引锁的粒度
- innodb的自增id是怎么实现的,为什么删除一行数据后,不继续复用该id
- http协议的请求头有什么?cookie存在哪里:请求头的Cookie 字段中
- http1.1和http2.0的区别
- 算法:lc334. 递增的三元组:要求优化到O(n)的时间复杂度、O(1)的空间复杂度,没能写出来
大概三个工作日后通知没过,然后被另一个团队捞起来接着拷打
字节一面-0227
- 自我介绍
- 项目介绍
- 缓存穿透、击穿
- 一通背
- 布隆过滤器原理及缺点
- 你的rpc和别人有什么不同
- 一致性hash的实现原理
- 如何避免一致性hash的节点分散不均
- 除了好的hash函数,还有别的吗
- HashMap的原理
- 红黑树的原理
- concurrenthashmap如何加锁
- mysql的事务隔离级别幻读和不可重复读的区别
- 如何避免幻读
- 索引的类型(索引不是为了有序,而是快速检索!!!)
- B+树的平衡树
- hash索引
- 全文索引:ES的倒排索引
- hash 索引的特点
- 场景题:一张大表两个字段(a,b),如果频繁查询 a in (a1, a2, a3) and b not in (b1, b2, b3) ,建立什么索引合适?
- a通过hash索引确定一个集合A,b通过in确定一个B,让A-B即可
- 算法题:快速幂,循环链表
字节二面-0306
- 自我介绍
- 算法:编辑距离
- 我讲了好久,他说我理解的状态转移不大正确,讨论了好几分钟,总算达成共识
- 针对编辑距离写一个单测
- 随机生成一个字符串 randomStr
- 随机对字符串编辑一定次数 editCnt,针对前 editCnt个字符,随机选择一种编辑方式
- 对编辑后的字符串 editStr,判断是否最短编辑距离minEdit为 editCnt
- 注意:插入和删除没法一起测试
- 一起debug 10多分钟,才发现 插入和删除没法一起测试
- java 的io流体现了什么设计模式
- Buffer 的装饰器模式
- 继承的一定程度体现的策略模式
- 如果让你实现一个 io 流,你会怎么设计
- 其它:能实习多久,是否愿意来北京
- 反问:
- 学习建议:按自己的节奏来就可以,不断提升学习,即便没法实习,好好做项目学技术,直接参加秋招也没问题。
- 工程和广告推荐算法:算法也要结合实际业务场景,工程开发也是如此
字节三面 0317
- 自我介绍
- 缓存淘汰策略
- LRU LFU的区别、适用场景
- redis 的副本和分片的不同
- 解决 热key 使用什么方法?副本?
- rpc 项目:
- A服务调用B服务,怎么实现对B的保护?如何在A端实现服务保护
- 怎么用redis 实现限流,具体到数据结构设计
- 智力题:52 张牌,10张正面朝上,42张正面朝下,怎么将其分为两部分,两部分的正面朝上数目相同。不能看牌,可以数
- 方法:任取 10 张,翻转一下即可
- 算法:
- 链表相加,使用O(1)的空间,
- 接雨水
- 反问:有什么不足:不说
总结复盘一下,最终能顺利通过还是运气占比不少。因为没实习过,一些场景拷打,都不大清楚如何回答,或是回答的太简单。好在第二轮面试中,场景拷打的不多,算法也都写出来了。
#实习##字节#