4、场景题&系统设计题很简单,直接背套路!

hello大家好,我是达同学,一个在大厂工作三年的Java后端工程师。

这是我们6篇文章的第四篇:场景题&系统设计篇。

其实我认为场景题是最简单的,虽然它是开放题,但是在有限的面试时间里,可以真正深究的场景并不多。这里我们还是要回到面试官的视角,看看通过场景题面试官到底想考察什么:

  1. 面试者系统设计方面的经验和知识储备,这需要面试者对场景又一些提前的了解和思考,这里我们的解法很简单,背套路!
  2. 面试者的沟通交流能力,场景题其实是和面试官互动最多的场景,你需要问清楚面试官的场景,并且不断对细节提问,这一点是很加分的,这代表你对场景有很明确的思考。当然,在面试过程中一定要注意的一点是:问有质量的问题。这块也会在最后一篇专门来说。
  3. 这里还有一点面试技巧。其实面试官问的场景题基本都是他在工作中遇到的问题(相信我,面试官不敢也不会问自己不清楚的场景,因为这样面试官很难判断你回答的价值),所以在前面的面试中,你需要提前了解你面试的部门具体在做什么。尤其是B端和C端,这在场景题上有非常大的帮助!,作为即在B端又在C端工作过的后端开发,我对此感受非常深刻。
    1. 如果是C端,那么高并发就一定是要考虑的重点
    2. 如果是B端,那么系统的领域模型是更加重要的

好了,前面说了很多,那么到底有哪些套路呢?下面直接上内容:

1. 商城秒杀:

a. 依赖的中间件:网关、分布式缓存、消息队列、限流、数据库、TCC等

b. 需要考虑的点:缓存预热、缓存与数据库的一致性方案、降级、熔断、削峰

c. 加分点:蓄洪与事后泄洪

2. 排行榜(微信步数等)

a. 依赖的中间件:网关、redis sorted set、数据库等

b. 需要考虑的点:并发、数据库排序

c. 加分点:有些排行榜可以考虑在前端/客户端做,比如:排序数据量不大/排序场景很固定,面试时提到这点很加分。

3. 红包系统

a. 依赖的中间件:网关、分布式缓存、消息队列、数据库、TCC等

b. 需要考虑的点:并发、红包如何拆分、读写分离、异步化

c. 加分点:红包核对等

4. 类微博的feed流系统

a. 依赖的中间件:网关、数据库、缓存、消息队列等

b. 需要考虑的点:并发、实时推送、消息推拉模式、数据库设计

c. 加分点:根据用户活跃场景采用推+拉模式

5. 消息系统

a. 依赖的中间件:网关、数据库、缓存、消息队列、冷热库存储

b. 需要考虑的点:如何收发消息(推/拉),消息如何聚合(多条消息聚合成一个通知提醒)

c. 加分点:按照场景存储消息(点赞/私信/广告),冷热库

上面列举的五个场景,在网上有非常多的博客,大家自行百度吧。学会这几个场景的系统设计题,大部分场景题一定可以轻松pass,即使不在这五个场景里,知识也是通用的。只要认真学习完5个场景,你的场景设计能力一定会有非常大的提升。我就是这么慢慢学过来的~

另外,大家看这5个场景依赖的中间件,有没有发现其实都很雷同?其实这就是所谓的场景设计的通用能力!所以少年,吃透上面这5个场景吧!以后就再不用怕做不出场景题啦。

楼主本硕北邮计算机,在BAT某大厂工作三年。后续会持续和大家分享Java技术和职场经验,欢迎关注我,有问题随时找我交流!

喜欢的同学欢迎关注我的专栏,11月底前会更新完

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值