客户端知识点
1、OkHttp的原理
okhttp主要分为五个层次,分别是接口层、协议层、连接层、缓存层、拦截器层。
接口层主要用于接受用户的网络请求并进行分发,主要包括okhttclient、Call和分发器,okhttclient主要负责发送网络请求,分发器内部维护了一个请求队列和线程池,在请求队列中把异步请求进行排队分类。
协议层主要负责处理协议逻辑,采用哪种协议,http1还是http2
连接层中有一个连接池,统一管理所有的连接,当用户发起一个网络请求时,先从连接池里面查找有没有符合要求的连接,如果有直接复用,没有就新创建一个连接。
缓存层主要维护请求缓存,在本地查找符合要求的网络请求缓存。
拦截器层主要包括
RetryAndFollowUpInterceptor(重试和重定向拦截器) 第一个接触到请求,最后接触到响应;负责判断是否需要重新发起整个请求;完成两件事情:重试与重定向。 BridgeInterceptor(桥接拦截器) 补全请求,并对响应进行额外处理 CacheInterceptor(缓存拦截器) 请求前查询缓存,获得响应并判断是否需要缓存 ConnectInterceptor(链接拦截器) 与服务器完成TCP连接 (Socket) CallServerInterceptor(请求服务拦截器) 与服务器通信;封装请求数据与解析响应数据(如:HTTP报文)
2、Android常用布局的优缺点和区别
https://blog.csdn.net/weixin_47118034/article/details/126341392
https://yifan-online.com/zh/km/article/detail/10631
3、recyclerview回收和复用机制
https://www.jianshu.com/p/467ae8a7ca6e
相册项目难点:recyclerview优化,扩大第二级缓存,设置为相册中一行item的数量
4、项目难点、亮点
camera2预览延迟优化
- 相机预览优化:使用相机预览时,可以通过调整预览尺寸、帧率和格式等参数来提高预览的流畅度。可以使用Camera API或者更高级的Camera2 API来控制相机参数。
https://www.jianshu.com/p/354674556f0e
大图加载
https://blog.csdn.net/EthanCo/article/details/131337046
5、activity a 跳转到 b 生命周期是怎么样变化的
1、A的onPause()方法被执行。
2、B的onCreate()方法,onStart(),onResume()方法被顺序执行。
3、如果B是不透明的,A将会完全被隐藏,此时A完全不可见,A的onStop()方法就会被执行。
https://blog.csdn.net/weixin_34375233/article/details/93324462
6、FrameLayout B覆盖A,都设置了点击事件,用户点击,谁会响应
B会响应,根据事件分发逻辑
7、activity window view的关系
Window相当于一个容器
https://blog.csdn.net/Dakaring/article/details/130898103
区别和联系
https://www.jianshu.com/p/42c4fa44b674
8、动态代理
动态代理分为三个部分:接口、目标类(实现接口的类)、代理类(动态代理中代理类只有一个,采用invoke反射执行目标类中的方法)
9、retrofit详解
retrofit为什么要采用动态代理:不同的请求会定义不同的接口,使用动态代理可以使所有实现接口的目标类的方法的调用都经过同一个method.invoke方法,这样就避免根据不同的请求定义大量的方法。https://zhuanlan.zhihu.com/p/636759118
retrofit构建过程中各个函数的含义 https://zhuanlan.zhihu.com/p/570564779
retrofit为什么要结合rxjava使用 https://www.jianshu.com/p/6c8efb7e806a
10、binder驱动原理实现详解
https://blog.csdn.net/2401_84123277/article/details/137530258
11、哪些情况下会导致OOM问题
https://juejin.cn/post/6844903850525065229?searchId=20240512174801D2E690F9AB4CD363F613
12、kotlin协程入门
https://juejin.cn/post/6908271959381901325?searchId=202405132138531EC7130B2BC38F03EC4C