6、运行:dalvik&asm&hook

164 阅读2分钟

欢迎进入深水区。

面试如果推进到这些知识点,我基本可以确定恭喜通过技术面试了。一般常规的面试到达这些地方都是放飞自我,相互讨论,自由问答的时候了。

关于dalvik机器,基本上涉及的面试问题有下面一些:

  • dalvik与jvm的区别异同?dalvik与art的异同?
  • dalvik/jvm的内存模型是怎么样的?
  • 静态变量存储在内存的什么区里面?在int i = 16代码中,对象都存储在什么地方?
  • gc的常规算法有哪些?内存对象回收至少经过多少次gc?gc的流程是怎么样的?
  • finalize方法是否一定会执行?引用队列有什么用?
  • jni的调用过程?jni函数注册方式?
  • jit和aot是什么意思?
  • ......

关于asm的一些面试问题:

  • asm苦的设计模式是怎么样的?
  • 使用asm怎么做代码/方法/属性的删除?
  • dup2_x2这个字节码是什么意思?
  • invokedynamic用于什么场景?
  • 请使用asm设计指定方法耗时的监控?或者方法调用链路跟踪?
  • 你接触过的字节码插入的库有哪些?请介绍一下/请比较一下。
  • ......

hook技术相关的一些问题:

  • 动态代理/静态代理机制怎么玩?譬如ams、pms这些如何实现动态代理?
  • xposed框架有没有使用过?请介绍一下。
  • plt-hook技术原理?
  • inline-hooke技术原理?
  • 两种native相关的hook技术比较?
  • apk反编译,重打包,反调试?
  • 游戏产品的渠道重打包分发如何做?
  • 如何利用hook技术监控bitmap内存占用?app的内存泄漏监控?
  • ......

如果有兴趣的同学请自行探索,以上的问题一般情况下都是有实际使用经验的同学会触及,也就是踩过坑的同学会印象深刻。学习对应的知识,应用特定的三方库,解决具体的问题。