Android面试题总结

 分类:Android, Java 阅读 (1,927)  No Responses »
2月 242016
 

一、Java部分

1.关于被私有访问控制符private修饰的成员变量,以下说法正确的是?

A) 可被三种类引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B) 可以被两种类访问和引用:该类本身、该类的所有子类
C) 只能被该类自身所访问和修改    D) 只能被同一个包中的类访问

答案:C。

private定义的属性只能在类本身中使用,任何地方的子类都是不能访问的。

2. 以下声明合法的是

A) default String s;    B) public final static native int w();    C) abstract double d;
D) abstract final double hyperbolicCosine();

答案: B

default是Java8引入的用于在接口中实现默认方法的,不能修饰变量;abstract同样不能修饰变量;abstract修饰说明方法必需要去实现,而final只能定义实现方法不能被修改,也就是必须在定义的时候已经实现,所以两者不能同时出现。

另外抽象方法必须定义在抽象类中,不能定义在普通类中。

3. 在调用方法时,若要使方法改变实参的值,可以()
A) 用基本数据类型作为参数   B) 用对象作为参数   C) A和B都对   D) A和B都不对

答案:B。

对于基本类型,参数传递的时候会将值复制,方法内的形参和实参只是值相同,但是两者没有关系;对于对象类型,传递的是对象的引用,修改形参将会导致实参被修改;有一个例外,String虽然是引用类型,但是在修改的时候会复制一个String对象,所以在方法内对String的修改不会影响方法外的实参。

4. Character流与Byte流的区别是

A) 每次读入的字节数不同 B) 前者带有缓冲,后者没有
C) 前者是字符读写,后者是字节读写 D) 二者没有区别,可以互换使用

答案:C。

Character是字符,而Byte是字节,所以选C

5. 线性表若采用链表存储结构,要求内存中可用存储单元地址?

A、必须连续 B、部分地址必须连续 C、一定不连续 D、连续不连续均可

答案:D

链式存储结构灵活性更高,不需要将对象存储在连续的空间内

6. 声明成员变量时,如果不使用任何访问控制符(public, protected, private),则 以下哪种类型的类不能对该成员进行直接访问

A)同一类 B)同一包中的子类 C)同一包中的非子类 D)不同包中的子类

答案:D。

访问级别

访问控制修饰符

同类

同包不同类(不含子类)

同包子类

不同包不同类

(不含子类)

不同包子类

公开

public

受保护

protected

√(注意)

默认

没有访问控制修饰符

私有

private

参考:http://www.cnblogs.com/tjudzj/p/4443066.html

7. 一个线程在任何时刻都处于某种线程状态(thread state),例如运行状态、阻塞状态、就
绪状态等。一个线程可以由选项中的哪种线程状态直接到达运行状态?() 

A.死亡状态 B.阻塞状态(对象lock池内) C.阻塞状态(对象wait池内) D.就绪状态

答案:D。

8. 在使用interface声明一个接口时,只可以使用( )修饰符修饰该接口?
A、private B、protected C、private protected D、public

答案:D。

接口本来就是要定义给对象用于交互的,当然必须是public的了。

9.下面程序中类ClassDemo中定义了一个静态变量sum,分析程序段的输出结果。()

A. 0 B. 6 C. 11 D. 2

答案:C。

static变量只初始化一次,是在链接阶段初始化的。创建两个ClassDemo实例后,执行两次+5,所以最后结果为11

10.下列哪些语句关于内存回收的说明是正确的?
A 程序员必须创建一个线程来释放内存;   B 内存回收程序负责释放无用内存
C 内存回收程序允许程序员直接释放内存    D 内存回收程序可以在指定的时间释放内存对象

答案:B

内存回收机制不允许程序员手动释放内存,内存回收程序不定时的运行

二、Android部分

1.Intent传递数据时,下列的数据类型哪些可以被传递()(多选)

A、Serializable   B、charsequence    C、Parcelable   D、Bundle

答案:ABCD