java开发工程师面试题总结

一、背景

我们日常在电商网站购物时经常会遇到一些高并发的场景,例如电商 App 上经常出现的秒杀活动、限量优惠券抢购,还有我们去哪儿网的火车票抢票系统等,这些场景有一个共同特点就是访问量激增,虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,为了避免并发问题,防止库存超卖,给用户提供一个良好的购物体验,这些系统中都会用到锁的机制。

对于单进程的并发场景,可以使用编程语言及相应的类库提供的锁,如 Java 中的 synchronized 语法以及 ReentrantLock 类等,避免并发问题。

一、秒杀系统架构设计都有哪些关键点?

二、设计秒杀系统时应该注意的5个架构原则

  1. 架构原则:“4要1不要”
    1.1.数据要尽里少
    1.2. 请求数要尽里少
    1.3.路径要尽里短
    1.4.依赖要尽里少
    1.5. 不要有单点
  2. 2不同场景下的不同架构案例

三、如何才能做好动静分离?有哪些方案可选?

  1. 何为动静数据
  2. 如何做动静分离的改造
  3. 动静分离的几种架构方案
    方案1:实体机单机部署
    方案2:统一Cache 层
    方案3:上CDN

四、二八原则:有针对性地处理好系统的“热点数据”

  1. 为什么要关注热点
  2. 什么是“热点”
  3. 发现热点数据
  4. 处理热点数据

五、流量削峰这事应该怎么做?

  1. 为什么要削峰
  2. 排队
  3. 答题
  4. 分层过滤

六、影响性能的因素有哪些?又该如何提高系统的性能?

  1. 影响性能的因素
  2. 如何发现瓶颈
  3. 如何优化系统
    3.1 减少编码
    3.2 减少序列化
    3.3. Java 极致优化
    3.4.并发读优化

七、秒杀系统“减库存”设计的核心逻辑

  1. 减库存有哪几种方式
  2. 减库存可能存在的问题
  3. 大型秒杀中如何减库存?
  4. 秒杀减库存的极致优化

八、如何设计兜底方案?

  1. 高可用建设应该从哪里着手
  2. 降级
  3. 限流
  4. 拒绝服务

总结

上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。

很多人担心学了容易忘,这里教你一个方法,那就是重复学习。

打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。

资料领取方式:戳这里免费领取

从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。

人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。
(img-Oaqew9wv-1624083358600)]

人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值