标签:库存 java 动态代理 系统 页面 tips 互联网 压测 设计
前言这又是一期读者的面经分享,很巧的是,他在蘑菇街面了三轮,最后虽然没过,但是也希望分享出来大家瞅瞅。
我这周可能会单独做个大厂面试流程的视频,涉及每一轮的考察点注意事项,如果觉得有必要,可以留言让我知道你们想看啥。
收获:
介绍主要项目(大概二十五分钟左右);
Spring AOP
为什么临时决定找工作?答:因为比较熟悉这里的工作,想找挑战。
整体就是介绍主要项目,时间总共四十分钟左右。
有堆 Dump 和数据库连接池优化经验,怎么做的?
两个出发点进行优化。
也就是说,改一次数据,会导致一个服务的五次查询,如果集群里有十个服务,那么改一次数据就会触发五十次查询。但是从业务的角度来看,改了一个表的数据只需要清除该表的缓存即可,其他四个表的缓存并不需要修改,也就是粒度太粗,所以我第一步是将粒度细化到表的级别。
业界分布式锁通常情况下是用 Redis 的 setnx 来实现的,但当时我们的 Redis 还没有搭建起来,缓存用的是 Memcache;此外,我们的注册中心基础是 ZK,而 ZK 的瞬时顺序节点是可以实现分布式锁的功能,所以我就使用了。
另一方面,大量并发同时查询汇总结果时,由于服务做了负载均衡,所以集群中的服务都会接收到请求,缓存中没有汇总结果,会所有大量服务进行计算。但其实只需要一个服务进行缓存的计算即可,其他服务的计算属于资源浪费行为。
所以我对一个需要进行汇总的业务使用了分布式锁,用查询条件作为锁,获取到该锁的服务进行计算,并负责将计算结果置入缓存,
其他服务在尝试获取该锁的时候失败,返回一个默认的结果,这样便避免了多余的计算。
共 40 分钟左右;
自我介绍
简历上写有 JVM 优化经历,怎么做的?
可以看出每一面都不容易哈,大家真的要好好学习呀。
Tips:我有个读者已经面进我们公司做我的同事了,丙丙还和他约了一楼咖啡厅喝茶,到时候也会分享出来。
标签:库存 java 动态代理 系统 页面 tips 互联网 压测 设计
原文地址:https://blog.51cto.com/14689292/2545810