美团后端一面凉经
面试官人还是很好的,很耐心,一开始一上来就先介绍了一下他们部门的情况
上来第一个问题是过滤器和拦截器的区别是啥?执行顺序是啥?以及实现原理的区别?
然后又大概问了springsecurity是基于过滤器还是拦截器(哎,血的教训。本身就没怎么了解过springsecurity结果硬着头皮写上去,一问直接穿帮)
然后还问了springsecurity有什么过滤器
springboot如何自定义一个starter?比方说像MySQLstarter之类的
Metainfo的配置以及用来做什么的
starter的设计模式有哪些?
然后就是认证和鉴权的区别是什么?
接下来就是springboot模块:
第一个是为什么开发者要自创线程池而不是直接用springboot的线程池??
以及自建线程池有哪些指标需要去监控的?
redis模块:
第一个是集群相对于单机来说,有什么不同点
集群是如何进行同步数据的
集群模式是否容易丢失数据?以及如何解决丢失数据的情况?
rdb和aof在使用的时候应该怎么选
还有一个问题是,缓存穿透如果用空值法的话,如何避免大面积的内存被白白占用?
redisson相比于setnx灵活在哪?
采用延迟双删的情况下,如果MySQL数据库操作失败了怎么办?
redis刷新token是如何保证用户无感的
接下来是mybatis的:
mybatisplus和mybatis的区别
然后先问我有没用过jpa,我说没有
然后说mybatisplus用到了很多queryweb?(这个也没准备好,不太会,甚至不知道说的是什么
)
最后一个是mybatisplus如何实现分类的
接下来是sql语句优化:
多表连接怎么优化
多变连接的情况下,如果要分页查询该怎么改造?
多表连接如何创建索引?联合索引是作用在哪里?
然后就是join from groupby order的执行顺序
MySQL内部如何提高扫描效率?(然后补充说有什么优化器)
然后又回到了redis:
点赞排行如何实现?用zset的话是不是只能存储短期的数据?那如果一周之后没了该怎么办?要如何刷新?
最后问了个简单的,如何实现乐观锁
最后手撕是最长不重复子串
总结就是,传统八股题问的很少,场景题贼多,深一点的底层题还需要学
下次再战
上来第一个问题是过滤器和拦截器的区别是啥?执行顺序是啥?以及实现原理的区别?
然后又大概问了springsecurity是基于过滤器还是拦截器(哎,血的教训。本身就没怎么了解过springsecurity结果硬着头皮写上去,一问直接穿帮)
然后还问了springsecurity有什么过滤器
springboot如何自定义一个starter?比方说像MySQLstarter之类的
Metainfo的配置以及用来做什么的
starter的设计模式有哪些?
然后就是认证和鉴权的区别是什么?
接下来就是springboot模块:
第一个是为什么开发者要自创线程池而不是直接用springboot的线程池??
以及自建线程池有哪些指标需要去监控的?
redis模块:
第一个是集群相对于单机来说,有什么不同点
集群是如何进行同步数据的
集群模式是否容易丢失数据?以及如何解决丢失数据的情况?
rdb和aof在使用的时候应该怎么选
还有一个问题是,缓存穿透如果用空值法的话,如何避免大面积的内存被白白占用?
redisson相比于setnx灵活在哪?
采用延迟双删的情况下,如果MySQL数据库操作失败了怎么办?
redis刷新token是如何保证用户无感的
接下来是mybatis的:
mybatisplus和mybatis的区别
然后先问我有没用过jpa,我说没有
然后说mybatisplus用到了很多queryweb?(这个也没准备好,不太会,甚至不知道说的是什么
最后一个是mybatisplus如何实现分类的
接下来是sql语句优化:
多表连接怎么优化
多变连接的情况下,如果要分页查询该怎么改造?
多表连接如何创建索引?联合索引是作用在哪里?
然后就是join from groupby order的执行顺序
MySQL内部如何提高扫描效率?(然后补充说有什么优化器)
然后又回到了redis:
点赞排行如何实现?用zset的话是不是只能存储短期的数据?那如果一周之后没了该怎么办?要如何刷新?
最后问了个简单的,如何实现乐观锁
最后手撕是最长不重复子串
总结就是,传统八股题问的很少,场景题贼多,深一点的底层题还需要学
全部评论

因为是golang开发 刷一下我会的
认证确认用户是谁的过程,验证用户的身份。例如用户名密码登录、手机验证码等。
鉴权确定用户能做什么的过程,验证用户是否有权限执行特定操作。例如普通用户不能访问管理员页面。
集群相对于单机的不同点:易于扩展,高性能,高可用性,但是需要额外维护成本
集群数据同步方式:主从同步,增量同步,全量同步,异步复制
同步的时候有一个replication buffer缓冲区,会写入同步期间新增的数据,同步完rdb之后再同步这个命令,然后重放一次
集群数据丢失及解决方案: 集群模式可能丢失数据,主要原因是异步复制。解决方法:开启持久化(RDB/AOF) 调整min-slaves-to-write和min-slaves-max-lag参数(拒绝写入
RDB和AOF选择:
* RDB:适合数据备份,恢复速度快,对性能影响小,但可能丢失最后一次快照后的数据
* AOF:数据安全性高,支持秒级持久化,但文件较大,恢复速度慢
* 建议同时使用:RDB做冷备,AOF做热备,利用各自优势
缓存穿透空值法内存占用问题:
1. 空值设置较短的TTL
2. 布隆过滤器
3. 后台任务定期检查和清理空值
Redisson相比setnx的灵活性:
1. 同一线程可多次获取锁
2. 自动续期
3. 锁超时
4. 分布式支持
延迟双删MySQL操作失败 不是很懂,这个失败了数据仍然是一致的吧,只是会有缓存击穿分险,正常报错响应客户端应该就ok
续上一条
Redis刷新token保证用户无感:
1. 使用access_token和refresh_token
2. 在access_token即将过期前自动刷新
3. 用户活跃时延长token有效期
4. 客户端在后台异步刷新token
5. token过期后短时间内仍可使用,同时刷新
点赞排行实现及数据持久化:
1. 使用ZSET存储,score为点赞数
2. 定期将热门数据持久化到MySQL
3. 热数据保存在Redis,冷数据存入MySQL
4. 设置定时任务每天/周从MySQL加载基础数据到Redis
5. 只更新有变化的数据,而非全量刷新
乐观锁实现:
1. 表中增加version字段,更新时检查版本
2. 条件更新 UPDATE table SET data=?, version=version+1 WHERE id=? AND version=?
SQL优化问题
多表连接优化:
1. 减少连接表数量
2. 索引优化
3. 小表驱动大表
4. 尽量使用内连接而非外连接
5. 将过滤条件尽量下推到基表
6. 避免笛卡尔积
多表连接分页查询优化:
1. 先获取分页ID,再关联查询详细数据
2. 先对主表分页,再与其他表连接
3. 尽量使用索引覆盖避免回表
4. 将WHERE条件提前执行
5. 使用临时表存储中间结果
多表连接索引创建及联合索引作用:
1. 在所有JOIN条件字段上创建索引
2. WHERE条件字段创建索引
3. ORDER BY字段创建索引
4. 联合索引作用最左前缀匹配 索引覆盖 减少回表次数 提高连接效率
SQL执行顺序: FROM > JOIN > WHERE > GROUP BY > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT
MySQL提高扫描效率的方法:
1. B+树索引减少磁盘IO次数
2. 根据成本选择最优执行计划
3. InnoDB buffer pool缓存热数据
4. 提前读取可能需要的数据页
呀,说错了。mybatisplus有一个问题是,如何实现分页的
接好运
这么难,那个部门
这太难了吧
佬,想问一下手撕是acm还是核心代码模式呀[

八股盛宴呐
这么难
m
Mark面评
这么难啊,mybatis考这么细
你这也太多了吧,我下午也是一面,问的问题很基础但我回答的不是很好,半个小时就结束了,估计面试官是对我不感兴趣

接好运
找华为实习的,可以私信我。
接好运
接好运
接好运
接好运
相关推荐


点赞 评论 收藏
分享

点赞 评论 收藏
分享