面試題

2020-10-29 12:01:00

自我介紹

1、fragment生命週期

onAttach(); onCreate(); onCreateView(); onActivityCreated(); onStart(); onResume();onPause(); onStop(); onDestoryView(); onDestory(); onDetach();

2、activity的生命週期:

onCreated(),onStart(),onRestart(),onResume(),onPaused(),onStoped(),onDestroyed()

3、android中的儲存型別 :

sqlite、 sp、ContentProvider、檔案、網路
查詢12-18歲的人
select * from person where age between 12 and 18 and gender = male

4、startService和bindService :

執行startService時,Service會經歷onCreate->onStartCommand。當執行stopService時,直接呼叫onDestroy方法。呼叫者如果沒有stopService,Service會一直在後臺執行,下次呼叫者再起來仍然可以stopService。

執行bindService時,Service會經歷onCreate->onBind。這個時候呼叫者和Service繫結在一起。呼叫者呼叫unbindService方法或者呼叫者Context不存在了(如Activity被finish了),Service就會呼叫onUnbind->onDestroy。這裡所謂的繫結在一起就是說兩者共存亡了。

5、try catch finally ,如果 try裡面return了, finally 還會走嗎?

會, finally的一定會執行

6、Linux程序 和執行緒:

程序是程式執行時的一個範例,即它是程式已經執行到各種程度的資料結構的彙集。從核心的觀點看,程序的目的就是擔當分配系統資源(CPU時間、記憶體等)的基本單位。

執行緒是程序的一個執行流,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位。一個程序由幾個執行緒組成(擁有很多相對獨立的執行流的使用者程式共用應用程式的大部分資料結構),執行緒與同屬一個程序的其他的執行緒共用程序所擁有的全部資源。

7、raw和assert中的相同點和不同點:asset可讀寫嗎

相同點:

兩者目錄下的檔案在打包後會原封不動的儲存在apk包中。不會被編譯成二進位制。

不同點:

1,raw資料夾中的檔案會被對映到R.java檔案中。存取的時候直接使用資源id即R.id.fileName;assert不會被對映到R.java中。存取的時候需要AssertManager類。
2,raw不可以有目錄結構,而assert則可以有目錄結構,也就是assert下可以再建立資料夾。

8、GET、POST的區別

1、url可見性:

get,引數url可見;
post,url引數不可見

2、資料傳輸上:

get,通過拼接url進行傳遞引數;
post,通過body體傳輸引數

3、快取性:

get請求是可以快取的
post請求不可以快取

4、後退頁面的反應

get請求頁面後退時,不產生影響
post請求頁面後退時,會重新提交請求

5、傳輸資料的大小

get一般傳輸資料大小不超過2k-4k(根據瀏覽器不同,限制不一樣,但相差不大)
post請求傳輸資料的大小根據php.ini 組態檔設定,也可以無限大。

9、Arraylist 和 Linklist去別:

ArrayList是實現了基於動態陣列的資料結構如果不指定大小的時候 初始大小為10,每次擴容1.5倍。
LinkedList基於雙向連結串列的資料結構沒有初始化大小,也沒有擴容的機制。
對於隨機存取get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。
對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要行動資料。

10、ScrollView下巢狀一個RecycleView通常會出現什麼問題?

卡頓+內容顯示不全
解決:
1,利用RecyclerView內部方法,設定RecyclerView不處理捲動事件
2,重寫LayoutManager;
3,事件分發:基本會遵從 Activity => ViewGroup => View 的順序進行事件分發,然後通過呼叫 onTouchEvent() 方法進行事件的處理。我們在專案中一般會對 MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP,MotionEvent.ACTION_MOVE,MotionEvent.ACTION_CANCEL 分情況進行操作。

自己負責過哪些模組,跟同事相比自己的優勢是什麼?

遇到過什麼印象深刻的問題,怎麼解決的?

有什麼想問我的。