项目架构 (1).png

    • 设计模式

      • 创建型模式

        • 工厂方法模式
        • 建造者模式
        • 抽象工厂模式
        • 单利模式
        • 原型模式
      • 结构型模式

        • 适配器模式
        • 桥梁模式
        • 组合模式
        • 装饰模式
        • 门面模式
        • 享元模式
        • 代理模式
      • 行动型模式

        • 责任链模式
        • 命令模式
        • 解释器模式
        • 迭代器模式
        • 中介者模式
        • 备忘录模式
        • 观察者模式
        • 状态模式
        • 策略模式
        • 模版方法模式
        • 访问者模式
    • 设计职责

      • 单一职责

        • 一个类只承担一个职责
      • 开闭原则

        • 对软件实体的改动,最好用扩展而非改动的方式
      • 里氏替换原则

        • 子类可以扩展父类的方法,但不应该复写父类的方法
      • 接口隔离原则

        • 对象不应被强迫依赖它不使用的方法
      • 依赖倒置原则

        • 面向接口编程,提取出事务的本质和共性。高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象
      • 迪米特法则

        • 一个对象应该对其他对象保持最少的了解,实现低耦合、高内聚
    • MVVM、MVC、MVP

      • MVVM

        • View
        • Model
        • ViewModel

        • 特点

          • 低耦合
          • 可重用性
          • 独立性
          • 可测试
            • 针对viewModel测试
      • MVC

        • Model
        • View
        • Controller
      • MVP

        • Model
        • View
        • Presenter
          • 操作Model进行数据更新
          • 更新View数据
    • 组件化/插件化/模块化

      • 组件化
        • 组件化实现与业务无关系,以软件复用为核心,达到‘即插即用’快速构造应用软件的效果
      • 插件化
        • 将主工程项目分离分拆,动态化加载
      • 模块化
        • 以业务功能为单元的独立模块
          • 登陆模块
    • 怎么做好项目架构?

      • view层的组织和调用方案
      • 网络层的设计方案
      • 动态部署方案
      • 本地持久化方案
    • 优秀的项目架构是什么样的?

      • 代码规范整齐,分类明确清晰
      • 不用文档或较少文档下就能让业务方轻松上手
      • 思路和方法统一,尽量不要多元
      • 没有横向依赖,非必要不出现跨层访问
      • 对业务方该限制的地方做好限制,在该灵活的地方灵活处理
      • 易于测试,易于扩展
      • 保持一定量的超前性
      • 接口尽可能少,参数少
      • 高性能
    • 如何做项目优化?

      • 业务功能方向

        • 核心功能SDK化
        • 公用业务功能组件化拆分
          • 登陆
          • 分享
        • 提供独立的业务单元给独立App使用
      • 基础功能方向

        • 通讯,数据库,基础库,hybrid
        • 定位
          • 城市定位成功率
          • 经纬度获取成功率
        • 根据连接/读/写的重用机制
      • 网络方向

        • 网络请求服务成功率
        • 网络请求平均耗时
        • 耗时分布
        • 网络层面优化
        • TCP长链接服务
        • 2G/3G/4G/5G/Wi-Fi下参数调优
        • 使用ip列表防止dns解析失败或劫持
        • 根据网络延迟情况使用选择服务器IP(Ping)
      • 项目性能方面

        • 性能数据指标采集
          • bugly
          • 自定义日志上传模块
        • App启动时间
          • pre-main 优化
          • main 优化
        • App包体积大小
        • 内存,流量的使用情况
    • 过往项目经验以及亮点

      • 过往项目经验
      • 你觉得做的最好的项目?
      • 你在项目中最亮的点在哪?
      • 你觉得还能继续做哪些工作?
    • 常见的项目解决方案

      • 1、如何设计一个图片缓存框架?

        • 主要构成模块
          • Manager
          • 数据缓存
            • 内存缓存
            • 磁盘缓存
          • 网络下载
          • 图片处理
            • 解码
            • 压缩
      • 2、如何设计一个时长统计框架?

        • 记录器
        • 记录管理者