Android面试好文章android面试准备Android

阿里p7岗Android面试技术点,你能答上几个?

2021-02-03  本文已影响0人  木木玩Android

1、如何进行单元测试,如何保证 App 稳定 ?

要测试 Android 应用程序,通常会创建以下类型自动单元测试

2、Android 中如何查看一个对象的回收情况 ?

3、Apk 的大小如何压缩 ?

xxhdpi,两套的话就加上 hdpi),然后再对剩余的图片进行压缩(jpg 采用优图压缩,png 尝试采用pngquant 压缩)

会同时引入 armeabi、armeabi-v7a 和 x86 这几种类型,这里可以只保留 armeabi 或 armeabi-v7a 的其中一个就可以了,实际上微信等主流 app 都是这么做的。 - 只需在 build.gradle 直接配置即可,NDK 配置同理

4、如何通过 Gradle 配置多渠道包?

5、插件化原理分析

需要先通过插件的 ClassLoader 加载该类再通过反 射调用其方法。插件化框架一般会通过统一的入口 去管理对各个插件中类的访问,并且做一定的限制。 - 若使用单 ClassLoader 机制,主工程则可以直接通过类名去访问插件中的类。该方式有个弊端,若两个不同的插件工程引用了一个库的不同版本,则程序可能会出错。

有插件和主工程的路径,因此生成的Resource 可以同时访问插件和主工程的资 源。但是由于主工程和各个插件都是独立编译的,生成的资源 id 会存在相同的情况,在 访问时会产生资源冲突。 - 独立式:各个插件只添加自己 apk 路径,各个插件的资源是互相隔离的,不过如果想要实现资源的共享,必须拿到对应的 Resource对象。

6、组件化原理

App 是主 application,ModuleA 和 ModuleB 是两个业务模块(相对独立,互不影响),Library 是基础模块,包含所有模块需要的依赖库,以及一些工具类:如网络访问、时间工具等

7、跨组件通信

型)。 - 第二种是组件之间的自定义类和自定义方法的调用(组件向外提供服务)。 - 跨组件通信方案分析: - 第一种组件之间的页面跳转实现简单,跳转时想传递不同类型的数据提供有相应的 API 即可。 - 第二种组件之间的自定义类和自定义方法的调用要稍微复杂点,需要 ARouter 配合架构中的 公共服务(CommonService) 实现: - 提供服务的业务模块: - 在公共服务(CommonService) 中声明 Service接口 (含有需要被调用的自定义方法), 然后在自己的模块中实现这个 Service 接口, 再通过 ARouter API 暴露实现类。 - 使用服务的业务模块: - 通过 ARouter 的 API 拿到这个Service 接口(多态持有, 实际持有实现类), 即可调用 Service 接口中声明的自定义方法, 这样就可以达到模块之间的交互。 - 此外,可以使用 AndroidEventBus 其独有的Tag, 可以在开发时更容易定位发送事件和接受事件的代码, 如果以组件名来作为 Tag 的前缀进行分组, 也可以更好的统一管理和查看每个组件的事件, 当然也不建议大家过多使用 EventBus。

8、组件化中路由、埋点的实现

用使用的状况

9、Hook 以及插桩技术

10、Android 的签名机制?

11、v3 签名 key 和 v2 还有 v1 有什么区别

12、Android5.0~10.0 之间大的变化

13、说下 Measurepec 这个类

14、请例举 Android 中常用布局类型,并简述其用法以及排版效率

        *   对于嵌套多层 View 而言,其排版效率:**LinearLayout = FrameLayout >> RelativeLayout**

15、区别 Animation 和 Animator 的用法,概述其原理

16、使用过什么图片加载库?Glide 的源码设计哪里很微妙?

17、如何绕过 9.0 限制?

18、用过哪些网络加载库?OkHttp、Retrofit 实现原理?

19、对于应用更新这块是如何做的? (灰度,强制更新、分区域更新)

20、会用 Kotlin、Fultter 吗? 谈谈你的理解

最后

整理了一套大厂Android岗高级面试题资料,有需要的朋友可以 点赞+评论 后,击这里自取

上一篇下一篇

猜你喜欢

热点阅读