架构相关

标题

一、图片缓存框架面试题

问题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

MVVM

RN数据流

RN数据流

四、客户端整体架构

4.1、整体框架图

整体框架图

问题14:业务之间的解藕通信方式?

方式

4.2、依赖注入

依赖注入

这里业务A依赖业务C
通过将业务C注入到中间层业务A通过中间层获取所需要的信息,从而达到了业务解藕

五、总结

你可能感兴趣的:(架构相关)