Android面试
dreamsyoung
这个作者很懒,什么都没留下…
展开
-
Object有哪些基本的方法
1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。2.getClass方法final方法,获得运行时类型。3.toString方法该方法用得比较多,一般子类都有覆盖。4.finalize方法该方法用于释放资源。因为无法确定该方法什么原创 2015-07-08 09:27:52 · 6071 阅读 · 0 评论 -
SurfaceView和View区别总结
一、View简介View一般在onDraw方法里面绘图,onDraw在UI主线程执行。onDraw默认只在View初始化的时候调用一遍,所以View不会自动刷新画面,一般要调用invalidate或者postInvalidate来重新执行onDraw里面的代码进行刷新画面。UI主线程一般用来渲染组件、处理组件与用户之间的交互事件,比如说按钮的点击事件、文本框的输入事件。如果你的画图任务相当繁重原创 2015-08-18 15:23:34 · 1070 阅读 · 0 评论 -
OSI七层模型作用
看图详解:-----------各层作用---------------------------------------------------------------------------------------------------------------------------------第一层: 物理层 ---------以二进制数据形式在物理媒体上传输数据 ISO21原创 2015-08-05 10:21:36 · 583 阅读 · 0 评论 -
Android多线程中UI线程和其他线程进行交互的几种方法小结
阿里二面的时候被问到这个问题,自己答的不全,所以总结下,问题是Android多线程中UI线程怎么和其他线程进行交互?5个方法:1、handler2、Activity.runOnUIThread(Runnable)3、View.Post(Runnable)4、View.PostDelayed(Runnabe,long)5、AsyncTask方法原创 2015-08-02 21:56:01 · 1318 阅读 · 0 评论 -
Message、Handler、MessageQueue、Looper之间关系图文总结
看图Looper是一个消息分发器,在主线程创建的时候就会创建一个Looper对象messageQueue :消息队列,是由message组成的一个 队列handler:从messageQueue中获取到message,然后执行动作,可以再主线程和子线程中互相传递数据看了源码之后大概的说一下他们的关系: 在主线程创建之后会创建一个Loop原创 2015-07-20 16:38:02 · 912 阅读 · 0 评论 -
Java多线程面试常见核心问题总结
1. 有T1、T2、T3三个线程,如何怎样保证T2在T1执行完后执行,T3在T2执行完后执行?使用join方法。join方法的功能是使异步执行的线程变成同步执行。即调用线程实例的start方法后,该方法会立即返回,如果调用start方法后,需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一原创 2015-07-20 16:07:05 · 1070 阅读 · 0 评论 -
Android启动模式图文详解
一、启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置; 启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;讲解启动模式之前,有必要先讲解一下“任务栈”的概念; 任务栈 每个应用都有原创 2015-07-20 11:08:36 · 456 阅读 · 0 评论 -
Java线程中sleep(),wait(),notifyAll()的区别
不同点: 1.Thread类的方法:sleep(),yield()等 Object的方法:wait()和notify()等 2.每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。 sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 3.wait,notify和notifyAll只能在同步原创 2015-07-17 17:21:44 · 597 阅读 · 0 评论 -
一些大公司面试题整理
腾讯面试题1.int a = 1;int result = a+++32.int a = 2;int result = (a++ > 2)?(++a):(a+=3);3.int a = 1234567;int b = 0x06;int result = a&b;4.Integer a = 34556;Integer b = 34556;boo原创 2015-07-16 11:44:50 · 2431 阅读 · 0 评论 -
ListView性能优化问题总结
我们经常会遇到 ListView滑动的时候出现卡顿现象,这样我们该如何解决呢?我们可以从以下几个方面进行优化:1.重用convertView,每次滑动list,view回收,当需要显示新的item时候,可以重用回收器的view。2.避免在getView中重复调用findViewById,使用静态ViewHolder,然后保存在View的 tag中。3.利用好View Type,原创 2015-08-08 17:27:58 · 709 阅读 · 0 评论 -
TCP/IP三次握手、四次挥手总结
(一)TCP/IP三次握手原理: 建立连接协议(三次握手)(1)客户端向服务器端发送连接请求包SYN(syn=j),等待服务器回应;(2)服务器端收到客户端连接请求包SYN(syn=j)后,将客户端的请求包SYN(syn=j)放入到自己的未连接队列,此时服务器需要发送两个包给客户端; 1.向客户端发送确认自己收到其连接请求的确认包ACK(ack=j+1)原创 2015-06-28 11:34:31 · 2066 阅读 · 0 评论 -
操作系统常见面试的一些基础知识整理
1.并行:多个任务在同一时间内同时执行 并发:不是在同一个时间段,分成若干段,使多个进程快速交替进行。2.进程:系统分配资源和调度的一个独立单位,是程序的动态执行。 线程:是进程的一个实体,是CPU调度和分派的基本单位。 进程是处于动态条件下由操作系统维护的系统资源管理实体 应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间。3.进程调原创 2015-07-05 10:56:03 · 546 阅读 · 0 评论 -
JAVA IO分析大汇总
Java中的流,可以从不同的角度进行分类。按照数据流的方向不同可以分为:输入流和输出流。按照处理数据单位不同可以分为:字节流和字符流。按照实现功能不同可以分为:节点流和处理流。 输出流: 输入流:因此输入和输出都是从程序的角度来说的。字节流:一次读入或读出是8位二进制。字符流:一次读入或读出是1转载 2015-07-06 10:07:22 · 398 阅读 · 0 评论 -
完全二叉树与满二叉树的区别(有图)
先看图:完全二叉树:设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边满二叉树:深度为k且有2^k-1个结点的二叉树称为满二叉树原创 2015-07-08 08:45:32 · 71639 阅读 · 22 评论 -
Android系统中GC什么情况下会出现内存泄露?
1.数据库的cursor没有关闭2.构造adapter时,没有使用缓存contentview 衍生listview 的优化问题-----减少创建view的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程。3.Bitmap对象不使用时采用recycle()释放内存4.activity中的对象的生命周期大于activi原创 2015-07-08 16:33:31 · 2005 阅读 · 0 评论 -
Android如何处理OOM
避免OOM几个方案:(1)适当调整图像大小 。因为手机屏幕尺寸有限,分配给图像的显示区域有限,尤其对于超大图片,加载自网络或者sd卡,图片文件提及达到几M或者十几个M的:加载到内存前,先算出该bitmap的大小,然后通过适当调节采样率使得加载的图片刚好,或稍大捷克在手机屏幕上显示就满意了:BimtapFactory.Option opts = new Bitamp原创 2015-07-01 14:37:30 · 746 阅读 · 0 评论 -
android启动一个应用程序大概流程
启动一个应用无非都是通过这个startActivity()函数来完成,通常我们启动一个app都是在桌面点击Launcher图标,大概流程主要是以下几个步骤:1.Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity。2.ActivityManagerService通过Binder进程间通信机制通知Launcher进入原创 2015-10-05 16:39:48 · 647 阅读 · 0 评论