Android面试题二

1.  JAVA的接口和抽象类的区别

 

接口 –implements 单继承

抽象类—extend   多继承

接口中的方法的权限是固定的- 必须是publicstatic

抽象类中可以有正常的方法,权限可以随意

接口读取速度比抽象类慢

接口不可以有构造器 ,抽象类是有的

 

2.  Java的三大特性

继承  封装 多态

 

3.  Activity的生命周期,说下按home键后再次按返回键回到主界面,activity的生命周期的流程。

Oncreate   onstart  onresume  onPause  onrestart   onstop  ondetory

首先是onpause–onstop--onrestart –onresume

 

4. Activity中如何动态的添加Fragment,说说fragment的生命周期


1.获取到FragmentManager,在Activity中可以直接通过getFragmentManager得到。

2.开启一个事务,通过调用beginTransaction方法开启。

3.向容器内加入Fragment,一般使用replace方法实现,需要传入容器的id和Fragment的实例。

4.提交事务,调用commit方法提交。

 

5.如何动态生成一个布局

LinearLayout layout = new LinearLayout(this)           

TextView text = new TextView(this);

text.setText("Hello World");

text.setLayoutParams(new    ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));                

layout.addView(text);                

setContentView(layout);

 

6.  说说listview的优化


尽量让 ItemView 的 Layout 层次结构简单,这是所有 Layout 都必须遵循的;

采用viewHolder  来复用

每个 Item 不能太高,特别是不要超过屏幕的高度,

为了保证 ListView 滑动的流畅性,getView() 中要做尽量少的事情,不要有耗时的操作

 

7.说说常见的设计模式(3种以上)

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

 

 

8 .service的两种使用方式


采用start的方式开启服务

使用这种start方式启动的Service的生命周期如下:

onCreate()--->onStartCommand()onStart()方法已过时) ---> onDestory()

说明:如果服务已经开启,不会重复的执行onCreate(),而是会调用onStart()onStartCommand()
服务停止的时候调用 onDestory()。服务只会被停止一次。


采用bind的方式开启服务

使用这种start方式启动的Service的生命周期如下:
onCreate() --->onBind()--->onunbind()--->onDestory()

注意:绑定服务不会调用onstart()或者onstartcommand()方法

  

9.activity的启动模式

standard,singleTop,singleTask,singleInstance

 

10.有两个线程A 和B ,A 访问foo方法,B访问buu方法会不会阻塞?

           Publicvoid synchronied foo(){}

           Publicvoid synchronied buu(){}

           不会堵塞

当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章