01.走进Jetpack架构组件库 走进Jetpack架构组件库一、什么是Jetpack1、面试概括Jetpack是众多优秀组件的集合;是谷歌在2018年I/O大会上推出的一套引领Android开发者逐渐统一开发规范的架构。 2、系统介绍Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。 Jetpack包含与平台 2021-05-07 Jetpack
面试题十八:如何跨App启动Activity?有哪些注意事项? 如何跨App启动Activity?有哪些注意事项?一、面试官视角:这道题想考察什么? 是否了解如何启动外部应用的Activity 是否了解如何防止自己的Activity被外部非正当启动 是否对拒绝服务漏洞有了解 如何在开发时规避拒绝服务漏洞 二、题目剖析1、如何启动外部应用的Activity 共享uid的App 12345<manifest xmlns:android="ht 2021-04-30
面试题十七:Activity的启动流程是怎样的? Activity的启动流程是怎样的?一、面试官视角:这道题想考察什么? 是否熟悉Activity启动过程中与AMS(Activity Manager Service)的交互过程 是否熟悉Binder通信机制 是否了解插件化框架如何Hook Activity启动 阐述Activity转场动画的实现原理 阐述Activity的窗口显示流程 二、题目剖析0、Activity跨进程启动 跨进程启动流程 2021-04-29
面试题十六:只有C、C++可以编写JNI的Native库吗? 只有C、C++可以编写JNI的Native库吗?一、面试官视角:这道题想考察什么? 是否对JNI函数绑定的原理有深入认识 是否对底层开发有丰富的经验 二、题目剖析1、只有C、C++可以编写JNI的Native库吗? 当然不是,关键就要看底层的Native程序它是个so库,编写出来之后它和C、C++其实没啥关系! 2、Native程序与Java关联的本质是什么? 关联的本质就是映射的方法,静 2021-04-29
面试题十五:如何全局捕获Native异常?(待完善) 如何全局捕获Native异常?一、面试官视角:这道题想考察什么? 是否熟悉Linux的信号 是否熟悉Native层任意位置获取jclass的方法 是否熟悉底层线程与Java虚拟机的关系 通过实现细节的考察,确认候选人的项目经验 二、题目剖析1、如何捕获Native异常? 捕获Native异常 Native异常每次都能看到signal(信号),那我们直接捕获signal就好了。 12345 2021-04-29
面试题十四:JNI如何实现数据传递? JNI如何实现数据传递?一、面试官视角:这道题想考察什么? 是否有Native开发经验 是否对JNI数据传递中的细节有认识 是否能够合理的设计JNI的界限 二、题目剖析1、传递什么数据? 2、如何实现内存回收? 3、性能如何? 4、结合实例来分析更有效 举例一:在Java层有个Bitmap(Bitmap.java)类,在Native层也有一个类(Bitmap.h/cpp)与之对应,那么这两者如何 2021-04-27 面试
面试题十三:Java Native方法与Native函数是怎么绑定的? Java Native方法与底层Native函数是怎么绑定的?一、面试官视角:这道题想考察什么? 是否有Native开发经验 Java Native方法只是声明,没有实现,底层Native函数才是实现。 是否面对知识善于发现背后的原因 二、题目剖析1、静态绑定:通过命名规则映射 12345678910111213package io.github.apkok.nativec;public 2021-04-27 面试
面试题十二:CPU架构适配需要注意哪些问题? CPU架构适配需要注意哪些问题?一、面试官视角:这道题想考察什么? 是否有Native开发经验 是否关注过CPU架构适配 是否有过含Native代码的SDK开发的经历(包括如何为他人提供so库) 是否针对CPU架构适配做过包体积优化 涉及包含哪些CPU架构的so库,如果包含得多了话,那么包体积肯定很大,那针对这种情况有没有过类似的优化。 二、题目剖析1、Native开发才会关注CPU 2021-04-27 面试
面试题十一:如何在Android中写出优雅的异步代码? 如何在Android中写出优雅的异步代码?一、面试官视角:这道题想考察什么? 是否熟练编写异步和同步的代码 是否熟练回调地狱 是否能够熟练使用RxJava 是否对kotlin协程有了解 是否具备编写良好的代码的意识和能力 二、题目剖析:1、什么是异步? 12345678910111213// 异步就是,代码并不是按照你写的这种方式顺序执行的,比如sendRequest执行完成之后,就会跑到代码最 2021-04-26 面试