
一、图片缓存框架面试题
问题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通过中间层获取所需要的信息,从而达到了业务解藕。
网友评论