面试题

List map 二叉树,排序,handle内存溢出,handle原理,handle call back 注解实现原理 。解释context intentservice service 多线程。自定义view。签名文件

多个application 迭代异常 混淆,数据库,数据结构

rxjava refit   mvp mvvm    retrofit原理 【在纸上】

evevtbus原理

https://blog.csdn.net/json_it/article/details/79948484

EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。
作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(Publish/Subsribe),或称作观察者设计模式。
优缺点:

在java项目中,如果不是swing,当要用到事件、通知机制的时,时下最流利的、最简单的方式就是使用

google的guava-EventBus,它简洁、强大、使用方便,最大多数开源爱好者的首选。

       使用EventBus的好处有:

      1.EventBus简洁、强大

      2.不用写回调接口

      3.可以组件、线程间的相互通信

       但是,它也有缺点。比如,事件的处理(侦听)是通过方法的参数类型来确定的。当在项目中,当大量使用EventBus时,跟踪和定位问题,是一件很痛苦的事。

Android消息处理:EventBus、BroadCast和Handler-优缺点比较

Runnable和Callable的区别

https://blog.csdn.net/Liu_yunzhao/article/details/78504287

写出你知道的Object类的方法:

https://www.cnblogs.com/wxywxy/p/6740277.html   https://wenda.so.com/q/1438624864722174?src=140

简述java中的线程监视器作用

监视器用来监视线程,确保同一时间只能有一个线程可以访问受保护的数据和代码。

https://www.cnblogs.com/keeplearnning/p/7020287.html

xml、json

https://blog.csdn.net/xinyuan_java/article/details/66100196

https://blog.csdn.net/a985548426/article/details/76163408

https://blog.csdn.net/mp624183768/article/details/79714085

列举至少3种Support包中提供的布局或工具

简述Material Design中behavior的作用

Material Design的常用组件:

 FloatingActionButton:悬浮按钮

TextInputLayout:输入框(EditText)

Snackbar:Toast

菜单

如何避免Handler造成的内存泄漏?可替代Handler的事件总线框架有哪些?

https://www.jianshu.com/p/f2f186e3dd3e 

EventBus:https://blog.csdn.net/oLevin/article/details/51029957

按自己思路设计一个网络请求框架

WeakReference SoftReference PhantomReference的区别

sleep和wait的区别

ArrayList和LinkList的区别

简述MVC,MVP的优缺点

编译脚本

  

popupwindow和alertDialog的区别:

alertdailog位置固定,alertdailog是非阻塞线程,弹出的时候,后台还可以做其他事情

 Parcelable的使用:

Parcelable使用的一个地方就是在进程间传递一个自定义的较为复杂的对象

具体解答:http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html

String StringBuffer StringBuilder:

String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。

在线程安全上,StringBuilder是线程不安全的【运行速度最快】,而StringBuffer是线程安全的

如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder。

ViewFlipper继承ViewAnimator,切换view的时候是有动画效果的,适合做ppt,多界面的程序欢迎引导界面,算是个轻量级的组件,适合展示静态数据,少量数据。

ViewPager继承ViewGroup。看官网描述,这货和Fragment是好搭档,Fragment有自己的生命周期。也就是说ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载。

由于Handler运行在主线程中(UI线程中),它与子线程可以通过Message对象来传递数据,这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象,(里面包含数据)  , 把这些消息放入主线程队列中,配合主线程进行更新UI。

那么 handler,thread,handlerThread的关系? 

https://www.jianshu.com/p/de2ff82b37b3

thread和service的区别

https://blog.csdn.net/cvsdn/article/details/50680151

冒泡排序:

for(int i=1;i<arr.length;i++){

    for(int j=1;j<arr.length-i;j++){

if(a[j-1]>[aj]) //交换位置 }

冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值【或较小值】。

用时间复杂度来说:

  1.如果我们的数据正序,只需要走一趟即可完成排序。所需的比较次数C和记录移动次数M均达到最小值,即:Cmin=n-1;Mmin=0;所以,冒泡排序最好的时间复杂度为O(n)。

  2.如果很不幸我们的数据是反序的,则需要进行n-1趟排序。每趟排序要进行n-i次比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:(n-1)*(n-i)

冒泡排序的最坏时间复杂度为:O(n2) 。

综上所述:冒泡排序总的平均时间复杂度为:O(n2) 。

选择排序:

for(int i=0;i<a.length-1;i++){
    for(int j=i+1;j<a.length;j++){
       if(a[j]<a[i]){
       //交换位置
}
}

https://blog.csdn.net/u012070360/article/details/81663650

OkHttp和Volley的有什么区别

http://blog.sina.com.cn/s/blog_1656f847b0102z2nf.html

RecyclerView和ListView的异同

前者缓存的是View+ViewHolder+flag,不用每次调用findViewById,后者则只是缓存View

刷新数据方面,前者提供了局部刷新,后者则全部刷新

https://github.com/francistao/LearningNotes/blob/master/Part1/Android/Recyclerview%E5%92%8CListview%E7%9A%84%E5%BC%82%E5%90%8C.md

 

SharedPreference支持多进程吗? 

支持:https://www.jianshu.com/p/875d13458538

ExpandableListView的使用

是一种用于滚动的展示的两级列表视图。也就是ListView的二级选择加强版这种。 

https://blog.csdn.net/sakurakider/article/details/80748428

如何使编译出来的apk内存小?

https://www.jianshu.com/p/5c9ae36d9f77      

2.https://blog.csdn.net/zhanggang740/article/details/50161717

原文地址:https://www.cnblogs.com/wangmengran/p/9183323.html