《Android中高级面试题目整理.docx》由会员分享,可在线阅读,更多相关《Android中高级面试题目整理.docx(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、、Java部分1、java 中=和 equals 和 hashCode 的区别基本类型:=比较的是值,引用类型:=比较的是内存地址equals在没i被相説的情况下比较的都是地址hashCode比较的是集合,hashCode返回的是hash地址long各占多少字节数Byte:1个字节boolean:至少个字节,short:2个字节.char:2个字行,int:4个字节, f】oat:4个字节,long:8个字节,double:8个字节3、String、Strinuffer、StringBuiIder 区别string对象不可变,后两者是可变:string因为不可变所以线程安全,StringBuf
2、fer对 方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的,StringBuilder并没有 对方法进行加同步锁,所以是非线程安全的.如何程序不是多线程的,StringBuilder效 率高于 StringBuffer.4、什么是内部类?内部类的作用在java语言中,可以把个类定义到另外一个类的内部,在类里面的这个类就叫内部类, 外面的类就叫外部类.作用,1 .隠就你不想让别人知道的操作,也即封装性.2 .个内部类对象可以访问创建它的外部类对象的内容.甚至包括私有变量!内部类可以分为多种:主要以下4种:静态内部类.成员内部类.局部内部类.匿名内部类态内部类静态内部类是指被声明为sta
3、tic的内部类.他可以不依赖内部类而实例.而通常的内 部类需要实例化外部类.从血实例化.静态内部类不可以有与外部类有相同的类名.不能 访问外部类的普通成员变量.但是可以访问静态成员变量和静态方法(包括私有类型)成员内部类个静态内部类去掉static就是成员内部类,他可以f!由的引用外部类的属性和方 法.无论是静态还是非静态.但是不可以有静态属性和方法局部内部类定义在个代码块的内类,他的作用范围是所在代码块,是内部类中最少使用的类型. 局部内部类跟局部变量样,不能被public . protected, private以及static修饰.只 能访问方法中定义final类型的局部变量匿名内部类匿
4、名内部类是种没有类名的内部类,不使用class, extends, implements.没有构 造函数,他必须继承其他类或实现其他接口.匿名内部类的好处是使代码更加简洁,紧凑, 但是带来的问题是易读性降.5、抽发类和接口区别抽歡类:抽象方法必须用abstract关键字进行修饰.如果个类含有抽象方法.则称这个类为抽象 类.抽象类必须在类前用abstract关键字修饰.抽象类就是为了继承而存在的如果个类维承干个抽象类.则子类必须实现父类的抽象方法.如果子类没有实现父类 的抽象方法,则必须将子类也定义为为abstract类.接口i接口中的变殳会被院式地指定为public static fina!变
5、量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract 方法且只能是public abstract方法(用其他关键字.比如private, protected, static, fina!等修饰会报编译错误),并且接口中所有的方法不 能有具体的实现,也就是说,接口中的方法必须都是抽象方法.区别,抽象类可以提供成员方法的实现细賛,而接口中只能存在public abstract方法:抽象类中的成员变量可以是各种类型的.而接口中的成员变量只能是public staticfinal类型:接口中不能含有静态代码块
6、以及静态方法,血抽农类可以有静态代码块和静态方法:个类只能继承一个抽象类,而个类却可以实现多个接口.6、事些情况下的对歡会被垃圾回收机制处理掉?1 .没有引用指向2 .只有弱引用指向并且不回收弱引用对象的话存储区无空间3 .虚引用指向的对象满足以上任意条件则在gc时会回收7、讲一下常见编码方式?ASCII, ISO-8859-k GB2312. GBK. UTF-8、 UTF-16 等8、态代理和动态代理的区别,什么场景使用?A态代理:由程序员创建或由特定工具力动生成源代码,再对其编译在程序运行前,代 理类的.class文件就已经存在了.动态代理:在程序运行时,运用反射机制动态创建而成.10、
7、final, finally, finalize 的区别final:修饰类、成员变量和成员方法,类不可被承承,成员变量不可变,成员方法不可重 写finally:与try. catch.共同使用,确保无论是否出现异常都能被调用到finalize:类的方法,垃圾回收之前会调用此方法,子类可以重弓finalize。方法实现对资 源的回收11、Serializable 和 Parcelable 的区别Serializable: Java序列化接口在硬盘上读写读写过程中有大量临时变量的生成,内 部执行大盘的。操作,效率很低.Parcelable: Android序列化接L!效率高使用麻烦在内存中读写(A
8、S有相关插件 健生成所需方法),対象不能保存到磁盘中12、舞些情况下的对霰会被垃圾回收机制处理掉?1 .所有实例都没有活动线程访问.2 .没有被其他任何实例访问的循环引用实例.3 . Java中有不同的引用类型判断实例是否符合垃圾收集的条件都依赖F它的引用类型.要判断怎样的对象是没用的对象.这里有2种方法:1 .采用标记计数的方法:给内存中的对象给打上标记,対象被引用一次计数就加I,引用被拜放了,计数就减, 当这个计数为的时候,这个対象就可以被冋收了.当然,这也就引发了一个问题:循环 引用的対象是无法被识别出来并且被回收的.所以就有了第二种方法:2 .采用根搜索算法:从一个根出发.搜索所有的可
9、达対鈑.这样剰的那些対象就是需要被冋收的13、说说你对Java反射的理解JAVA反射机制是在运行状态中,対于任意个类,都能够知道这个类的所有属性和方法: 対任意个対象,都能够调用它的任意个方法和属性.从対象出发.通过反射(Class类)可以取得取得类的完整信息(类名Class类型.所在包、具有的所有方法 Method口类型、某个方法的完整信息(包括修饰符、返回值类型、异常、参数类型)、所 有属性Field口、某个属性的完整信息、构造器Constructors),调用类的属性或方法白 己的总结:在运行过程中获得类、対毂、方法的所有信息.14、String为什么要设计成不可变的?1、字符串池的需求
10、字符串池是方法区(Method Area)中的块特殊的存储区域.当一个字符串已经被创建并 且该字符串在池中,该字符串的引用会立即返回给变量,而不是重新创建一个字符串再将 引用返回给变量.如果字符串不是不可变的.那么改变个引用(如:string2)的字符串 将会导致另个引用(如:stringl)出现脏数据。2、允许字符串量存哈希码在java中常常会用到字符串的哈希码.例如:HashMap . String的不变性保证哈希码始 终.因此.他可以不用担心变化的出现.这种方法意味着不必毎次使用时都重新计算 次哈希码这样.效率会高很.3、安全String广泛的用于java类中的参数.如:网络连接(Net
11、work connetion)打开文件 (opening files )等等.如果String不是不可变的.网络连接、文件将会被改变这将会导致系列的安全威胁.操作的方法本以为连接上了一台机器,但实际上却不是由 于反射中的参数都是字符串,同样也会引起一系列的安全问题15、List, Set, Map 的区别Set是最简单的种集合.集合中的对象不按特定的方式排序.并且没有重复对蒙.Set 接口主要实现了两个实现类:HashSet: HashSet类按照哈希克法来存取集合中的对象. 存取速度比较快TreeSet t TreeSet类实现了 SortedSet接口,能够对集合中的对象进行排序.List
12、的特征是其元素以线性方式存储,集合中可以存放重豆对象.ArrayListO :代表长度可以改变得数组.可以对元素进行随机的访问.向ArrayListO 中插入与删除元素的速度慢.LinkedListO:在实现中釆用链表数据结构.插入和删)除速度快.访问速度慢.Map.是一种把键对象和值对象映射的集合.它的毎一个元素都包含对键対象和值对象.Map没有继承于Collection接口从Yap集合中检索元素时.只要给出键対象,就会返回 对应的值対象.HashMap: Map基做列表的实现.插入和査询“键值対”的开情是固定的.可以通过构造 器设置容量capacity和负我因子load factor,以调
13、整容器的性能.LinkedHashMap:类似于HashMap,但是迭代遍历它时,取得“键值対”的顺序是其插入次 序,或者是最近最少使用(LR的次序.只比HashMap慢一点.而在迭代访问时发而更快, 因为它使用腔表维护内部次序.TreeMap基于红黑树数据结构的实现.査看“键”或“键值対”时,它们会被排序(次序 由Comparabel或Comparator决定).TreeVap的特点在 于,你得到的结果是经过挿序的. TreeMap是唯一的带有subMapO方法的Map,它可以返回一个子树.VeakHashMao:弱键(*eak key)Map. Map中使用的対象也被允许糅放:这是为解决特
14、殊问 题设计的.如果没有map之外的引用指向某个“键”,则此“键”可以被垃圾收集器回收.16、ArrayList和LinkedLi8t的区别,以及应用场景ArrayList:是基广数组实现的,ArrayList线程不安全.LinkedListt是基双链表实现的:使用场景 ActivityB onCreate - ActivityB onStart - ActivityB onResume - ActivityA onStop3 .从B中返回A (按物理硬件返回笹)ActivityB onPause - ActivityA onRestart - ActivityA onStart - ActivityA onResume -)ActivityB onStop -ActivityB onDestroy 4,继续返回ActivityA onPause -