android网络编程面试题,Android面试题整理.docx
《android网络编程面试题,Android面试题整理.docx》由会员分享,可在线阅读,更多相关《android网络编程面试题,Android面试题整理.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、android网络编程面试题,Android面试题整理Android方面:3、内存优化(内存泄漏、内存溢出),如何查找内存泄漏,如何优化内存泄露:是指程序在申请内存后,无法释放本应该被回收的内存。内存泄露的堆积就会导致内存溢出。内存溢出:是指程序在申请内存时,没有足够的内存空间供其使用。查找内存泄露:1、使用AS自带的内存分析界面,可以查看内存使用情况(蓝色区域表示程序使用的内存,灰色区域表示空闲内存)内存泄露的原因以及解决方法:1、静态的上下文,比方static Context context,应该尽量防止静态上下文的使用;2、未取消注册或者监听,比方BrocastReceiver和Even
2、tBus需要在Activity的。nDestroy中取消注册;3、资源没有关闭或者释放,比方10、File流或者Cursor在操作完成后没有及时关闭;4、耗时任务或者属性动画没有取消,比方属性动画需要在Activity的onDestroy中取消;5、Web View造成内存泄露,Web View也需要在Activity的on Destroy中调用它的destroy。方法4、Activity启动模式及区别有以下四种启动模式:standard、 singleTopx singleTasks singlelnstanceo1、standard标准模式也是系统默认模式。在该模式下,每次启动一个Acti
3、vity都会创立一个新的实例,不管这个实例是否已经存在。并且谁启动了这个Activity,那么这个A ctivity就运行在启动它的那个Activity所在的栈中。比方One Activity启动了T wo Activity(Two A ctivity 是标准模式),贝 IjT wo A ctivity 就会进入至 ij Ona A ctivity 所在的栈中。2、singleTop栈顶模式具体分为以下两种情况:2.1、 如果被启动的Activity已经存在且位于栈顶,那么该Activity就不会重建,而是调用其onNewlntentO方法重用该实例。2.2、 如果被启动的Activity已经
4、存在但不是位于栈顶,那么就会重新创立该Activity的实例。3、singleTask栈内模式具体分为以下三种情况:3. k如果被启动的Activity所需的任务栈不存在,就会先创立该Activity所需的任务栈,然后再创立该A ctivity的实例并将它加入到任务栈中。3. 2、如果被启动的Activity所需的任务栈存在且该任务栈中不存在该Activity的实例,就会创立该Activity的实例并将它加入到任务栈中。3.3、 如果被启动的Activity所需的任务栈存在且该任务栈中存在该Activity的实例。那么有以下两种情况:3.4、 1、如果该Activity位于任务栈的栈顶,那么该
5、Activity不会重建,系统会调用其on Ne wlntentO方法重用该实例;2、 EventBus3、3、Retrofit4、Ok Http5、Glide2、Ok Http的原理3、Picasso缓存机制算法方面:算法方面:1、冒泡排序假设无序数组为6, 1, 2, 7, 9, 3, 4, 5, 10, 8当i = 0时,进行第一次内部比拟1、1、第一次循环后的结果是1,6,2,7,9,3,4,5,10,82、第二次循环后的结果是1,2,6,7,9,3,4,5,10,83、第三次循环后的结果是1,2,6,7,9,3,4,5,10,84、第四次循环后的结果是1,2,6,9,3,4,5,10
6、,85、第五次循环后的结果是1,2,6,9,4,5,10,86、第六次循环后的结果是,2,6,3,9,5,10,87、第七次循环后的结果是1,2,6,7,3,5,9,10,88、第八次循环后的结果是1,2,6,3,5,9,10,89、第九次循环后的结果是,2,6,3,4,5,9,8, 10=1时,进行第一次内部比拟=1时,进行第一次内部比拟intintnu m b er二 new intl 0 6,1, 2,7, 9,3,4,5, 10, 8;int te mp = 0;int te mp = 0;for (int i0; i num b er.length - 1; i+) for (int
7、 j = 0; j num b erj + 1) nu m b er j = numb erj + 1;nu m b erj + 1 - tern p;3、两个栈实现一个队列思路:因为队列是先进先出,而栈是先进后出Stack stack 1 = new StackO;Stack stack2 = new StackO;/入列public void push (int node) stack 1. push(node);:l/出列public int pop 0 if (stack2. sizeO 0) stack2. push(stackl. popO);)return stack2. pop
8、();)4、斐波那契数列斐波那契数列通项公式:f(l) = 1;f(2) = 1;f(n) = f(n - 1) + f(n - 2) ( n = 3) public int Fibonacci (int n) if (n = 0) return 0;:lif (n = 1 11 n = 2) return 1;/ f(n)int a = 0;/ f(n - 1)int b = 1;/ f(n- 2)int c = 1;for Gnt i = 3; i StringBuffer Stringo2、线程平安。StringBuilder是线程不平安的,而StringBuffer是线程平安的。因为S
9、tringBuffer中很多方法带有 synchronized关键字,可以保证是线程平安的。所以在多线程情况下建议使用StringBuffer,确保线程平安,但是在单线程的情况下,建议使用StringBuilder,因为执行速度更快。3、Hash Map x HaseSetx HashTablex ConcurrentIIashM a p x LinkHash Map的区另1、Hase Map储存是无序不重复的,允许key和value为null位口果key为null,那么会在代码里面将null保存为0),是线程不平安的。2、Hash Set内部其实是用的Hash M ap作为数据的保存,储存的
10、只是map的key,默认value为null厮以Hash Set也是无序不重复的,也允许key为null的,也是线程不平安的)3、HashTable储存无序不重复的,不允许key和value为null,通过synchronized关键字保证线程平安4、ConcurrentHash Map储存无序不重复的,不允许key和value为null,通过volatile关键字保证线程平安5、LinkHash Map继承至Hash Map,通过一个双向链表保存了元素的储存顺序(所以LinkHash Map也允许key为null的,也是线程不平安 的)。Kotlin方面:1、 const和val的区另ijc
11、onst只能修饰val,不能修饰var。const val的可见性是public final static,可以直接方法;val的可见性是private final static,并且val会生成get Nor m al Object。,通过方法调用。2、kotlin闭包3、run、apply、let、also、with的用法和区别Linux方面:K修改权限的命令ch m o d 7 7 7r表示read,读取权限,代表数字4w表示write,写入权限,代表数字2 x表示execute,执行权限,代表数字13. 3.2,如果该Activity不是位于任务栈的栈顶,那么该Activity不会重建
12、,系统会调用其on Ne wintent0方法重用该实例并且清除任务栈中该Activity之上所有的Activity实例。4、singlelnstance单例模式该模式具备singleTask所有特性。具体分为以下两种情况:3.1、 如果被启动的Activity不存在,系统先会创立一个全新的任务栈,然后再创立该Activity实例并将它加入 到新的任务栈栈顶。3.2、 如果被启动的Activity已经存在,那么无论它位于哪个应用程序,哪个任务栈,系统都会把该Activity 所在的任务栈切换前台,从而使该Activity显示出来。注意:采用singlelnstance加载模式的Activity
13、总是位于任务栈栈顶,并且该任务栈中只包含该Activity实例。1、提高进程的优先级2、利用广播拉活Activity6、Activity启动过程7、动画1、Android的动画可以分为三种:View动画、帧动画、属性动画。8、UI(同一张图片放在不同dpi中,加载内存的大小有何不同)9、Handler的原理,手写两个子线程Handler通信,loop wait时如何唤醒的Handler原理:Handler主要是由Loop er和Message Qu ene构建消息的处理。Loo per负责循环从Message Quene中读取消息, 如果有就交给Handler处理,如果没有就一直等待。Mess
14、age Quene负责消息的插入和读取,里面维护了一个 单向链表,根据消息的执行时间排列(即最先被执行的在链表前面)。两个子线程Handl er通信public Handler m 11 andler;new Thread (ne w unnableO ( 0 v erridepublic void run() Looper. prepareO;m H andler = new HandlerO Overridepublic void handleM e ssage( Message msg) super, handle Message (msg);Log. eCgybguohaoVmsg.
15、obj = + msg. obj);Looper.loopO;). start0;new Thread(new RunnableO 0 v erride public void run() M e ssage msg = mHandler, obtain Me ssageO;m s g. obj=这是从第二个子线程过来的消息;m H andler. send M e ssage(msg);). start0;1 0s Context类11、热更新12、WebView优化,及H5的js调用W e b View的优化:Is第一次翻开WebView时间过长,可以在合适的时候创立一个全局的Web Vi
16、ew供所有页面使用;2、设置Web View的文件缓存,加快加载速度。H5的js调用:1、首先设置允许与 JS 交互 web Settings, setjava Seri pt Enab led (true);2、添力口交互接口 m W e b View. addjavascriptlnterface(new JsCo m mu nicate 0, App);3、在JsCo m m u nicate类中通过注解J avascriptinterface定义具体的交互方法;4、js端通过window. App.方法名0调用对应的方法。13、性能优化1、应用启动速度优化,防止在自定义Applicat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 网络 编程 试题 整理
限制150内