美团后端暑期记录
Timeline
4.5 笔试
4.8 一面 (一面完第二天约了二面)
4.10 二面
一面(1h35min)
笔试做的不好,没想到约面了
先拷打实习:
- 实习经历里提到了排行榜功能用Kafka同步mysql的数据到ES。
- 讲一讲为什么用Kafka,在这个业务场景下有什么优势
- 当时ES集群是怎么配置的
- 为什么用ES而不是Redis zset
- mysql和es的数据一致性怎么考虑的,数据不一致的时候业务层怎么处理
- 实习经历里提到了用redis做缓存,拷打redis
- 缓存key怎么设计的,在设置TTL的时候有什么考量
- 调用了一个第三方服务,这个第三方服务如果超时、宕机,你的服务会怎么应对
- redis八股(Redis为什么这么快、持久化策略、底层数据结构、缓存击穿/穿透/雪崩分别是什么以及怎么应对)
- 根据实习经历出了道场景题:有两个服务A和B,服务A调用服务B,B服务现在有两个接口,一个读主库,一个读从库,现在怎么设计业务逻辑让B根据不一样的数据分流请求到这两个接口且服务A对此无感知,需要考虑哪些因素
- golang RWMutex底层原理
接着拷打八股:
- 计网:
- 我们都知道TCP通过三次握手建立连接,那如果我们不按规范,请问客户端最快在哪次握手的时候就可以发送消息?
- 我们现在通过视频面试,你觉得底层用的是什么协议?如果要设计一个一方掉线可以重连的平台,你会怎么设计?
- TCP连接双方如果都不发送消息,你觉得会发生什么,连接会断开吗?
- 讲一下TCP keepalive和HTTP keepalive的区别
- 还问了很多零零碎碎的,记不清了...
- MySQL
- 建立索引和使用索引的时候,需要做哪些考量?
- 给了一个sql语句,分析走什么索引(考察索引覆盖、最左匹配原则)
- 怎么分析一个sql语句的成本,explain之后怎么看
- 哪些情况会导致不走索引
- select ... for update会带来哪些问题
- Golang
- 就问了个垃圾回收
最后两道算法题:
- 最小的k个数
- 最长不重复子序列
- 衍生地聊了下golang和java原生sort函数的底层用的都是什么排序算法,为什么
面试官给出的面评挺好的,希望能进二面
二面(1h)
一位女面试官,很温柔但技术能力很强,全程0八股,各种业务场景、架构设计的拷打,几乎每个问题都是“如果让你重新设计,你会........"
问了下未来的规划,为什么想去香港读研
问了下大模型应用相关,问了解过什么相关技术吗(我说了MCP),然后问知道Agent和workflow的区别吗
说一下你最近一次看官方文档或者看源码来解决问题的经历(说了下Linux中的shared mount)
然后手撕LRU
最后问了下我觉得自己的优势和不足