zoukankan      html  css  js  c++  java
  • android面试题

    一、选择题

    1.1 下面代码不抛出异常时输出 :frist ,final

    public static void main(String[] args) {
    		try {
    			System.out.println("frist");
    			return ;
    		} catch (Exception e) {
    
    		} finally {
    			System.out.println("finally");
    		}
    	}


    二、问答题


    2.1、android几种定时器的机制及差别。

    答:在android中,经经常使用到的定时器主要有下面几种实现:

    1、採用handler与线程的sleep(long)方法

    开启一个线程。,每隔1s向Handler发送消息

    public class MainActivity extends Activity {
    
    	private Handler myhandler;
    	private static int timemessage=0x01;
    	private int timer=0;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		myhandler = new Handler() {
    			@Override
    			public void handleMessage(Message msg) {
    				// TODO Auto-generated method stub
    				if(msg.what==timemessage){
    					System.out.println("timer="+(++timer));
    				}
    			}
    
    		};
    		
    		new Thread(new Runnable() {
    			@Override
    			public void run() {
    				// TODO Auto-generated method stub
    				while(true){
    					try {
    						System.out.println("运行了");
    						Thread.sleep(2000);
    						myhandler.sendEmptyMessage(timemessage);
    					} catch (InterruptedException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    					
    				}
    			}
    		}).start();
    	}
    }
    2、 採用Handler自带的postDelayed(Runnable,long)方法

    利用延迟几秒发送Message。嵌套postDelayed()实现定时器。

    public class MainActivity extends Activity {
    
    	private Handler myhandler;
    	private static int timemessage = 0x01;
    	private int timer = 0;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		myhandler = new Handler() {
    			@Override
    			public void handleMessage(Message msg) {
    				// TODO Auto-generated method stub
    				if (msg.what == timemessage) {
    					System.out.println("timer=" + (++timer));
    				}
    
    			}
    
    		};
    		myhandler.postDelayed(new Runnable() {
    			@Override
    			public void run() {
    				// TODO Auto-generated method stub
    				myhandler.sendEmptyMessage(timemessage);
    				myhandler.postDelayed(this, 1000);
    				if (timer == 10) {
    					myhandler.removeMessages(timemessage);
    				}
    			}
    		}, 1000);
    	}
    }
    3、 採用Handler与Timer、TimerTask结合的方法
    

    利用Timer类的schedule()方法。每隔一段时间做什么事情实现定时器。

    public class MainActivity extends Activity {
    
    	private Handler myhandler;
    	private static int timemessage = 0x01;
    	private int timer = 0;
    	private Timer timerobject;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		myhandler = new Handler() {
    			@Override
    			public void handleMessage(Message msg) {
    				// TODO Auto-generated method stub
    				if (msg.what == timemessage) {
    					System.out.println("timer=" + (++timer));
    				}
    
    			}
    		};
    		timerobject=new Timer();
    		timerobject.schedule(new TimerTask() {
    //1s后,在每隔1s做什么事情
    			@Override
    			public void run() {
    				// TODO Auto-generated method stub
    				myhandler.sendEmptyMessage(timemessage);
    			}
    		}, 1000,1000);
    	}
    }

    2.2 利用Listview显示姓名和年龄,採用SimpleAdapter实现。

    public class MainActivity extends Activity {
    	private ListView mylistview;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		mylistview = (ListView) findViewById(R.id.listviewid);
    		List<Map<String, Object>> listdata = new ArrayList<Map<String, Object>>();
    		//每行显示是一个Map对象
    		for (int i = 0; i < 10; i++) {
    			Map mapdata = new HashMap<String, Object>();
    			mapdata.put("name", "limi");
    			mapdata.put("age", "30");
    			listdata.add(mapdata);
    		}
    		//第二个參数是ListView行布局
    		//第三个參数为存放Map元素的key值
    		//第四个參数将key值相应的元素在布局哪里显示
    		SimpleAdapter myadpter = new SimpleAdapter(getApplicationContext(),
    				listdata, R.layout.listviewdatalayout, new String[] { "name",
    						"age" }, new int[] { R.id.name, R.id.age });
    		mylistview.setAdapter(myadpter);
    	}
    }


    2.3、Android单例模式应用及长处

    单例模式确保某一个类仅仅有一个实例。通过使用private的构造函数确保在应用中仅仅产生一个实例。

    因为单例模式在内存中仅仅有一个实例,降低了内存开销。

    单例模式能够避免对资源的多重占用,比如一个写文件时,因为仅仅有一个实例存在内存中。避免了对同一个资源的同一时候写操作。

    使用单例模式,解决的就是多线程的同一时候创建的问题。

     public class Person{
    	private Person(){};
    	private static Person zongtong;
    	public static Person getPersonStance(){
    		if(zongtong==null){
    			synchronized(Person.class){
    				if(zongtong==null){
    					zongtong=new Person();
    				}
    			}
    		}
    		return zongtong;
    	}	
    }


    2.4、二分查找算法

    	public static int twoDivideSearch(int[] arr, int findValue) {
    		int startIndex = 0;
    		int endIndex = arr.length - 1;
    
    		while (startIndex <= endIndex) {
    			int middleIndex = ((endIndex - startIndex+1) / 2)-1;
    			int middleValue = arr[middleIndex];
    			if (findValue == middleValue)
    				return middleIndex;
    			else if (findValue < middleValue) {
    				endIndex = middleValue - 1;
    
    			} else {
    				startIndex = middleValue + 1;
    			}
    
    		}
    
    		return -1;
    
    	}

    2.5 请画出你主导的最有成就感一款app的模块架构图,并指出模块依赖关系。

    2.6 使用Android数据库创建一个通信表(属性:姓名、号码、性别)。并提供查询,加入的contentprovider。

    2.7 实现一个5秒的启动页面,然后跳转到MainActivity,须要考虑到当启动页面被提前关闭时计数器取消的情况。

    2.8 在Activity实现动态创建广播和注销广播。

    2.9 实现一个移位动画。要求有回弹动作。xml或代码实现均可。(提示能够使用BounceInterpolator)

    2.10 请实现一个二分查找

    2.11 已知整型数组age【N】中存放了一个组织全部成员的年龄。请实现一个线性的排序算法。将数组中的值从大到小的顺序输出。

    2.12 给出一个函数输出一个字符串的全部排列



    
  • 相关阅读:
    [hihocoder1509][异或排序]
    [hdu6148][Valley Numer]
    [hdu2089][不要62]
    [luoguU42591][小T的绝对值]
    [luogu2073][送花]
    [bzoj4709][柠檬]
    [luogu2114][起床困难综合症]
    [codevs3342][绿色通道]
    [luoguU42591][小T的面试题]
    [noip][2014]
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7156724.html
Copyright © 2011-2022 走看看