答:不能,由于它是一个final类,一样的还有Integer,Float,Boolean,Byte,Character,Long,Short等等,也就是说,全部基本类型的包装类都是final类,没法被继承或修改html
如何安全的退出一个已经开启多个activity的APP
答:在Application中持有一个全局的集合(List),进而在其onCreate()方法添加到这个集合,最终遍历全部的activcity并finish。
ActivityCompat.finishAffinity(this);java
简单的概叙下Handler?
答:andriod提供了Handler 和 Looper 来知足线程间的通讯。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换
1)Looper: 一个线程能够产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。
2)Handler: 你能够构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从Message Queue取出)所送来的消息。mysql
- Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UIthread 一般就是main thread,而Android启动程序时会替它创建一个MessageQueue。
文件的上传?
答:使用HttpURLConnection获得输入流,将文件的经过IO流的方式上传到服务器。可以使用第三方Xutils框架。android
ListView的源码和如何优化Listview?
答:根据ConvertView来判断View的重用仍是新建,新建的话经过ViewHolder来存储全部的控件并设置到View的Tag中有利于下次的复用。面试
AIDL原理?
答:AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。
实现进程间通讯,尤为是在涉及多进程并发状况下的进程间通讯,咱们能够经过AIDL来制定一些规则,规定它们能进行哪些交流。
经过接口的方式建立AIDL文件的后缀是 .aidl,而不是 .java。
建立一个类实现刚才那个aidl的接口,经过预先定义的接口达到两个进程内部通讯进程的目的,在Service中Aidl返回一个Binder对象。算法
Binder机制
Binder是Android的系统进程通许方式之一简称IPC
Binder使用Clinet->Server通信方式,Binder框架定义的四个角色,Server,Client,ServiceManager,以及Binder驱动,其中Server,Client,ServiceManager运行于用户空间,驱动运行于内核空间,Binder驱动程序提供Dev/binder与用户空间交互,Server,Client,ServiceManager,经过open和ioctl文件操做函数和Binder交互。
深刻理解Binder机制sql
TCP和UDP的区别,tcp如何保证可靠的,丢包如何处理?
TCP面向链接,三次握手,发送须要肯定以连接状态(如打电话),辑通讯信道是全双工的可靠信道
UDP无链接,发送数据无需肯定是否链接(如邮差),则是不可靠信道
将文件分块发送,接收端每收到一块数据就发送一个收到确认给发送方(包括收到的数据长度)
发送方在收到接收方发送的“收到确认”后才接着发送下一块数据。。。。
直到整个文件发送完毕。
每块数据都加一个包头,里面能够包含一些标志信息,如:是否全部数据发送完毕(即最后一个包了)
三次握手简单的说就是:(C:客户端,S:服务端)
C:SYN到S 客户端发送SYN(SEQ=1022)报文给服务器端,客户端进入SYN_SEND状态
S:如成功--返回给C(SYN+ACK),回应一个SYN (SEQ=2032)ACK(ACK=1022+1)报文,服务器段进入SYN_RECV状态。
C:如成功---返回给S(ACK) 客户端收到服务器端的SYN报文,回应一个ACK(ACK=2032+1)报文,进入Established状态。数据库
什么是三级缓存?三级缓存原理
答:网络加载,不优先加载,速度慢,浪费流量
本地缓存,次优先加载,速度快
内存缓存,优先加载,速度最快
首次加载 Android App 时,确定要经过网络交互来获取图片,以后咱们能够将图片保存至本地SD卡和内存中
以后运行 App 时,优先访问内存中的图片缓存,若内存中没有,则加载本地SD卡中的图片,最后选择访问网络。编程
Service的两种启动方法,有什么区别 ?
答:1.在Context中经过public boolean bindService(Intent service,ServiceConnection conn,int flags) 方法来进行Service与Context的关联并启动,而且Service的生命周期依附于Context(不求同时同分同秒生!但求同时同分同秒屎!!)。
2.经过public ComponentName startService(Intent service)方法去启动一个Service,此时Service的生命周期与启动它的Context无关。json
View和SurfaceView的区别?
答:SurfaceView中采用了双缓存技术,在单独的线程中更新界面
View在UI线程中更新界面
当程序须要更新View上的图像时,程序必须重绘View上显示的整张图片
新线程没法直接更新View组件
Android的进程优先级
答:android的系统进程分为五个等级, Foreground Process(前台进程), Visible Process(可见进程), Service Process(服务进程), Background Process(后台进程), Empty Process(空进程)
自定义View相关知识,下拉刷新的实现原理?
答:【1】Header 一般有下拉箭头,文字,进度条等元素,根据下拉的距离来改变它的状态,从而显示不一样的样式
【2】Content 这部分是内容区域,网上有不少例子都是直接在ListView里面添加Header,但这就有局限性,由于好多状况下并不必定是用ListView来显示数据。把要显示内容的View放置在一个容器中,若是想实现一个用ListView显示数据的下拉刷新,须要建立一个ListView旋转到容器中。处理这个容器的事件(down,move,up),若是向下拉,则把整个布局向下滑动,从而把header显示出来。
【3】Footer能够用来显示向上拉的箭头,自动加载更多的进度条等。
亦可使用开源PullToRefreshView
在你项目中所用到的第三方?
Volley xUtils okHttp(支持图片上传) ImageLoader RxJava Retrofix dataBing
Google推荐的图片加载库Glide介绍
目前Android在使用的Json解析框架主要有Jackson、Gson、FastJson、org.json;
源码解析
使用 picasso 加载图片;使用 EventBus 同步不一样页面间对象状态
UI框架优化,增长RefreshFragment基类抽取
经过LeakCanary、TraceView等工具进行内存检测,优化内存的使用,构建一套服务业务需求的线程池
熟练掌握okhttp,glide,greenDao等主流框架;
Android中原生HttpClient和HttpUrlConnection来处理网络操做比较复杂,须要咱们处理不少操做:若是图片的缓存和请求的调度。
简单的说下Retrofit的使用流程?
Retrofit2在项目中的完整使用流程:建立Bean类 --> 建立接口形式的http请求方法 --> 经过Retrofit.builder()建立接口对象并调用http方法请求网络数据 --> 在RxJava的Observable(被观察者)中异步处理请求结果!
项目中有没有见过内存泄漏以及OOM?为何会产生?怎么解决的?
内存泄漏它是形成应用程序OOM的主要缘由之一
在android应用开发中,当一个对象已经不须要再使用了,本该被回收时,而另一个正在使用的对象持有它的引用从而致使它不能被回收,这就致使本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了。
全局变量的滥使用,加载对象过大,相应资源过多,来不及释放,资源未关闭形成的内存泄漏。
在内存引用上作些处理,经常使用的有软引用、强化引用、弱引用
在内存中加载图片时直接在内存中做处理,如边界压缩
及时回收不用的对象如Bitmap,IO流。
Android系统的有哪些安全机制?
应用程序签名机制,权限申明机制,访问控制机制,进程通信机制,内存管理机制。
Android-Service和Thread的区别?
service是android四大组件之一,没有任何界面,它不是一个线程,通常在后台默默运行。有本身的生命周期。有本地service和远程service,本地service通常有2中启动方式,startService和bindservice. 远程service就是所谓的AIDL,实现跨进程调用.
thread是java里的一个线程概念,跟service是彻底不一样的。1中说的service特色,thread在android中大多没有。尤为是生命周期和跨进程调用,thread是没有的。
Android图片缓存之初识Glide
Asset目录与res目录的区别
ANR问题,force close问题,activity,service,broadcast各自超过多少秒报ANR
Activity启动模式,intent匹配规则
Android反编译
JNI和native方法
Android系统的有哪些安全机制
Dalvik和ART区别
Android屏幕适配有哪些方法
View事件体系,滑动冲突
View绘制原理,性能问题(view绘制间隔16ms,60fps),measure,layout,draw三大过程
如何避免overdraw
Android动画分类和各自特色
View和SurfaceView的区别
APK瘦身的办法
Android如何获取Crash信息
ANR日志分析
Android动态加载,如何解决方法数越界
Android怎么加速启动Activity
Android内存泄漏问题,内存泄漏分析工具
Android内存溢出问题,图片的三级缓存
Zygote和System进程的启动过程
Activity的启动过程
Android的消息机制,Handler原理
HandlerThread和IntentService的原理和特色
Binder机制原理
一个如何维持一个长链接
如何实现进程保活
Binder底层为何用红黑树,红黑树的原理知道吗
为何选用Glide,原理?
LruCache的原理
Fragment好处,碰到过什么bug,怎么解决的
如何设计一个网络加载框架
Android四大组件的理解
ContentProvider的启动过程
Activity的四种启动模式,用过哪种,为何要用
Service和InentService的区别
View的事件分发和绘制原理
如何解决滑动冲突
多进程通讯的方式
广播的使用
广播的种类
如何解决app卡顿的问题,用到哪些工具
view的绘制流
Android的启动流程、四大组件、listview的运用于优化、MVP、两个activity怎么传输数据,intent是怎么实现传输数据的,闹钟怎么实现
fragment,该怎么用,好比实现相似微信的那种滑动,讲了一下fragment的滑动以及底部状态的切换。以后又问了怎么保存view的数据,当时觉得就是回调生命周期的方法时保存数据,面试官就给我讲了一下如今经常使用了的将顶层的view做为变量而后传递引用,以后切换回来的时候直接在oncreateview里面进行判断便可。
Activity与Fragment的生命周期。
Acitivty的四中启动模式与特色。
Service的生命周期,两种启动方法,有什么区别。
怎么保证service不被杀死。
广播的两种注册方法,有什么区别。
Intent的使用方法,能够传递哪些数据类型。
Thread、IntentService的使用场景与特色。
五种布局:FrameLayout、LinearLayout、AbsoluteLayout、RelativeLayout、TableLayout各自特色及绘制效率对比。
Android的数据存储形式。
Merge、ViewStub的做用。
Json有什么优劣势。
Handler、Loop消息队列模型,各部分的做用。
怎样退出终止App。
Asset目录与res目录的区别。
Android怎么加速启动Activity。
Android中弱引用与软引用的应用场景。
Bitmap的四中属性,与每种属性队形的大小。
Touch事件分发机制。
Android长链接,怎么处理心跳机制。
Zygote的启动过程。
looper是线程级别仍是进程级别
zygote和systemservice的关系
activity四种启动模式
打开一个activity的过程
项目点为何要用view不用fragment?一样fragment能够解决缓存(用了view,而且设了map做为缓存,为了模拟activity栈重制了新的栈来实现相同的回退功能,须要处理连续点击和屡次点击的问题,还须要解决连续点view,缓存增大而oom)
用了什么设计模式?为何要这么用?(举例了观察者+工厂)
谈一下Collection包:hashmap底层实现,用了什么方法解决hash冲突(基于jdk版本),具体是如何实现(jdk1.5链表头插仍是尾插),为何不安全?如何变得安全(concurrent包下集合类),concurrentHashmap实现原理是?
Executor框架说说你的理解?
结束一条Thread有什么方法?interrupt底层实现有看过吗?线程的状态是怎么样的?若是给你实现会怎么样作?
Io和nio有没有了解?
缓存算法除了lru还认识哪一种?
Java中有内存泄露吗?是怎么样的情景?为何不用循环计数?
ANR产生缘由?怎么定位?
ContextImpl的源码使用的设计模式?为何你认为其中有外观?
在一个app中,只有在一张activity,全部功能业务逻辑在里面实现,如今报ANR,你会怎么作?(代码层面:耗时操做(UI、网络、数据库),工具层面:trace和crashHandle)
Android中ClassLoader和java中有什么关系和区别
Activity生命周期?情景:如今在一张act1点了新的act2,周期如何?
Act的launchMode,有没有结合项目用过(本身的程序锁和微信的PC端登录对比,不过我如今又发现,应该大约估计多是动态加载的一个缺陷,若是有找到相关信息,请务必跟我说。具体问题就是,当在PC端登陆时,Android终端的微信会跳出,即便wechat的task不是在fore,当按下确认,返回的是wechat,而不是本身先前的app)
View的绘制原理,有没有用canvas本身画过ui?
动态加载主要问题
Assetmanager获取资源原理和资源获取原理
项目Oom异常解决方案+用户体验优化方案
Touch传递机制+listview滑动冲突
项目如何解决oom?响应速度是怎么优化?电量消耗如何优化?
屏幕适配使用的方案?有没有辅助的工具帮助?(hyviewer)
如何分析内存泄露?(代码+工具traceview+mat)
View树绘制?如何优化布局?
事件传递原理?
屏幕适配接触到什么方法?
java内存泄露是怎么样的?(本质+handler例子)
情景题,把handler设static,里面须要对一个view更新,会不会内存泄露?(可达性分析)
UI接触得多吗?有没有用过canvas画过图?
在项目中为何要用动态加载?最大的问题是什么?怎么解决资源管理问题
描述下Aidl?以为aidl有什么缺陷
两个应用能使用同一个任务栈么?
大图加载
Http && Https
经常使用的加密算法,对称加密和非对称加密
Android里的序列化
两个应用间Binder通讯的原理
OkHttp如何对连接进行复用
如何设计锁
内存泄漏如何发现(用什么工具)
在纸上写了个Activity,而后在类里面定义了一个Handler,问我这个会有警告,怎么解决?--static、软引用
Handler机制,Handler除了线程通讯还有什么做用,这个我说通知吧,由于Android是消息驱动的,不是特别明白面试官要问哪点,难道是延时?
实现一个文件夹列表,面试官要求5000个文件的时候才从ViewGroup转到ListView
ART和Dalvik的区别
批量插入50条联系人,比较高效的方法,ContentProvider是否了解原理
broadcast机制
thread.wait()与thread.sleep()区别
okhttp原理
线程池机制
onSaveInstanceState和onRestoreInstanceState调用的过程和时机,onNewIntent方法
fragment的生命周期,和Activity如何进行通讯
Android的事件分发机制,ACTION_DOWN和后续事件如何消耗
View的绘制流程,MeasureSpec如何工做,父的MeasureSpec和本身的LayoutParams
Handler Looper的使用方式,实现机制,设计的缘由
HandlerThread有没有了解
ThreadLocal是干吗的,使用的地方
Service与Thread区别,这个问题应该是必问的了
SQLite可否并发读取或者写入,本身只记得不能并发写,能够并发读
Activity与Service的通讯问题,这里要对Binder机制和AIDL比较了解,由于本身没在项目中用过,因此回答的不是很好。这个还能够通Broadcast进行通讯。
ViewPager如何判断左滑右滑
android7.0的虚拟机的优化(什么即时编译)
sqlite如何批量插入大量数据,如何提升效率(放到一个事务里)
fragment 和activity之间如何选择(说出本身的理解)
说说推送 ,扯到长链接,心跳包,直接被面试官打断,这个咱们都知道,说说保持一个长链接很简单,为何长链接会带来不少麻烦,还提示从耗电量,微信分析
从listview优化谈到recyclerview,深刻分析一下recyclerview特色 ,而后引伸到瀑布流如何实现,不使用recyclerview如何实现瀑布流。
属性动画
Android中的几种Context什么区别?这个问题我回答的很差,简单说了一下生命周期和Context的继承关系,以及注意事项弹对话框不能使用applicatuion的上下文
接着问我bitmap可否复用?也是3.0之后的有个Option的inbitmap字段能够复用
平时遇到过OOM没?遇到过,主要是图片加载很常见,我讲了BitmapFactory的解析Options的in...bound参数先读取图片信息进行必要的缩放,还有缓存,讲了DiskLruCache、LruCache缓存策略,以及能够加入软引用,讲了底层的LinkedHashMap实现。
自定义控件作过哪些,须要注意什么?处理wrap_content的状况,ondraw不能耗时,刷新率16ms等,而后让我讲了一下圆角矩形的图片控件怎么作,降到了画笔的xferm...方法进行图面交叠。
view和viewGroup区别
内存溢出处理
Activity能运行在别的进程中吗?
Bitmap的recycle方法执行后会当即回收内存吗?
Activity中如何调用另外一个进程Service里的方法?
AIDL的方式能访问另外一个进程Service里静态变量吗?
View的事件冲突的解决办法 ps:重写dispatchEvent()或者touch()方法
讲一下RecycleView与listview的区别
如何解析json数据和xml
RecycleView的优化
几种context的区别
activity关闭后还没有运行完毕的thread会怎么样 ps:会变成空进程线程,优先级最低 很容易被终止回收
图片三级缓存 内存缓存满了怎么办 ps:优先级队列 满了后根据优先级主动删除一部分图片 根据LRU算法肯定优先级
CotentProvider的权限问题,就是怎么样使得数据对外有选择性的提供和使用
Android的存储方式
onTouch事件的处理机制
说一下OOM以及你怎么解决的
viewpager里面只能嵌套view吗 可不能够嵌套Activity
假如viewpager里面的每一页都有有很大数据量的内容,那么在快速的左右滑动时,若是出现了内存被回收的状况,如何处理 假如出现了OOM,怎么处理
同上状况,使用Fragment,又当如何?与viewpager有什么区别ExpandableListView的Adapter怎么写
在ListView的每一个item中若是可能出现的view都不同,如何处理?动态获取view种类数量的话是否是就不能使用viewHolder进行优化?固定显示view若是不存在该种view就不显示的方法是否太耗内存
ListView的Adapter的getView具体是什么机制?
在全屏显示高清大图的时候,网速慢的状况下如何显示?渐进式显示是怎么作到的?若是想显示下载进度圈圈,该如何实现?
说一下HandlerThread
假如你要记录ListView滚动到的位置,要记录什么信息,view怎样得到坐标信息
说一下canvas
dialog和popupwindow的应用场景 若是popupwindow在没有dismiss的时候Activity finish了,会出现什么状况?
Service和推送通知,通知有没有可能出现有推送可是通知栏收不到通知?service被kill掉会如何?如何保证service不被kill掉
Scrollview和ListView有什么类似点 有什么不一样 那若是这两个是继承关系 那应该是谁继承谁?
dp sp px各自的应用场景是什么 换算关系是什么 使用sp的时候若是调整系统字体,显示字体会跟着调整吗?
handler.postAtTime不是延时post么 那handler怎么延时处理Message
一个activity只能有一个进程么【对进程的理解】
夜间主题的实现方式
动态加载原理,classloader理解
listview实现item左滑须要考虑的问题
listview原理,adapter与view是如何绑定的,如何本身设计一个相似listview的自定义view,子item复用,管理以及getView的实现
推送服务原理,心跳机制
ssl协议,握手交换密钥过程,加密算法,对称非对称加密原理
socket编程实现http请求,手写代码实现
处理listview图片错位方式
Java线程 run与start区别,原理实现
打包混淆原理
反编译方式工具及其原理
对称加密与非对称加密
sharepreference原理
动态加载,dex分包,热修复
如何减少apk体积
性能优化从哪几方面考虑(内存,cpu,fps,ddms灵活dump)
加载图片请求的超时时间设置,多少秒合适,缘由,大图如何加载。
应用签名是为了什么,签名原理是什么
root以后有什么重大的变化,开发者能够操做什么
Binder的一次拷贝发生在哪里。
AMS的做用?
Serializable和Parcelable。
canvas画了个线,怎么撤销?
bitmap加载一个100张图片的优化处理
lrucache和disklrucache
隐式启动和显示启动
Service两种启动方式
布局优化相关
一个app可否是多进程
线程池内线程的数量如何肯定
说说OKHTTP的实现
socket
surfaceView
如何进行界面优化
哪些android进程不能被杀死的?
图片压缩方式
cookie和session的区别
虚拟机相关知识
断点续传原理
三级缓存的理解