1、拷打项目。具体介绍一下无障碍权限。项目中gemini是干什么的?如何实现版本更新提醒的?如果提示更新时发生异常,比如网络状况不好,怎么处理?网络请求怎么实现的,用了第三方库吗?(OKHTTP3)了解过这个库的原理吗?(没有)那你具体用了库中的哪些方法?
2、安卓中view绘制的过程经历了哪些阶段、哪些函数?
3、了解过安卓中UI控件分发的机制吗?在relative layout中有一个button,点击button,事件是怎么转发的?
4、从点击安装apk,到icon出现在桌面上,这个过程中系统发生了哪些事?从icon出现在桌面上,到应用的界面出现,又经历了什么过程呢?activity调用onCreate之前发生了什么?
5、知道AFS(Andrew File System)和PFS(没听清,也查不到)吗?
6、介绍一下Java中的反射机制。(拿了一个题,写Java反射的示例)。反射最主要的特点是什么?
7、了解Java中的String类是怎么实现的吗?
8、在你的安卓项目中遇到过内存泄漏吗?有哪些技术,如果使用不好可能会引起内存泄漏?
9、了解过安卓里的handler吗?handler会引起内存泄漏吗?如果handler不指认线程,那它会在哪个线程上?
10、介绍一下面向对象的特点。你了解哪些面向对象的设计原则?了解过单一职责原则、迪米特法则、依赖倒置吗?
11、设计模式从哪学的?写一下你写过的最全面的单例模式。
12、了解过HashMap的底层原理吗?是单一地用红黑树吗?什么时候会转化成红黑树呢?(链表长度大于8)为什么是8个?
13、了解过HTTPS吗?加密用的什么机制?
14、进程和进程的区别是什么?协程和进程的区别是什么?了解进程间通讯吗?
15、算法 毒蘑菇、找出string B中的所有字母是否在string A中
很注重知识的全面性,经常追问“还有吗”
反问:
技术栈是什么?(Java+Swift)
如何提升算法能力?(其实不太重要,针对面试就是贪心、DP)