Android面试总结
以下是自己在面试过程中经常遇到的一些面试问题,特总结一下高频会问到的:
Handler机制,这个问题问的频率是非常的高
App内存优化
App内存泄露,你常用的内存泄露检测工具,归根究底内存泄露的原因,你是如何处理的
App性能优化
常见的设计模式,单例模式(必须掌握),以及单例模式的好处等等….
MVC,MVP,各代表什么等等….,你平常项目中用的是哪种。
单个listview item高频率的刷新处理,看清楚,是高频率的,举个例子就好像多个下载任务,带进度条的那个刷新。
支付相关,支付宝支付,微信支付,银联比较问的少。
图片处理解决方案,三级缓存,自己写的还是使用的第三方,除过ImageLoader,bitmapUtils,还需要自己掌握了解Glide、、Fresco、Picasso等
- 一些网络工具,比如手volley,okhttp等等
RXjava这个东西有时候也问
还有就是关于java这块了,比较喜欢问多线程、string 与 new stirng(),这块赋值问题
Android view 更新,invalidate ,postinvalidate,requestLayout();
**其实android中实现view的更新有两种方法,一种是invalidate,另一种是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 鉴于此,如果要使用invalidate的刷新,那我们就得配合handler的使用,使异步非ui线程转到ui线程中调用,如果要在非ui线程中直接使用就调用postInvalidate方法即可,这样就省去使用handler的烦恼。
**当view确定自身已经不再适合现有的区域时,该view本身调用这个方法要求parent view(父类的视图)重新调用他的onMeasure onLayout来重新设置自己位置。特别是当view的layoutparameter发生改变,并且它的值还没能应用到view上时,这时候适合调用requestLayout()。HashMap和Hashtable和HashTree的区别
写个冒泡排序法,快速排序法,说说二分查找的原理,以及二分查找的特性
谈谈http与https区别
谈一下线程池,以及平时在开发中的使用