android面试题

来源:互联网 发布:程序员和产品经理 编辑:程序博客网 时间:2024/05/18 01:19

一、    基础题:

  1. 1.  请写出输出结果

public class Test1 {

public static void changeStr(String str){

str=”welcome”;

}

public static void main(String[] args) {

String str=”1234″;

changeStr(str);

System.out.println(str);

}

}

___”1234″____________________________________________________

  1. 2.  请写出输出结果

public class Test2 {

static boolean foo(char c) {

System.out.print(c);

return true;

}

public static void main(String[] argv) {

int i = 0;

for (foo(‘A’); foo(‘B’) && (i < 2); foo(‘C’)) {

i++;

foo(‘D’);

}

}

}

_____ABDCBDCB___________________________________________________

  1. class A {

protected int method1(int a, int b) { return 0; }

}

以下A扩展类中的方法哪两个是正确的:(选择两个)

A.public int method1(int a, int b) { return 0;}

B.private int method1(int a, int b) { return 0;}

C.private int method1(int a, long b) { return 0;}

D.public short method1(int a, int b) { return 0;}

E.static protected int method1(int a, int b) { return 0;}

____AD___________________________________________________

  1. public class Outer{

public void someOuterMethod() {

// Line 3

}

public class Inner{}

public static void main(String[] args) {

Outer o = new Outer();

// Line 8

}

}

下列哪一个对Inner类实例化的描述是正确的?D

A.new Inner(); // At line 3

B.new Inner(); // At line 8

C.new o.Inner(); // At line 8

D.new Outer.Inner(); // At line 8//new Outer().new Inner()

 

  1. 5.  下面这个程序正确吗? 如果不正确请说出哪里错误

public class Something {

public static void main(String[] args) {

Other o = new Other();

new Something().addOne(o);

}

public void addOne(final Other o) {

o.i++;

}

}

class Other {

public int i;

}

 

  1. 下面这个程序正确吗?如果不正确请说出哪里错误

interface Playable {
void play();
}
interface Bounceable {
void play();
}
interface Rollable extends Playable, Bounceable {
Ball ball = new Ball(“PingPang”);
}
class Ball implements Rollable {
private String name;
public String getName() {
return name;
}
public Ball(String name) {
this.name = name;
}
public void play() {
ball = new Ball(“Football”);
System.out.println(ball.getName());
}
}

接口里是常量是 final的 不能改变

二、    名词解释&判断题

  1. GC是什么? 为什么要有GC?

Gc是垃圾收集 gabage collection的意思 内存处理是编程人员最容易出现问题的地方,gc可以达到自动处理内存 回收垃圾的作用 使java程序员不用担心内存管理问题  system.gc

  1. XML包括哪些解释技术,区别是什么?

Sax dom

  1. sleep()和wait()有什么区别?

Sleep() 是线程类的方法  wait()是object类的方法

Sleep() 不会释放对象锁 到时自动恢复 wait()会释放对象锁 进入等待此对象的等待锁定池  发出notify()方法后 才进入等待锁定池准备对象锁的获取进入运行状态

  1. error和exception有什么区别?

error表示恢复不是不可能但是及其困难的一种严重问题 不可能指望程序处理这样的问题

Exception是一种设计或实现的问题 表示只要程序运行正常就不会出现的问题

  1. 谈谈final,finally,finalize的区别?

Final是修饰符 表示类不能被继承 方法不能被重载,重写 变量不能被修改等

Finally是异常处理时的一个无论如何都会被执行的程序块

Finaliz方法是垃圾收集器删除对象之前对这个对象调用的进行清理工作的方法

  1. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

可以

  1. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

值传递

  1. 作用域public,private,protected,以及不写时的区别
  2. 用最有效率的方法算出2乘以8等於几   2《3
  3. 运行时异常与一般异常有何异

编译器要求声明并抛出一般异常 但不必声明抛出运行时异常 由系统处理

  1. 垃圾回收的优点和原理。并考虑2种回收机制

回收机制有分代复制垃圾回收 标记垃圾回收 和增量垃圾回收

  1. 描述一下JVM加载class文件的原理机制?

是由classloader和他的子类来实现的  他在运行时查找和装入类文件的类

  1. 是否可以从一个static方法内部发出对非static方法的调用?

不能

  1. 什么是java序列化,如何实现java序列化?

序列化是一种处理对象流的机制 是为了解决在对对象流进行读写操作时所引发的问题

使用serializeae关键字  使用一个输出流构造一个对象流流对象  然后使用对象流对象的writeObject()就可以将参数为obj的对象写出

  1. Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

可以

  1. ArrayList和Vector的区别,HashMap和Hashtable的区别?

Vector线程安全 增长时涨一倍  arraylist涨一半

Hashtable线程安全  hashmap可以用空值作为键值

 

  1. 请写一段程序实现冒泡排序法。

Public static maopao(int[] data){

Int temp;

For(int i=0;i<data.length-1;i++){

For(int j=i+1;j<data.length;j++){

If(data[i]<data[j])

  Temp = data[i];

Data[i] = data[j];

Data[j] = temp;

}

}

Return data;

}

三、    问答题与编程技巧

  1. activity、Service、BroadcastReceiver的作用(android)

Activity是安卓程序与用户交互的窗口 是android构造块中最基本的一种他需要为保持各界面的状态做很多持久化的事情,妥善管理声明周期以及一些跳转逻辑

Service 后台服务于activity 封装有一个完整的功能逻辑实现 接受上层指令 完成相关事务 定义好需要接受的intent 提供同步和异步的接口

BroadcastReceiver 接受一种或多中intent做触发事件 接受相关消息 做一些简单处理 转换成一条notification 统一了android事件广播模型

  1. 描述一个完整的Android activity lifecycle

onCreate() onStart() onRemuse() onPause() onStop() onDestory()

  1. 显式intent和隐式intent的区别是什么(android)

显式明确指出了需要激活的组件  隐式没有 需要系统从intentfilter里挑选合适的组件

  1. 满二叉树和完全二叉树的区别?
  2. Android中线程同步的方法

Synchronized关键字与wait() notify()或者 join() interrupt()

  1. 怎么将一个Activity封装成对话框的样子? 怎样将Activity封装成长按Menu菜单的样子?
  2. 请编程实现一个工厂模式

public class Factory{

public static Sample creator(int which){

if (which==1)

return new SampleA();

else if (which==2)

return new SampleB();

}

}

  1. 自己写一个方法,重新加载Actiity时调用自定义的方法,可以对指定控件更新数据。
  2. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
  3. 现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为xxx
原创粉丝点击