最近9月份出去面试了一波互联网公司,面试前准备了差不多两个星期,看之前做的八股文笔记和刷leetcode 100高频题。之后就直接边面试边积累面经,这篇文章分享一下面经。
美团
MySQL
- 业界默认的隔离级别
- 如何实现可重复读
- 如何实现幻读,除了MVCC还有什么方式
- 索引的原理
- 如何对索引进行优化
- 插入一条数据的全过程
Redis
- redis的分布式锁是怎么实现的
- 分布式锁一般用在哪些场景
Kafka
- 消费者积压过多怎么处理?
- 扩容会有什么影响?
开放题
- 如果一个线上服务突然出现大面积的接口超时,可能是什么原因?
- 如果出现这样的问题,你会怎么处理?
- 一般哪些原因会导致内存泄漏?
- 什么原因会导致CPU利用率暴涨?
算法题
- 斐波那契数列,先写递归写法分析时间复杂度,再写循环写法,最后写空间复杂度为O(1)的写法
滴滴
基础
- golang的GMP模型
- golang垃圾回收机制
- mysql的四种隔离级别和含义
- 如何实现可重复读:MVCC
- MySQL update一条记录的全过程
- redis有哪些集群模式
- redis持久化的两种方式
- redis如何实现高可用
- redis主节点挂了是怎么进行故障转移操作的
- kafka如何实现高可用
- kafka如何防止消息丢失
设计
- 微信群发红包设计:考虑高并发场景下如何保证不多抢
算法
- 判断一个字符串中有效括号的个数(比如
)(()))
B站
基础
- golang的sync map怎么实现的
- golang里有哪些锁
- 读写锁做了哪些优化
- golang的gc原理,为了提升效率有哪些优化
- kafka相比其他mq的优势
- kafka如何保证高吞吐
- kafka零拷贝的原理
代码
- leetcode143 重排链表
- 用golang实现,m个goroutine轮流打印n个hello world,主协程等待打印完毕
百度
golang
- init的执行时机是什么,它和全局变量的执行顺序是怎样的;全局的变量先初始化还是常量先初始化
- 局部变量是分配在堆上还是栈上
- 两个interface可以进行比较吗
- nil之间可能会不相等吗
MySQL
- MySQL有哪些索引
- 什么情况下二级索引会失效
- 什么情况下带索引的in条件查询,会不走索引?
redis
- 如何保证可靠性
- redis有什么集群模式
- 设计一个延时消息队列
算法
- 最长回文子串
- 最小覆盖子串
美团v2
这次是被其他部门捞起来面
基础
- MySQL查询一条记录的时候,会加哪些锁
- 范围查询记录的时候,会加哪些锁
- redo日志和undo日志分别是干什么的
- ES的nested结构有了解吗
- 更新db后,如何保证db和缓存数据的一致性?如何保证强一致性?
算法
- 将一个int型正整数(最高到billion级别),翻译成英文
快手
基础
- kafka如何保证消息不丢(blog.csdn.net/m0_57836225…);如何保证没有重复消息
- 介绍一下kafka的rebalance
- MySQL的四种隔离级别
- MySQL mvcc原理
- MySQL如何实现回滚
- 写一个SQL,获取学生分数表中排名101名学生的分数
设计
- 设计一个分布式自增id服务
算法
- 三数之和
拼多多
设计
- 设计一个单机的定时任务调度系统
- 有一个按小时记录的文件,每个文件中记录了这个小时中的<user_id, keyword, timestamp>的用户查询记录,每个文件大小1T,单机内存100G。要求设计一个接口,查询出[t1, t2]时间范围内的top3的查询keyword以及对应的user_id列表
算法
- 34. 在排序数组中查找元素的第一个和最后一个位置
- 非递归后序遍历二叉树,不能用逆序输出的方式