腾讯高级Android面经:类加载机制、动态代理、JNI调用、AGP插件原理

腾讯高级Android面经:类加载机制、动态代理、JNI调用、AGP插件原理
中级考框架原理,高级考系统底层和造轮子能力。类加载、动态代理、JNI、Gradle插件——四个方向都是高级岗硬通货。面腾讯高级最大感受:面试官爱串联追问。问类加载你讲双亲委派,他追问怎么打破;你说PathClassLoader,他接问热修复怎么利用加载顺序。一个话题串五六层,底子薄一轮露馅。今天8道题,答案给到能接住三轮追问的深度。Q1:Java双亲委派模型?Android怎么打破的?双亲委派:ClassLoader收到请求先委托parent加载,parent向上直到Bootstrap。parent加载不了才自己加载。好处是安全——你写个java.lang.String不会被加载,Bootstrap已加载了系统的。Android打破了。不用JVM用Dalvik/ART,两个核心ClassLoader:PathClassLoader加载已安装APK的dex,parent是BootClassLoader。DexClassLoader加载外部dex/jar/apk,可指定parent。插件化热修复都用它。打破方式:热修复把修复dex放在原dex前面,ClassLoader先找到修复版不加载有bug的原版。利用"找到了就直接返回"特性。Q2:Android类加载完整流程?从Class.forName("com.xxx.Foo")开始:ClassLoader.findLoadedClass看是否已加载过——加载过直接返回委托parent加载(双亲委派)