✅工作7年,SaaS公司,架构师,技术负责人

面试者背景

人脸识别SaaS公司、7年工作经验,云平台核心业务开发,架构师,负责了项目0到1搭建

:::warning 支持1w并发是怎么做的?redis缓存、分库分表、future

如果让你支持10w并发,还能做哪些事情?消息队列解耦、打批处理、集群部署、

缓存用在什么场景?预热。用户的数据变了怎么感知?

一个租户特别大,热点问题怎么解决?缓存的热点问题怎么办?热key拆分、二级缓存。

近端缓存是什么?相比于本地缓存和分布式缓存有什么优缺点?一致性问题如何解决?

缓存和数据库的一致性该如何解决?更新数据库、删除缓存、延迟双删?为什么删除缓存而不是更新缓存?除了延迟双删,还有其他保证一致性方案吗?监听Bin log处理

如何实现一个本地缓存呢?map、guava,LRU是什么?LFU如何实现的?为啥要做缓存淘汰?

Redis相比memcached优势?

Redis的线程模型是怎样的?多路复用如何实现的?redis所有模块都是单线程的吗?为啥6.0要引入多线程?哪个模块是单线程的?多线程有什么缺点?

解决过OOM问题,介绍下过程。如何发现的?dump,如何解决的?

堆内存大小多大?8G,垃圾回收器用的是哪个?为什么不用CMS?CMS能降低STW?

G1 有哪些特点?garbage first,REGION是什么?STW时长如何预测?小内存为啥不适合用G1呢?

FullGC的触发条件是什么?老年代满了、空间分配担保失败、

什么是空间分配担保?

Dubbo一次服务调用过程是怎样的?

如果让你实现一个dubbo,会考虑用那些技术解决哪些问题?

Zk的选主过程是怎么样的?zk脑裂的问题?

Zk可以用来做什么?用在哪些场景中?注册中心、分布式锁、分布式ID、master选举

Seata框架用了干什么?分布式事务有哪些方案?TCC详细介绍下。Commit的时候失败了怎么办?

架构设计的时候,首先考虑的三个要素是什么?可扩展性、高内聚低耦合、可用性

:::

题目解析

:::color4 支持1w并发是怎么做的?redis缓存、分库分表、future

如果让你支持10w并发,还能做哪些事情?消息队列解耦、打批处理、集群部署、

:::

因为简历中他提到负责的业务支持了1W的并发, 所以面试的时候会重点关注,如何抗高并发。

接口性能优化方案:https://www.yuque.com/hollis666/xkm7k3/ifuuagaqo3yd8vqb

高并发思路:https://www.yuque.com/hollis666/xkm7k3/gfgqpua8gu3oag44

:::color4 缓存用在什么场景?预热。用户的数据变了怎么感知?

一个租户特别大,热点问题怎么解决?缓存的热点问题怎么办?热key拆分、二级缓存。

近端缓存是什么?相比于本地缓存和分布式缓存有什么优缺点?一致性问题如何解决?

缓存和数据库的一致性该如何解决?更新数据库、删除缓存、延迟双删?为什么删除缓存而不是更新缓存?除了延迟双删,还有其他保证一致性方案吗?监听Bin log处理

如何实现一个本地缓存呢?map、guava,LRU是什么?LFU如何实现的?为啥要做缓存淘汰?

:::

热点问题:https://www.yuque.com/hollis666/xkm7k3/lysd3t

缓存一致性问题:https://www.yuque.com/hollis666/xkm7k3/tmcgo0

本地缓存:https://www.yuque.com/hollis666/xkm7k3/iy5loh8gvzlqolxo

LRU:https://www.yuque.com/hollis666/xkm7k3/gl3fivks74z4d10e

LRU实现:https://www.yuque.com/hollis666/xkm7k3/qk8y0w5wa0vpcyzp

:::color4 Redis相比memcached优势?

Redis的线程模型是怎样的?多路复用如何实现的?redis所有模块都是单线程的吗?为啥6.0要引入多线程?哪个模块是单线程的?多线程有什么缺点?

:::

Redis&Memcached:https://www.yuque.com/hollis666/xkm7k3/ink6os3bm19gafx7

Redis线程模型:https://www.yuque.com/hollis666/xkm7k3/lrhzxqbur0eywnfu

Redis多线程:https://www.yuque.com/hollis666/xkm7k3/zfpgxa93bmn9png9

:::color4 解决过OOM问题,介绍下过程。如何发现的?dump,如何解决的?

:::

OOM问题排查:https://www.yuque.com/hollis666/xkm7k3/vdnaxh

:::color4 堆内存大小多大?8G,垃圾回收器用的是哪个?为什么不用CMS?CMS能降低STW?

G1 有哪些特点?garbage first,REGION是什么?STW时长如何预测?小内存为啥不适合用G1呢?

FullGC的触发条件是什么?老年代满了、空间分配担保失败、

什么是空间分配担保?

:::

垃圾回收器区别:https://www.yuque.com/hollis666/xkm7k3/nqra2l

G1:https://www.yuque.com/hollis666/xkm7k3/hgquufzt6m9psmtp

FullGC触发条件&分配担保:https://www.yuque.com/hollis666/xkm7k3/akr0h4yk44r57g5x

:::color4 Dubbo一次服务调用过程是怎样的?

如果让你实现一个dubbo,会考虑用那些技术解决哪些问题?

:::

Dubbo调用过程:https://www.yuque.com/hollis666/xkm7k3/io1pkwin43mkwaup

如何实现一个RPC框架:https://www.yuque.com/hollis666/xkm7k3/ve4eci8re6blimh9

:::color4 Zk的选主过程是怎么样的?zk脑裂的问题?

Zk可以用来做什么?用在哪些场景中?注册中心、分布式锁、分布式ID、master选举

:::

zk选主:https://www.yuque.com/hollis666/xkm7k3/tsfqf463g4mbh41k

zk脑裂:https://www.yuque.com/hollis666/xkm7k3/xuxwgui3f8ti2a0y

zk使用场景:https://www.yuque.com/hollis666/xkm7k3/bxldoz3kvfpdsv1g

:::color4 Seata框架用了干什么?分布式事务有哪些方案?TCC详细介绍下。Commit的时候失败了怎么办?

:::

分布式事务:https://www.yuque.com/hollis666/xkm7k3/yr0lu6

TCC:https://www.yuque.com/hollis666/xkm7k3/xhvbak3ouy6xqiml

:::color4 架构设计的时候,首先考虑的三个要素是什么?可扩展性、高内聚低耦合、可用性

:::

架构设计原则:https://www.yuque.com/hollis666/xkm7k3/uedwqv2xttnp2ze4

https://www.yuque.com/hollis666/xkm7k3/impo4wc9yzn3mmu2

原文: https://www.yuque.com/hollis666/xkm7k3/astb9s7ufgta73em