这是一份来自大洋彼岸的面经,作者 Saumye Srivastava 在 Flipkart 做过面试官,面试过优步、微软和谷歌等公司以及一些初创公司之后,他为 Android 的面试者准备了一份清单。
“The ability to ask the right questions is more than half the battle of finding the answer”
- Thomas Watson
Questions
Layout Inflater是如何将XML解析成View的?属性是如何读取以及生效的?以及一个View在完全展示到屏幕前需要经过哪些步骤?- 说一说你对
findViewById的了解?给定2个View视图引用,您将如何查找它们的祖先视图? - 详细解释下当你点击屏幕时触发了哪些
listeners,包括它们执行的先后顺序?以及子布局和父布局之间的事件处理机制。 Thread、Handler、Looper、MessageQueue是什么?Android上有哪些不同的并发方法?您能解释一下ExecutorService与CachedThreadPool、FixedThreadPool、AsyncTasks与HandlerThreads之间的区别吗?Android上的垃圾回收是如何工作的?解释计数、标记和扫描三种垃圾回收算法的含义。- 思考并列出应用程序组件和服务之间通信的所有方式?
- 什么时候使用
bindService?ServiceConnection是什么?绑定服务时的内部工作原理。 - 使用
Messenger和AIDL有什么区别?使用AIDL进行进程间通信有什么好处? In-memory vs Bundle vs SharedPrefs vs Database,你是如何使用的?- 列出所有你能想到的减少
apk大小的方法。 ANR、掉帧和冻结帧是如何引起的,它们有什么不同?Proguard/R8的3个步骤是什么,如何启用和禁用它们?- 什么是
consumer proguard,它与proguard有何不同? - 对于一个经过 Proguard/R8 混淆 apk ,如何能查看到不混淆的堆栈调用日志?
SharedPrefs的commit和apply方法有什么区别?SharedPrefs与Databases哪个性能更好?- 如何实现一个可被观察的
SharedPrefs或Databases,比如监听键/表/查询? Android上进程间的数据共享和控制共享有何不同?以及如何实现?Serializable和Parcelable有什么区别?Serializable的缺点是什么?- 在
apk中保护api密钥有哪些方式? - 什么是
middle attack?如何保护您的api不受它和其他攻击的影响? - 详细解释
Android打包过程?什么是R.java、resources.arsc、manifest merging & signing? app bundle和apk有何不同?什么是build flavours?它们与product flavours有什么不同?Activity & Activity,Fragment & Fragment和Activity & Fragment的通信方式有哪些?Activity的启动模式之间有什么区别?viewholder模式是什么?在ListView中你是如何实现的?解释下RecyclerView中实现监听的最佳方式。RecyclerView的性能优化方式有哪些?RecyclerView中如何实现一个Sticky header?- 数据集中的更改如何反映在
RecyclerView中?什么是DiffUtil? Java中的反射是什么?为什么建议尽量少用?Java中的泛型是什么?在什么情况下它们有用?您如何限制它们?- 什么是
Android中的Content Provider?您如何访问它提供的内容? - 在分隔文件的数据集上实现
Content Provider有可能吗? Android上的数据库是如何存储数据的?什么是ORM & Data Access Object?优化数据库读、写和更新的方法有哪些?SQLite的线程安全性如何?表级锁还是数据库级锁?- 什么是依赖注入模式(
Dependency Injection Pattern)?它与服务注册模式(Service Registry Pattern)相比如何? Dagger和Koin是什么?它们内部是如何工作的?- 在处理
webview时,安全性有哪些问题。 unit测试和instrumentation测试的区别是什么?Mockito vs RoboElectric?Android下的CI/CD是什么?在代码合并、测试、发布和推出之前,您经历过哪些流程审核?
最后大家可以讨论下国外的面试跟国内的面试考察重点有哪些区别。