Android面试题及其答案

1.Java中基本数据类型及其封装类

八种基本数据类型分别是:int、short、float、double、long、
boolean、byte、char;它们的封装类分别是:Integer、Short、
Float、Double、Long、Boolean、Byte、Character。

2.Switch能否用string做参数

java 1.6(包括)以前,只是支持等价成int 基本类型的数据:byte ,short,char,int(其他的都不可以)。
1.7加入的新特性可以支持String类型的数据。

3.equals与==的区别

java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean   他们之间的比
较,应用双等号(==),比较的是他们的值。 2.复合数据类型(类)   当
他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是
同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object
中的基类中定义了一个equals的方法,这个方法的初始行为是比较对
象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,
Date在这些类当中equals有其自身的实现,而不再是比较类在堆内
存中的存放地址了。  对于复合数据类型之间进行equals比较,在没
有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中
的存放位置的地址值的,因为Object的equals方法也是用双等号
(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

4.Object有哪些公用方法?

public boolean equals
public int hashCode()
public String toString()

5.Java的四种引用,强弱软虚,用到的场景

1.强引用
强引用不会被GC回收,并且在java.lang.ref里也没有实际的对应类型,
平时工作接触的最多的就是强引用。  Object obj = new Object();这
里的obj引用便是一个强引用。如果一个对象具有强引用,那就类似于必
不可少的生活用品,**垃圾回收器绝不会回收它**。当内存空 间不足,
Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会
靠随意回收具有强引用的对象来解决内存不足问题。

2、软引用
如果一个对象只具有软引用,那就类似于可有可物的生活用品。如果**内
存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收
这些对象的内存**。只 要垃圾回收器没有回收它,该对象就可以被程序
使用。软引用可用来实现内存敏感的高速缓存。 软引用可以和一个引用队
列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回
收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。
3.弱引用
如果一个对象只具有弱引用,那就类似于可有可物的生活用品。弱引用与
软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾
回收器线程扫描它所管辖的内存区域的过程中,**一旦发现了只具有弱引
用的对象,不管当前内存空间足够与否,都会回收它的内存**。不过,由
于垃圾回收器是一个优先级很低的线程, 因此不一定会很快发现那些只具
有弱引用的对象。 弱引用可以和一个引用队列(ReferenceQueue)联合
使用,如果弱引用所引用的对象被垃圾回 收,Java虚拟机就会把这个弱引
用加入到与之关联的引用队列中。
/** * 弱引用: 当发生GC的时候,Weak引用对象总是会内回收回收。因
此Weak引用对象会更容易、更快被GC回收。 * Weak引用对象常常用
于Map数据结构中,引用占用内存空间较大的对象 * *

4.虚引用
虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱
引用的一个区别在于:虚引用必须和引用队列 (ReferenceQueue)联合
使用。当垃圾回收器准备回收一个对象时,如果**发现它还有虚引用,就
会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列**中。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对
象是否将要被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,
那么就可以在所引用的对象的内存被回收之前采取必要的行动。由于
Object.finalize()方法的不安全性、低效性,常常使用虚引用完成对象
回收前的资源释放工作

  1. Hashcode的作用
参见文章
http://www.cnblogs.com/dolphin0520/p/3681042.html

6.ArrayList、LinkedList、Vector的区别

一、同步性 ArrayList,LinkedList是不同步的,而Vestor是同步的。所以如
果不要求线程安全的话,可以使用ArrayList或LinkedList,可以节省为同步
而耗费的开销。但在多线程的情况下,有时候就不得不使用Vector了。当
然,也可以通过一些办法包装ArrayList,LinkedList,使他们也达到同步,但
效率可能会有所降低。 二、数据增长 从内部实现机制来讲ArrayList和
Vector都是使用Objec的数组形式来存储的。当你向这两种类型中增加元素
的时候,如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数
组的长度,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原
来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。
所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因为你
可以通过设置集合的初始化大小来避免不必要的资源开销。 

  1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数
据结构。      2.对于随机访问get和set,ArrayList觉得优于LinkedList,因
为LinkedList要移动指针。      3.对于新增和删除操作add和remove,
LinedList比较占优势,因为ArrayList要移动数据。 

7.String、StringBuffer与StringBuilder的区别。

String 类型和StringBuffer的主要性能区别:String是不可变的对象, 因此在
每次对String 类型进行改变的时候,都会生成一个新的 String 对象,然
后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 
String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用
对象多了以后, JVM 的 GC 就会开始工作,性能就会降低。
使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操
作,而**不是**生成新的对象并改变对象引用。所以多数情况下推荐使用 
StringBuffer ,特别是字符串对象经常改变的情况下。
StringBuilder是线程安全的,效率低,StringBuffer线程不安全,效率高

8.sychronized、lock、reentrantLock等

synchronized: 在资源竞争不是很激烈的情况下,偶尔会有同步的情形下,
synchronized是很合适的。原因在于,编译程序通常会尽可能的进行优化
synchronize,另外可读性非常好,不管用没用过5.0多线程包的程序员都能
理解。 ReentrantLock: ReentrantLock提供了多样化的同步,比如有时间
限制的同步,可以被Interrupt的同步(synchronized的同步是不能
Interrupt的)等。在资源竞争不激烈的情形下,性能稍微比synchronized差
点点。但是当同步非常激烈的时候,synchronized的性能一下子能下降好几
十倍。而ReentrantLock确还能维持常态。

9.锁的等级:方法锁、对象锁、类锁

同步代码块使用的锁是任意的对象 
同步方法使用的锁是this 
静态同步方法使用的锁是类名.class

10.线程池的优势

1.重用线程池中的线程,避免因为线程的创建和销毁带来的性能开销
2.能有效控制线程池的最大并发数,避免大量线程抢占资源导致的阻塞
3.能够对线程进行简单的管理,并提供定时执行以及指定间隔循环执行等功能。

11.C/S模式下使用socket通信,几个关键函数。


12.软引用和弱引用在Android中的引用

软引用可以用在防止OOM上,比如LruCache
弱引用用在防止内存泄漏上,比如Handler
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,631评论 18 399
  • Java SE 基础: 封装、继承、多态 封装: 概念:就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽...
    Jayden_Cao阅读 2,109评论 0 8
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,104评论 0 62
  • 这一次,想要以爱为开头。 此时此刻,我放起来很久没听的莫文蔚的《爱情》。 爱是折磨人的东西,却又舍不得这样放弃。 ...
    讲故事的兔子小姐阅读 269评论 1 0
  • 璀璨的星空,这么多星子。 没有一颗,是多余的。 就像生命中出现的每一个人。 她总是带着各种意义。 但是我就莫名的想...
    草夫阅读 145评论 0 0