面试
cnflyhz
这个作者很懒,什么都没留下…
展开
-
泛型的优缺点
函数签名:泛型的缺点,泛型必须要基本类型对象,涉及到装箱拆箱的开销因为擦除了,所以无法当作真实类型,都是object泛型擦除的好处,因为类型最后都加载到方法区。拓展泛型需要类的实例,静态方法不需要累的实例...原创 2021-04-21 22:49:45 · 840 阅读 · 0 评论 -
ViewModel在横竖屏切换的时候数据是怎么保存的
Activity在onDestroy会尝试对ViewModelStore清空。如果是由于ConfigurationChanged带来的Destroy则不进行清空,避免横竖屏切换等造成ViewModel销毁。原创 2021-04-19 14:58:43 · 754 阅读 · 1 评论 -
APK加固的原理
目前看,APK都会进行加固在上市场,或者进行签名的二次校验,防止被反编译二次打包。目前市场上有很多应用加固的第三方,但就其原理都是以下这三点:1. 提供需要加固的APK(源APK)。2.壳程序APK(进行解密源APK及加载APK)。3.对源APK进行解密和对壳程序APK的DEX 合并。我们拿到需要加密的Apk和自己的壳程序Apk,然后用加密算法对源Apk进行加密在将壳Apk进行合并得到新的Dex文件,最后替换壳程序中的dex文件即可,得到新的Apk,那么这个新的Apk我们也叫作脱壳.原创 2021-04-19 13:47:57 · 411 阅读 · 0 评论 -
Walle打包的原理
为什么要用 Walle?答:因为打包快。为什么会打包快呢?答:谷歌其实也提供了 meta data ,但你改变 meta data 中的渠道数据,需要再次打包,会很慢,做重复性的工作也很枯燥。这是后就出现了 Walle , 因为Walle只需要打一个包,然后解析这个包,在 MEAT_INFO下会有一个文件,在这个文件中写入渠道,然后再app 启动的时候读取这个渠道就可以统计到这个APK是在那个平台(渠道)下载的了。这样绕过了,APK打包也绕过了APK签名。...原创 2021-04-19 13:40:00 · 478 阅读 · 0 评论 -
JAVA中的方法分派
问题剖析:怎样理解Java中的方法分派?解析:顾名思义就是把方法分出去(多太、重载、重写)就是确定调用谁的、哪个方法 针对方法重载的情况进行分析 针对方法覆写的情况进行分析方法分派示例classSuperClass { public String getName(){ return "Super"; }}class SuperClass extends SuperClass { public String getName(){..原创 2021-04-13 22:54:12 · 129 阅读 · 0 评论 -
Binder的实现原理
Binder是在安卓中跨进程通信的一种方式。它是典型的C/S架构。说到跨进城就得提到序列化。序列化:是指将一个对象转化为二进制或者是某种格式的字节流,将其转换为易于保存或者网络传输的格式的过程。PS: 静态变量是属于类的,不属于对象,因此是不会被序列化的。反序列化:将字节重建为一个对象的过程。序列化的两个方法: Serializable | parcelableSerializable Java 中使用的方法。使用简单,但是开销大。(存储设备,或者网络传输)parcela原创 2021-03-28 22:24:25 · 158 阅读 · 0 评论 -
内部类及匿名内部类相关
1.Java中内部类的写法:// 内部类public class CustomView extends View { class Test { private void setView(){ } }}// 匿名内部类setOnClickListener(new View.OnClickListener(){ @Override public void o原创 2021-03-14 19:05:32 · 69 阅读 · 0 评论 -
面试必问的问题
1.kotlin 的高阶函数的原理2.kotlin 扩展函数的原理3.数据结构4.动画及view的绘制原理流程展示到界面上5.handler原理6. 插件化组件化7.跨平台 flutter8.图片加载的原理9. 性能优化:卡顿优化、网络优化、电量优化、内存优化、冷启动优化、包体积优化10.第三方框架源码的原理...原创 2021-03-13 18:37:42 · 67 阅读 · 0 评论 -
安卓网络协议相关知识点
网络连接的类型:1.单工:在通信过程的任意时刻,信息只能由一方A传递到另一方B,比如无线广播。2.半双工:在任意时刻,信息即可由A传到B,又能由B传A,但只能由一个方向上的传输存在。 比如:Http协议,同一时刻数据只能单向流动,客户端向服务端请求数据或者服务端向客户端相应数据。3.全双工:在任意时刻,线路上存在A到B和B到A的双向信号传输。 例如: Socket协议、Websocket协议、电话Socket的协议是支持全双工的,发送数据的同时也可以接收数据。...原创 2021-03-07 16:11:03 · 180 阅读 · 0 评论 -
点击一个图标到这个应用启动的全过程
点击图标后通过startActivity远程调用到ams中,ams中将新启动的activity以activityrecord的结构压入activity栈中,并通过远程binder回调到原进程,使得原进程进入pause状态,原进程pause后通知ams我pause了。ams再根据栈中activity的启动intent中的flag是否含有new_task的标签判断是否需要启动新进程,启动新进程通过startProcessXXX的函数。启动新进程后通过反射调用ActivityThread的main函数,main函原创 2021-02-09 16:26:56 · 439 阅读 · 0 评论 -
APP冷启动优化
原则: 初始化过程,按需初始化,不是必须的就往后挪。 避免长时间的同步操作。 用户操作感知及时性。 1.检测有些第三方的包,可以在启动后在初始化。2.可以把耗时初始化放到子线程操作,创建一个线程池。3.不要在onCreate()创建对象等操作。...原创 2020-06-21 19:35:35 · 140 阅读 · 0 评论 -
理解 ClassLoader
类加载也是高频面试话题,系统提供的一般有:引导类加载器(Bootstrap ClassLoader)、拓展类加载器(Extensions ClassLoader)、应用程序类加载器(Application ClassLoader)。除此之外也可以自定义类加载器接下来是一个高频面试点:双亲委托模式:类加载器查找 Class 所采用的是双亲委托模式,所谓双亲委托模式就是,首先判断该 Cla...原创 2020-04-20 11:56:16 · 188 阅读 · 0 评论 -
安卓适配的面试题
先抛出几个面试题:1.在Android 开发的时候,对于 UI 稿的 px 是如何适配的?答案:把 px 转化成 dp 在进行适配,在安卓中官方是这样定义dp 的 dp = dip/160, dip 是像素密度,不同分辨率下 dpi 是不一样的dpi:屏幕像素密度,指的是在系统软件上指定的单位尺寸的像素数量,它往往是写在系统出厂配置文件的一个固定值;ppi:也是屏幕像素密度...原创 2020-04-15 15:25:58 · 482 阅读 · 1 评论 -
APK瘦身
APK瘦身:1. 减少 Assets 目录下的文件,有的html可以通过接口获取2. 删除无用so文件,根据CPU引入so文件3. 压缩图片,使用webp格式下的图片4.混淆5.压缩APK6.打包剔除无用资源7.动态下载图片分目录放置图片:不同分辨率的图片应该放到不同的目录下面,如果放错了图片,对于APP运行时内存大小有一定影响。如果把一个本来应该放在...原创 2020-04-15 09:42:17 · 370 阅读 · 0 评论 -
JVM、内存相关问题
在 Java 中可以作为GC Roots 的对象主要有以下几种:1.Java 栈中引用对象。2.本地方法栈中 JNI 引用的对象。3.方法区中运行时常量池引用的对象。4.方法区中静态属性引用的对象。5.运行中的线程6.由引导类加载器加载的对象7.GC控制的对象...原创 2020-03-26 12:36:45 · 255 阅读 · 0 评论 -
HashMap面试知识点
1.hashMap HashTable hashSet 区别2.hashMap为什么线程不安全。多线程下可能有哪些问题?答案:https://www.jianshu.com/p/e6367828631a2个put会同时扩容造成死循环(链表有环)可能有2个同时put,导致1个丢失,被后面的put覆盖了。一种情况是2个线程,1存1取,A刚存完key1value1,还没等B取值...原创 2020-04-15 09:44:23 · 300 阅读 · 0 评论 -
View怎么显示在界面上的
View怎么显示在界面上的,其实面试官想问Activity 与 Window 与 View 之间的关系,把这三者间的问题说清楚,在总结一下其实就差不多了,可以在把LayoutInflater.from(mContext).inflate(resId, contentParent) 讲讲,基本上达到面试官的期望值了。先创建 Activity ,然后再Activity 中创建一个Ph...原创 2020-03-24 16:30:02 · 646 阅读 · 1 评论 -
volatile相关面试点
目录并发编程的三个重要特性1.volatile 的原子性、可见性、有序性2.volatile 深入解析3.volatile 和 synchronized并发编程的三个重要特性1. 原子性:在一次操作或者多次操作中,要么所有的操作全部得到执行并且不会受到任何因素的干扰而中断,要么所有的操作都不执行。2. 可见性:当一个线程对共享变量进行了...原创 2020-03-08 13:23:19 · 158 阅读 · 0 评论 -
Handler 面试相关
Handler机制整体流程;Looper.loop()为什么不会阻塞主线程;IdHandler(闲时机制);postDelay()的具体实现;post()与sendMessage()区别;使用Handler需要注意什么问题,怎么解决的?https://www.jianshu.com/p/a77af781f678第一个问题?loop在没有消息的时候会沉眠,释放CPU,只有在有消息的时候在...原创 2020-03-07 17:55:18 · 649 阅读 · 2 评论