美团内推--附美团面经
可帮看简历、帮催进度、解答疑惑,有问题随时联系!
内推码:QJXBT7Y
岗位地址:https://zhaopin.meituan.com/m/campus?zp-from=hiring-campus-bole-elephant&staffSsoId=24072850
美团的面试压力较小,对笔试成绩不是很看重,大家准备好了就来试试吧。
一面
算法:33. 搜索旋转排序数组 看得很细,每一行代码为什么这么写。
1. 项目:
a. 分库分表设计方式,为什么这么设计?
b. 分布式锁
2. redis
c. cluster模式如何查找key,主节点宕机怎么办
d. 如何解决热key
e. 基本数据类型
3. mysql
a. 架构:一主一从
c. 隔离机制;如何实现?mvcc?
d. 覆盖索引
e. 如何处理慢查询
f. b和b+的区别
4. 消息队列
a. 延迟队列有哪些实现方式?
b. 不重复、不丢失的实现原理?
二面
二面问得比较简单
1. 项目有哪些幂等性操作?
2. 这段代码事务是否有问题?
@Transaction
function Long method(){
Long A = save(a);
Long B = save(b);
mq.post(B)
return B
}
@Transactional(rollbackFor = Exception.class)
public Long method() {
Long A = save(a);
Long B = save(b);
try {
mq.post(B); // 将消息发送纳入事务
} catch (Exception e) {
throw new RuntimeException("消息发送失败", e); // 抛出异常触发事务回滚
}
return B;
}
1.事务范围问题
● 事务回滚,但mq消息已发送,不满足一致性。通过事务消息解决
2.事务传播行为
● 如果 save(a) 或 save(b) 内部也使用了事务(例如通过 @Transactional 注解),需要明确事务的传播行为。默认的传播行为是 REQUIRED,即如果当前存在事务,则加入该事务;否则创建新事务。
● 如果希望 save(a) 和 save(b) 独立于外部事务,可以使用 REQUIRES_NEW 创建新事务,且新事务回滚不影响原事务
3. 异常处理
● @Transactional 注解的 rollbackFor 属性用于指定哪些异常会触发事务回滚。默认情况下,Spring 只会在遇到 RuntimeException(运行时异常)或 Error 时回滚事务,而不会回滚其他类型的异常
4. 消息队列的可靠性
● mq.post(B) 是异步操作,消息队列的可靠性需要保证。如果消息发送失败,可能导致业务逻辑不完整。可以考虑使用本地消息表或事务消息机制,确保消息发送和数据库操作的一致性。
2. 算法:对称字符串,判断字符串是否对称,并问了时空复杂度。
三面
三面问的都是软实力问题:
- 如何从0到1学习,遇到什么困难?
- 上线规范、代码规范、发布规范、上线需要关注什么?
- 76. 最小覆盖子串


叮咚买菜工作强度 199人发布