架构相关
2019-10-17 本文已影响0人
huoshe2019
标题
降低丢失率
一、图片缓存框架面试题
问题1:怎样设计一个图片缓存框架?
图片框架问题2:图片通过什么方式进行读写,过程是怎样的?
读写方式:
- 以图片URL的单向Hash值作为Key进行存储和读取
过程:
过程
问题3:图片缓存框架中内存的设计需要考虑哪些问题?
-
存储的Size
1、对不同大小图片,设置最大数量。
2、图片是先进先出。
Size -
淘汰策略
1、以队列先进先出的方式淘汰。
2、LRU算法(如30分钟之内是否使用过)。LRU算法实现如下:
LRU算法
问题4:磁盘设计需要考虑哪些问题?
- 存储方式
- 大小限制(如100M)
- 淘汰策略(如某一图片存储时间距今已超过7天)
问题5:网络部分的设计需要考虑哪些问题?
- 图片请求最大并发量
- 请求超时策略
- 请求优先级
问题6:对于不用格式的图片,解码采用什么方式来做?
- 应用策略模式对不同图片格式进行解码
问题7:在哪个阶段做图片解码处理?
解码时间点问题8:框架中线程处理是怎样的?
线程处理- 先从内存缓存中读取。
- 内存缓存中不存在,则从磁盘中读取;如果读取成功,则存入内存缓存。
- 磁盘中不存在,则从网络下载;如果网络下载成功,则存入内存缓存。
二、阅读时长统计面试题
问题9:怎样设计一个时长统计框架?
时长统计框架问题10:为何有不同类型的记录器,你的考虑是什么?
记录器问题11:记录的数据会由于某种原因丢失,你是怎样处理的?
也就是降低丢失率。
降低丢失率
问题12:记录上传器,关于延时上传的具体场景有哪些?
延时上传场景问题13:记录上传器,关于上传时机是怎样把控的?
上传时机三、复杂页面架构
以微博为例
3.1、整体架构
整体框架
视图层
业务逻辑层
数据层
3.2、数据流
数据流3.3、反向更新
反向更新3.4、总结
MVVM
RN数据流
四、客户端整体架构
4.1、整体框架图
整体框架图问题14:业务之间的解藕通信方式?
方式4.2、依赖注入
依赖注入这里业务A依赖业务C。
通过将业务C注入到中间层,业务A通过中间层获取所需要的信息,从而达到了业务解藕。