4.1 蚂蚁电话面凉经
1. 自我介绍
2. 线程池调参
3. 多个接口,多套业务,会访问到各自的线程池,之前的调参将不合理,怎么做?(不知道,寄。瞎掰了个用 semaphore 做整体限流)
4. 提到了 semaphore,所以顺便问了怎么做业务限流(单点用并发工具,分布式用令牌桶)
5. 令牌桶怎么实现(redis,以指定速率增加令牌。应用没有获取到令牌就阻塞)
6. 动态线程池(知道有这个东西,但是没深入了解,没答上来,寄)
7. 选一个熟悉的设计模式,说一下用它解决了什么问题(原型模式)
8. 然后就考了一下原型模式的范式(原型缓存、原型接口、原型实现类。但是我答错了!我一直用的是冒牌的原型模式,哈哈,寄寄寄寄)
9. 场景题,现在有多个订单类型,每个类型一个系统,开放各自的接口。现要求实现一个新应用,返回某个用户的所有类型的订单,按照时间排序分页。
我:弄个临时表存查询结果。
面试官:没有sql。
我:如果分页需要 n 个结果,每次对每种类型分别查询 n 条,然后内存内排序,截取前 n 条返回。
面试官:第二页咋办
我:前端返回最后一条的时间给后端,后端用它范围查询。
面试官:有漏单问题
我:不只对时间排序,对 id 也排序,前端返回时把 id 也返回。id 用雪花算法。
面试官:现在订单类型有很多,每次查询要丢弃很多数据,怎么优化。
我:需要维护一个中间件存有序列表,例如 redis 的 zset,包含某个用户所有订单的 类型 id 时间。zset 恰好很适合范围查询,可以用作分页。
面试官:需要做个筛选功能,用户可以筛选展示哪些类型的订单
我:中间件改为每个类型维护一个有序列表,每次查询按照筛选词条做一下归并然后再截取返回
10. 时间到,反问。(业务,点评面试表现)说我思路算是比较丰富清晰,但是基础偏弱,设计业务实现的时候也应该更加谨慎,而不是像刷leetcode的时候一样,只追求当前问题解决。
面试官一上来看简历就说,诶我没实习过,我估计根据他经验我八成过不了了😭场景题最后估计也不是他想要的答案,但是看了眼时间草草结束了。孩子们,没实习经验只背了八股的还是谨慎挑战,我反正心态又炸了😔#牛客AI配图神器#
2. 线程池调参
3. 多个接口,多套业务,会访问到各自的线程池,之前的调参将不合理,怎么做?(不知道,寄。瞎掰了个用 semaphore 做整体限流)
4. 提到了 semaphore,所以顺便问了怎么做业务限流(单点用并发工具,分布式用令牌桶)
5. 令牌桶怎么实现(redis,以指定速率增加令牌。应用没有获取到令牌就阻塞)
6. 动态线程池(知道有这个东西,但是没深入了解,没答上来,寄)
7. 选一个熟悉的设计模式,说一下用它解决了什么问题(原型模式)
8. 然后就考了一下原型模式的范式(原型缓存、原型接口、原型实现类。但是我答错了!我一直用的是冒牌的原型模式,哈哈,寄寄寄寄)
9. 场景题,现在有多个订单类型,每个类型一个系统,开放各自的接口。现要求实现一个新应用,返回某个用户的所有类型的订单,按照时间排序分页。
我:弄个临时表存查询结果。
面试官:没有sql。
我:如果分页需要 n 个结果,每次对每种类型分别查询 n 条,然后内存内排序,截取前 n 条返回。
面试官:第二页咋办
我:前端返回最后一条的时间给后端,后端用它范围查询。
面试官:有漏单问题
我:不只对时间排序,对 id 也排序,前端返回时把 id 也返回。id 用雪花算法。
面试官:现在订单类型有很多,每次查询要丢弃很多数据,怎么优化。
我:需要维护一个中间件存有序列表,例如 redis 的 zset,包含某个用户所有订单的 类型 id 时间。zset 恰好很适合范围查询,可以用作分页。
面试官:需要做个筛选功能,用户可以筛选展示哪些类型的订单
我:中间件改为每个类型维护一个有序列表,每次查询按照筛选词条做一下归并然后再截取返回
10. 时间到,反问。(业务,点评面试表现)说我思路算是比较丰富清晰,但是基础偏弱,设计业务实现的时候也应该更加谨慎,而不是像刷leetcode的时候一样,只追求当前问题解决。
面试官一上来看简历就说,诶我没实习过,我估计根据他经验我八成过不了了😭场景题最后估计也不是他想要的答案,但是看了眼时间草草结束了。孩子们,没实习经验只背了八股的还是谨慎挑战,我反正心态又炸了😔#牛客AI配图神器#
全部评论
接好运
哪个部门佬
相关推荐