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)同步代碼塊

 

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