Android面试—某小厂面试题

168 阅读2分钟

怎么保证一个流式布局的流畅图片加载和缓存

glide加载图片的原理,它是怎么加载GIF的

将 Gif 解码成多张图片进行无限轮播,每帧切换都是一次图片加载请求。
在加载到新的一帧数据之后会对旧的一帧数据进行清除,然后再继续下一帧数据的加载请求。
以此类推,使用 Handler 发送消息实现循环播放。

我们自定义一个View去加载GIF该怎么实现

Movie
自定义View,重写onDraw,计算时间,刷新绘制

为什么要做项目组件化,组件之间的通信怎么处理

包大小瘦身和打包工具做了哪些事情

线下卡顿怎么排查,用哪些工具

线上问题怎么排查,需要什么信息,怎么获取

Android中inflate一个View的流程

解析xml
createViewFromTag
反射出类
添加到布局里面

Android怎么在xml里添加一个引用不到的自定义View

使用<view>标签,然后添加class
LayoutInflater添加Factory,自定义标签

网络请求会经历哪几个流程,怎么排查网络问题

DNS解析
TCP链接
HTTPS加密过程
数据传输

有没有自己封装过长链接,你们用的网络框架是什么

简单讲一下OKHTTP,它有哪些默认的拦截器

-   `RetryAndFollowUpInterceptor`

**第一个接触到请求,最后接触到响应(U型调用)** ;负责判断是否需要重新发起整个请求

-   `BridgeInterceptor`

    补全请求,并对响应进行额外处理

-   `CacheInterceptor`

    请求前查询缓存,获得响应并判断是否需要缓存

-   `ConnectInterceptor`

    与服务器完成TCP连接

-   `CallServerInterceptor`

    与服务器通信;封装请求数据与解析响应数据(如:HTTP报文)

怎么统计整个APP的页面启动时长

HOOK,通过HOOK ActivityThread的Handler消息处理,拦截生命周期相关的逻辑。