Android面试题总结
一、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,分析程序段的输出结果。()
1 2 3 4 5 6 |
class ClassDemo { public static int sum=1; public ClassDemo() { sum = sum + 5; } } |
1 2 3 4 5 6 7 |
public class ClassDemoTest{ public static void main(String args[]) { ClassDemo demo1=new ClassDemo(); ClassDemo demo2=new ClassDemo(); System.out.println(demo1.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