3.26美团后端开发面经
《面试题目》
时长:75min
- 基础知识:
- 讲一下Java的锁机制。
- 讲一下MySQL事务。
- 项目经验:
- 项目深度拷打,针对简历细节进行全方位提问。
- 技术测试(4题):
- 给一段Java网络编程代码,找出其中的错误。
- 给若干个MySQL查询语句,找出不能使用索引的情况。
- AI Coding:使用Java实现基于令牌桶的限流算法。
- 算法题:给定一个01数组,求满足0和1个数相同的最长连续子数组的长度。
《参考解析》
- Java锁:重点掌握synchronized与ReentrantLock的区别,偏向锁、轻量级锁、重量级锁的锁升级过程,以及CAS机制和AQS原理。
- MySQL事务:核心在于ACID特性,以及四种隔离级别(读未提交、读已提交、可重复读、串行化)。重点理解MVCC(多版本并发控制)如何解决幻读问题。
- 索引失效:常见的包括:对索引列做运算或函数操作、隐式类型转换、使用!=或<>、使用like以%开头、or连接非索引列等。
- 令牌桶算法:定义一个桶存放令牌,以固定速率往桶里放令牌,请求进来时先从桶中获取令牌,如果桶满则丢弃令牌,获取到令牌即允许通过,否则限流。
- 最长子数组算法:将数组中的0视为-1,问题转化为求和为0的最长连续子数组。使用HashMap记录前缀和及其首次出现的下标,通过当前前缀和与HashMap中记录的下标差计算长度。