美团内推--附美团面经

可帮看简历、帮催进度、解答疑惑,有问题随时联系!

内推码: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. 算法:对称字符串,判断字符串是否对称,并问了时空复杂度。

三面

三面问的都是软实力问题:

  1. 如何从0到1学习,遇到什么困难?
  2. 上线规范、代码规范、发布规范、上线需要关注什么?
  3. 76. 最小覆盖子串

全部评论

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务