年底了,很多人都会考虑是否换一份工作,我整理了一点能想到的Android面试题目,虽然有半年多已经完全没做Android了。也看看自己还能想起哪些?


1、本地广播和全局广播有什么差别?

2、Broadcast注册方式与区别 

(1)静态注册(2)动态注册 ,什么情况下用动态注册?

3、http与https的区别?https的实现原理?为什么要用https?

4、用过哪些进程间通信的方式 

(1)AIDL,(2)广播,(3)Content Provider

5、三级缓存

(1)内存缓存,(2)本地缓存,(3)网络 

6、用过mvp框架么?mvvm是什么?mvp是什么?为什么会出现mvvm?

7、说下View,ViewGroup事件分发机制?

8、做过哪些性能优化?

(1)渲染优化,(2)内存优化,(3)耗电优化 

9、内存泄漏原因?如何避免内存泄漏?

10、Android内存管理是怎样的?

11、Java内存模型,介绍下?

12、TCP握手协议是怎样的?

13、Service 是否在 main thread 中执行, service 里面是否能执行耗时的操作? 

14、Serializable 和 Parcelable 的区别

15、String,Stringbuffer,Stringbuilder 区别 

16、Binder机制原理,Android为什么要采用 Binder 作为 IPC 机制?

17、Android中的几种动画介绍下

18、加载大图,你是怎么做的?

19、ANR是什么?怎么避免ANR?

20、为什么要用 ContentProvider?它和 sql 的实现上有什么差别?

21、SurfaceView和View的区别是什么?

22、Dalvik虚拟机与JVM有什么区别?

23、线程间的通信方式?不是进程间。 


以上这些只是抛出问题,真正面试中,尤其是大公司中面试,没有固守成规的问法:

举例:抛出一个问题。

是否使用过volatile?你觉得它是线程安全,还是不安全的?如果你答安全的,我会继续问你,为什么?然后我再问你是否使用过synchronized?

它和volatile区别是什么?如果你答不安全,我依然继续问你,为什么?

再抛出一个问题。

有用过Java哪些并发容器,如CopyOnWriteArrayList、ConcurrentHashMap等,如果你答第一个,我会问你使用时需不需要加锁,你说要?我会问为什么?

不要,也会问为什么?然后再问它的原理是怎样?当然还可以持续问很多。如果你答第二个,我会问,ConcurrentHashMap的内部结构是怎样?如果你能说到链表,我会继续问,什么时候链表会变成红黑树?或者什么时候用的是链表,什么时候用的是红黑树?


如果一面,10个问题答对6个以上,基本上就过了。二面的话。会持续再深挖,抛出一个问题,或是你项目中遇到了的一些问题。如果你不了解,那么就再问其他方面问题。持续深挖。看能掏出多少满意的东西。三面会从更小细节去问。基本要答对80%的问题,才会过,否则还是没过。因为关系能否到HR面。通常来说一轮过了,2-3天会有人继续面你,否则就是没过。也不会有通知。可以选择考虑其他公司了。不是能力不行,只能说双方不适合,或者候选人没有呈现自己牛逼的地方。


顺便说下:人工智能兴起,把python开发人员拉的需求量非常大,有想学习python的,这里有一份免费学习python资料领取。